跳至主要內容
本頁面使用機器翻譯自英語,可能包含錯誤或不清楚的語言。如需最準確的信息,請參閱英文原文。由於更新頻繁,部分內容可能與英文原文有出入。請加入我們在 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 網絡上的賬戶。 使用 Kaia Toolkit 建立測試帳號,並從 the faucet 取得測試 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 改為上一步中使用 Kaia Toolkit 建立的測試帳號的私密金鑰。
  • 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目錄包含相應的示例源代碼。

讓這個頁面變得更好