跳至主要內容
本頁面使用機器翻譯自英語,可能包含錯誤或不清楚的語言。如需最準確的信息,請參閱英文原文。由於更新頻繁,部分內容可能與英文原文有出入。請加入我們在 Crowdin 上的努力,幫助我們改進本頁面的翻譯。 (Crowdin translation page, Contributing guide)

跨鏈價值轉移

本節將介紹如何使用提供的測試代碼在 Kairos 網絡和您的 ServiceChain 之間啟用 ERC-20 值傳輸。 您將把 KAIA 添加到運營商賬戶,並部署橋接和 ERC-20 合約。 然後在 SCN 上註冊合同地址。 您將測試 ERC-20 值的轉移。

先決條件

ERC-20 代幣轉讓(一步式)

步驟 1:將 KAIA 添加到操作員賬戶。

連接 SCN 並通過執行 subbridge.parentOperatorsubbridge.childOperator 檢查賬戶地址。


$ kscn attach --datadir ~/data
> subbridge.childOperator
"0x10221f7f9355017cd0c11444e7eecb99621bacce"
> subbridge.parentOperator
"0x3ce216beeafc62d20547376396e89528e1d778ca"

subbridge.parentOperatorsubbridge.childOperator 必須有足夠的 KAIA 來發送事務。 請注意,"subbridge.parentOperator "是 Kairos 網絡上的賬戶,而 "subbridge.childOperator "是 ServiceChain 網絡上的賬戶。 在 https://toolkit.kaia.io/account/accountKeyLegacy 上創建測試賬戶,並從 水龍頭 獲取測試 KAIA。 然後向parentOperator發送一些 KAIA。 childOperator "必須從 "homi "生成的測試賬戶獲取 KAIA(請參閱《EN 設置和 SCN 連接指南》)。


$ kscn account import ~/homi-output/keys_test/testkey1
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase:
Repeat passphrase:
Address: {80119c31cdae67c42c8296929bb4f89b2a52cec4}


$ kscn attach --datadir ~/data
> personal.unlockAccount("80119c31cdae67c42c8296929bb4f89b2a52cec4")
Unlock account 80119c31cdae67c42c8296929bb4f89b2a52cec4
Passphrase:
True
> kaia.sendTransaction({from:"80119c31cdae67c42c8296929bb4f89b2a52cec4", to:subbridge.childOperator, value: web3.toPeb(1000, "KAIA")})
"0x84caab84ebf0c4bb4ecf0a7849f1de3e479f1863a95f70c51047a7ca7bc64b33"

檢查操作員賬戶是否有足夠的餘額。 您可以從安裝子橋的 SCN 節點控制檯進行如下查詢:


> kaia.getBalance(subbridge.childOperator)
1e+21
> subbridge.childOperatorBalance
1e+21
> subbridge.parentOperatorBalance
1e+18

步驟 2:部署合同

在這一步中,我們將在父鏈和子鏈中部署橋接合約和令牌合約。 代幣合約用於鑄幣/轉移測試,橋接合約用於監聽/處理價值轉移請求。


$ git clone https://github.com/klaytn/servicechain-value-transfer-examples
$ cd servicechain-value-transfer-examples
$ npm install
$ cd erc20

用文本編輯器編輯 bridge_info.json 如下。

  • child 部分(ServiceChain 網絡上的 SCN 節點)中的 url 替換為 SCN 節點 IP 和 kscnd.confRPC_PORT 的正確端口號。
  • homi生成的testkey1替換child.key
  • child.operator 設置為我們在上一步中查看的 subbridge.childOperator 地址。
  • 將 "父節點 "部分(Kairos 網絡上的 EN 節點)中的 "url "替換為 EN 節點 IP 和 "kend.conf "中 "RPC_PORT "的正確端口號。
  • parent.key 替換為上一步中從 https://toolkit.kaia.io/account/accountKeyLegacy創建的測試賬戶的私人密鑰。
  • parent.operator 設置為上一步的 `subbridge.parentOperator'。

{
"child" : {
"url": "http://192.168.0.1:7551",
"key": "0x66cb283353589a10866b58d388e9d956e5a9c873a8c78fa4411d460c19c494ea",
"operator": "0x10221f7f9355017cd0c11444e7eecb99621bacce"
},
"parent" : {
"url": "http://192.168.0.5:8551",
"key": "0x26f4b5ac42ceabcfd3b23a991fdbfc792d10ce700a99582fdf9185a8f163b790",
"operator": "0x3ce216beeafc62d20547376396e89528e1d778ca"
}
}

運行命令 node erc20-deploy.js,執行令牌部署。 該腳本同時部署橋接合約和令牌合約,並輸出 API 使用情況以初始化橋接對。


$ node erc20-deploy.js
------------------------- erc20-deploy START -------------------------
> info.bridge: 0xEa024d8101E112330f2d7B1a7e7932034E206721
> info.token: 0xbE641028610F628835C36F12bE62d54d74308D70
> info.bridge: 0xA5af6Ffe13b367626B5AdF827DdE7438E3Db4463
> info.token: 0x52F8Fa79Fa6D37b18b7AC8f9Ca835373f3C9270f
> subbridge.registerBridge("0xEa024d8101E112330f2d7B1a7e7932034E206721", "0xA5af6Ffe13b367626B5AdF827DdE7438E3Db4463")
> subbridge.subscribeBridge("0xEa024d8101E112330f2d7B1a7e7932034E206721", "0xA5af6Ffe13b367626B5AdF827DdE7438E3Db4463")
> subbridge.registerToken("0xEa024d8101E112330f2d7B1a7e7932034E206721", "0xA5af6Ffe13b367626B5AdF827DdE7438E3Db4463", "0xbE641028610F628835C36F12bE62d54d74308D70", "0x52F8Fa79Fa6D37b18b7AC8f9Ca835373f3C9270f")
------------------------- erc20-deploy END -------------------------

步驟 3:令牌轉移

使用 node erc20-transfer-1step.js 命令執行令牌轉移。 這種一步式令牌傳輸需要修改 ERC-20 令牌的實現。 如果您不想修改代幣合約,或者您已經部署了代幣合約,請參考 [ERC-20 代幣轉移(兩步法)](#erc-20-token-transfer-twost step)。


$ node erc20-transfer-1step.js
------------------------- erc20-transfer-1step START -------------------------
alice balance: 0
requestValueTransfer..
alice balance: 100
------------------------- erc20-transfer-1step END -------------------------

如果結果是 alice balance: 100,則表示已成功執行。

ERC-20 令牌傳輸(兩步法)

運行 erc20-transfer-2step.js,查看兩步轉移示例。 通過這個兩步代幣轉移示例,可以使用未經修改的 ERC-20 代幣合約。 兩步轉移包括兩次函數調用:(1) 先批准橋接合同,然後 (2) 調用合同函數 "requestERC20Transfer()"。 由於我們已經部署了橋接合約和令牌合約,因此本節不再部署合約。 如果沒有部署,則必須先部署。 您可以使用 node erc20-deploy.js 部署合同。


$ node erc20-transfer-2step.js
> ------------------------- erc20-transfer-2step START -------------------------
> alice balance: 100
> requestValueTransfer..
> alice balance: 200
------------------------- erc20-transfer-2step END -------------------------

通過 ERC-20 接口進行 KIP-7 令牌傳輸(兩步法)

KIP-7是與 ERC-20 兼容的令牌標準。 我們可以向 KIP-7 令牌合約調用 "requestERC20Transfer() "函數,在父鏈和子鏈之間轉移 KIP-7 令牌。 在通過 ERC-20 接口發送 KIP-7 令牌的情況下,我們會調用 "approve() "函數,允許網橋代表交易發送方發送令牌。 然後調用requestERC20Transfer()函數。 下面的命令將部署橋接合同和 KIP-7 合同。


$ node kip7-deploy.js
> ------------------------- kip7-deploy START -------------------------
> info.bridge: 0x04e929Cd2A08acd28a210369407D8Ca237Edd8FE
> info.token: 0xE0E2fC6C7d1eB069153E0c12a4C87B01586b39e7
> info.bridge: 0xEb502159A4B4E876B1cb423f250DCC0d276e01b6
> info.token: 0xd4f02Ca1d49674056A9ec78fbBDc9e1e97726A4F
> subbridge.registerBridge("0x04e929Cd2A08acd28a210369407D8Ca237Edd8FE", "0xEb502159A4B4E876B1cb423f250DCC0d276e01b6")
> subbridge.subscribeBridge("0x04e929Cd2A08acd28a210369407D8Ca237Edd8FE", "0xEb502159A4B4E876B1cb423f250DCC0d276e01b6")
> subbridge.registerToken("0x04e929Cd2A08acd28a210369407D8Ca237Edd8FE", "0xEb502159A4B4E876B1cb423f250DCC0d276e01b6", "0xE0E2fC6C7d1eB069153E0c12a4C87B01586b39e7", "0xd4f02Ca1d49674056A9ec78fbBDc9e1e97726A4F")
------------------------- kip7-deploy END -------------------------

下面的命令是使用 "requestERC20Transfer() "使用 ERC-20 接口發送 KIP-7 令牌的示例。


$ node kip7-transfer-2step-erc20-interface.js
> ------------------------- kip7-transfer-2step-erc20-interface START -------------------------
> alice balance: 0
> requestValueTransfer..
> alice balance: 100
> ------------------------- kip7-transfer-2step-erc20-interface END -------------------------

其他情況請參閱 service-chain-value-transfer-example

對 KIP-7 和 KIP-17 的本地支持(待實施)

目前,Kaia 團隊提供的橋接合約僅支持 "requestERC20Transfer() "和 "requestERC721Transfer() "令牌傳輸。 KIP-7 和 KIP-17 的相應請求功能將很快得到支持。 在實施之前,如上圖所示,您可以使用 ERC-20 接口傳輸 KIP-7 令牌。

ERC-721、KIP-17 和 KAIA 的價值轉移

ERC-721、KIP-17 和 KAIA 的工作流程與上述相同。 erc721kip17kaia目錄包含相應的示例源代碼。

讓這個頁面變得更好