トランスファーヴァリュー
カイアのデザイン・セクションで説明したように、サービス・チェーンは、親チェーンと子チェーン間の価値(KAIA、ERC-20、ERC-721)の移転をサポートします。 このページでは、SCNでバリュー・トランスファー機能を有効にする方法を説明します。
EN と SCN を設定した後、チェーン間のバリュー・トランスファーを有効にするには、以下の手順が必要です。
- Check the addresses of the bridge operator accounts and add KLAY to the bridge operator accounts.
- ブリッジコントラクトを親子チェーンに展開する。
- トークン(ERC-20または721)コントラクトを親子チェーンにデプロイする。 (If you just need KLAY-transfer, you can skip step 3 & 4.)
- トークンコントラクトを親子チェーン上のブリッジコントラクトに登録する。
- 親/子チェーンのブリッジ契約をサブスクライブする。
手順を追う前に、メカニズムの背後を理解するために、ハイレベルのシステム・アーキテクチャを見てみよう。
システム・アーキテクチャ
図1は、ブリッジ/トークンコントラクトとブリッジノードを備えたサービスチェーンのシステムアーキテクチャを示している。
以下のコントラクトは、メイン/サブブリッジを介して相互に通信し、ユーザーの価値移転要求を処理する。
- ブリッジコントラクト
- ERC-20コントラクト(必要な場合)
- ERC-721コントラクト(必要な場合)
図1. Service chain architecture](/img/nodes/sc_arch.png)
ブリッジ・オペレーター・アカウント
ServiceChainには、親チェーンブリッジのオペレータアカウントとサービスチェーンブリッジのオペレータアカウントの2つのオペレータアカウントがあります。 各オペレーター・アカウントは、取引の署名に使用される。 トランザクションがバリューを親チェーンに移動させる場合、親チェーンのブリッジオペレー ターアカウントがトランザクションに署名する。 子チェーンには、子チェーン・ブリッジのオペレーター・アカウントが使われる。 利用者が「リクエストヴァリュートランスファー」トランザクションを提出した場合、サブブリッジはブリッジ運営者アカウントによって署名された「価値移転ハンドル」トランザクションを作成する。 Therefore, the parent chain bridge operator needs enough KLAY in their balance to pay the transaction fee to the parent chain. If the service chain's gas price is set to non-zero, the service chain bridge operator should have KLAY in their balance as well.
キーストアとパスワードファイル
SCN が起動されると、親/子オペレータの鍵が存在しない場合、その鍵ストアファイルとパスワードファイルが自動的に生成されます。 特定のアカウントをオペレーターとして使いたい場合は、そのキーを指定することができる。 SCN を起動する前に、以下のファイルを指定のパスに置きます。 パスワード・ファイルは、キーストア・ファイルのパスワード文字列を持つべきである。 パスワード・ファイル名は、対応するキーストア・ファイルのアカウント・アドレスでなければならない。
ファイル
- keystore file :
UTC--2019-10-21T04-05-41.493850000Z--2ed72a9d7fe5da7672fd21567e07302431649b0b
- password file :
0x2eD72a9D7fe5da7672fD21567e07302431649B0B
ファイルパス
- 親チェーン・ブリッジ・オペレーター : $datadir/parent_bridge_account
- 子チェーン・ブリッジ・オペレーター : $datadir/child_bridge_account
> pwd/$dataDIR/child_bridge_account> ls0x2eD72a9D7fe5da7672fD21567e07302431649B0BUTC--2019-10-21T04-05-41.493850000Z--2ed72a9d7fe5da7672fd21567e07302431649b0b> cat 0x2eD72a9D7fe5da7672fD21567e07302431649B0B%S~f5qqM38cB47jL%> cat UTC--2019-10-21T04-05-41.493850000Z--2ed72a9d7fe5da7672fd21567e07302431649b0b{"address":"2ed72a9d7fe5da7672fd21567e07302431649b0b","crypto":{"cipher":"aes-128-ctr","ciphertext":"6486509e8158bf4984608cbc5562cf2c9a27cd988a98e543731b39251144e633","cipherparams":{"iv":"96d7e5b6a936278c0797faae6cb3d903"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"8928ba41b8228af19390ec881c51452fa3ea973ad2c253ca0f5bc9197a8b24c4"},"mac":"9c8ec63694c20a473e0ea33840e7d16e9f1a20afc52b3244b703a3ac0a66cfa3"},"id":"9ae10527-7fd3-4aae-a4eb-316af211494e","version":3}
ブリッジ・オペレーター・アドレスの確認
SCN が正常に実行されれば、RPC API を使用して以下のように親子チェインブリッジのオペレータアドレスを確認することができます。
$ kscn attach --datadir ~/kscnd_homeKaia JavaScript コンソールへようこそ!インスタンス:Kaia/vvX.X.X/XXXX-XXXX/goX.X.X datadir: ~/kscnd_home modules: admin:1.0 subbridge:1.0 debug:1.0 governance:1.0 istanbul:1.0 klay:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 servicechain:1.0 txpool:1.0> subbridge.parentOperator"0xA057995175B93Ee0D1bdfA54f078Ad0F0116130b"> subbridge.childOperator"0x5C1C757a6Cb6c6FcEFE398674D8209FDA2A74Df4"
詳細については、サブブリッジAPI(#1、#2)を参照してください。
Send KLAY to Bridge Operators
Like anchoring, the parent chain bridge operator needs KLAY to make a value-transfer transaction. If the service chain's gas price is set to non-zero, the service chain bridge operator should have KLAY in their balance as well.
オペレーターの口座に入金した後、以下のように残高を確認することができる。
親チェーンブリッジ・オペレーター
$ kscn attach --datadir ~/kscnd_homeKaia JavaScript コンソールへようこそ! インスタンス:Kaia/vvX.X.X/XXXX-XXXX/goX.X.X datadir: ~/kscnd_home modules: admin:1.0 subbridge:1.0 debug:1.0 klay:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0> subbridge.parentOperatorBalance1e+50
子供のチェーンブリッジ・オペレーター
$ kscn attach --datadir ~/kscnd_homeKaia JavaScript コンソールへようこそ! インスタンス:Kaia/vvX.X.X/XXXX-XXXX/goX.X.X datadir: ~/kscnd_home modules: admin:1.0 subbridge:1.0 debug:1.0 klay:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0> subbridge.childOperatorBalance1e+50