客户端输入
由于 js 不支持 async 构造器,我们必须初始化客户端对象 const client = new DeBridgeSolanaClient() 然后等待它初始化await client.init()) - 装入程序状态等...
初始化后,我们可以从块链中请求数据并构建交易
如何包装 Sol- > WSol( SPL- Sol)
我们不能寄出原生的 SOL 标志,我们需要先将其包装为 SPL-token 形式(SystemProgram.createAccount + 键 SystemProgram.transfer 本地 sol 创建账户 + TokenProgram.InitializeAccount 将系统账户转换为符号账户(SPL-wallet)。 如果我们不想创造新的钱包 我们可以打电话 SystemProgram.transfer 接下来 TokenProgram.SyncNative 转换为 SPL- Sol
如何从索拉纳送信给其他区块链?
- 检查用户关联的钱包是否存在, 且用户有困难的令牌 。 我们可以把所有用户的钱包都拿来
getAllWalletsWithBalances - 检查是否支持链条 - 我们不能从索拉纳发送到不支持的链条, 因此
chainSupportInfo必须存在和在Supported状态,参见getChainSupportInfoSafe详情 - 检查桥是否存在( SPL- tokens通过 发送 桥,去Asset通过 薄荷 100%存在的桥梁)和 工作 状态 - 如果桥不存在, 我们就不能发送符号, 我们需要先进入桥( 见桥初始化 - > send) 。 我们可以检查是否有桥 与得到BridgeBy DeBridgeId
- [可选 如果我们想用我们送来的资产支付费用 我们需要设定
useAssetFee标记为真并检查是否 桥接信息 使用isBridgeFeeInfoInitialized如果 桥接信息-==YTET -伊甸园字幕组=- 翻译: 桥接信息。 。 。 . - [可选 如果我们想要通过一些额外的数据(外部调用数据),我们有两个选项 - 设置 SEND HASHED 旗和在链外通过外部调用数据(保存气体但自动执行不可用) 或将外部调用数据保存到与发送交易相关的特别索拉纳账户(外部CallStorage)
- 调用快捷流 - 我们需要通过外部呼叫快捷键(
keccak256(ext call data))和用第4位(8)设置的旗帜来发送 - > resultParams - 调用流量 - 看见没 外部调用准备部分
- 调用快捷流 - 我们需要通过外部呼叫快捷键(
- 发送! 如果我们有折扣,我们想通过它
send{\fn华文楷体\fs20\bord1\shad1\1che0e0e0\2ch000000}要不然就需要去取相機去取相機了 无贴现 账户(但)buildSendInstruction计算引擎盖下的所有账户。 我们还需要指定我们想要使用的钱包(用户可能拥有多个钱包,与同一枚硬币相关),执行费是对目标链中自动索赔的奖励
如何从其他区块链向索拉纳索要代币
- 检查链条是否被支持 - 我们不能从无支持的链条中声称,因此
chainSupportInfo必须存在和在Supported状态,参见getChainSupportInfoSafe详情 - 检查桥是否存在 -
getBridgeByDeBridgeId(资产索赔通过 发送 桥梁,资产通过 薄荷和在 工作 状态 - 如果桥不存在, 我们就不能发送符号, 我们需要先输入桥( 见桥初始化- > mint) . - 请检查access-date=中的日期值 (帮助)
isSubmissionUsed - 从验证器存储确认
storeConfirmations指令(一项交易最多可存储6个签名),可使用buildStoreSignaturesTransaction,这些交易可以批发方式签名和发送. - [可选 如果我们有外部呼叫数据,我们需要检查SEND HASHED FLAG是否设定了. 如果国旗没有设定, 我们需要填充外部呼叫集
- 调用流量 - 看见没 外部调用准备部分
- 第1、第2和第3步的所有检查都可以自动进行,并具有功能
checkClaimParams- 检查是否尚未要求提交,检查桥梁平衡、检查链式支持Info和Bridge. - 请求! 打电话
claim以buildClaimTransaction保存所有签名后 - 此选项可以检查isTransactionConfirmed或者说getConfirmationsCount - [备选]如果存在外部呼叫,我们需要执行它, 我们可以通过呼叫执行它们
buildOptimalExecuteExternalCallTransaction。此函数试图通过尽可能多地执行外部指令来构建 tx 。 在外部调用执行之前需要调用 .
外部调用数据准备
由于Solana的交易大小限制为1232字节,我们不能将所有外部呼叫数据存储在单笔交易中,因此我们需要将数据分成块并在不同的交易中发送一堆块.
我们要打电话 initExternalCallStorage 指令( storageKey = 外部调用快捷键 - 索赔/ extCallShortcut - - - - - - — — — — — — — — — — — — — 发送,外部调用长度=外部调用数据长度,源链 id=源链 - 索赔索拉纳 id - 发送) 分配内存并填充第一个块。 如果外部调用数据大于~800字节,我们需要初始化外部调用存储并用调用的数据填充 extendExternalCallStorage 指令 buildExtendExternalCallStorageInstruction。 。 。 .
函数 prepareExtCallTransactions 将数据分割成最大大小的块并返回要执行的交易数组。 第一个tx是 initExternalCallStorage,休息(可选)为 extendExternalCallStorage。 。 。 . initExternalCallStorage 分配块链中所需的内存空间,并填入初始数据块。 由于我们无法将数据写入未分配的内存中,我们必须等到第一次交易敲定并分配出excallStorage。 之后,我们可以以批量方式发送休息交易,并等待索拉纳处理. 我们可以检查存储是否正确使用 isExtCallStorageCorrect
桥梁初始化
- 发送桥 - 到它发送桥 我们需要呼叫
initializeSendBridge我们想要加入的 SPL-token 薄荷糖的指令 -buildInitializeSendBridgeTransaction。 。 。 . - 薄荷桥 - 到薄荷桥 我们需要
storeConfirmations用于部署信息, 等待确认保存, 然后呼叫initializeMintBridge指令 -buildInitializeMintBridgeTransaction
实体
- 状态 - 独有,包含甲骨文,需要甲骨文,分确认,如果协议是活性的和其他系统信息.
- 桥梁(一般信息) - 包含桥梁状态(工作/停用),收取的费用和其他系统信息.
- 发送桥 - 随附符件, 包含大量锁定的符件, 本地 SPL- token 地址和一般桥信息
- Mint Bridge - 与出道链和外道链ID中的符号相接,包含多位被铸造的符号,出道链ID,出道符地址和通通桥信息
- 链式支持Info - 与链式连接, 包含 状态 (支持/不支持)目标链和固定Fee/转让Fee值(如果值为零)
- BridgeFeeInfo - 与桥连接,包含资产ChainFee选项(无或值,如果无资产链费没有支持)
涉及受影响账户的索赔流量(分机调用)(假设未提出索赔,即存在桥梁/状态/链式支助Info)
| 行动 | 初始账户 | 更新账户 | 已关闭账户 | 评论 |
|---|---|---|---|---|
storeConfirmations | [确认] | 实数 | 存储签名为确认 | |
initExternalCallStorage | 外部 呼叫Storage, 外部呼叫Meta | 分配外部调用存储, 设置外部CallMeta = accumulation | ||
updateExternalCallStorage | 外部 呼叫Storage, 外部呼叫Meta | 用数据填充外部呼叫存储, 设置外部CallMeta = accumulation | ||
claim | 提交、[拿起Wallet]、[拿起Wallet]、[拿起Wallet]、[说起Wallet] | 桥接 接通 接通 接通 接通 | 实数 | 创建提交账户, 关闭确认存储, 设置外部CallMeta state = execution,更新桥接已锁定/已忽略的金额,将资金移入/移出钱包 |
executeExternalCall | 外部呼叫网络 | 外部 调用 | 设置外部CallMeta = executed,关闭外部呼叫存储 |
与受影响账户的索赔流量(没有分机调用)(假设未提出索赔,即存在桥梁/状态/链式支助Info)
| 行动 | 初始账户 | 更新账户 | 已关闭账户 | 评论 |
|---|---|---|---|---|
storeConfirmations | [确认] | 实数 | 存储签名为确认 | |
claim | 提交、[拿起Wallet]、[拿起Wallet]、[拿起Wallet]、[说起Wallet] | 桥接 接通 接通 接通 接通 | 实数 | 创建提交账户、 关闭确认存储、 更新锁定/ 忽略的桥值、 移动资金到/ 从钱包中 |
实例
索赔流量

发送流量
