Cross-Chain Value Transfer
This section will explain how to enable ERC-20 value transfer between Baobab network and your service chain with the provided test code. You will add KLAY to the operator account and deploy bridge and ERC-20 contracts. Then you will register the contract address on SCN. And you will test an ERC-20 value transferring.
Prerequisites
We assume that you installed the service chain, and connected the service chain to the Baobab EN (link).
Download the code for contract deployment and transfer. (download)
Install
Node.js
(v10.60.0) andnpm
(How to install)
ERC-20 Token Transfer
Step 1: Add KLAY to the operator accounts.
Connect to the SCN and check the account addresses by executing subbridge.parentOperator
and subbridge.childOperator
.
$ kscn attach --datadir ~/data
> subbridge.childOperator
"0x10221f7f9355017cd0c11444e7eecb99621bacce"
> subbridge.parentOperator
"0x3ce216beeafc62d20547376396e89528e1d778ca"
Create a test account on a Baobab Wallet and get test KLAY from the faucet. Then send 1 KLAY to the parentOperator
. childOperator
has to get KLAY from the test account generated by homi
(Refer to EN Setup and SCN Connection Guide).
$ 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
> klay.sendTransaction({from:"80119c31cdae67c42c8296929bb4f89b2a52cec4", to:subbridge.childOperator, value: web3.toPeb(1000, "KLAY")})
"0x84caab84ebf0c4bb4ecf0a7849f1de3e479f1863a95f70c51047a7ca7bc64b33"
Check if the operator accounts have enough balance.
> klay.getBalance(subbridge.childOperator)
1e+21
> klay.getBalance(subbridge.parentOperator)
1e+18
Step 2: Deploy Contracts
Connect to the SCN and prepare the node environment for contract deployment. Download deploy_and_test.tar.gz
and extract it to node_project directory.
$ mkdir node_project
$ cd node_project
$ npm init
$ npm install caver-js
$ tar xvfz /path/to/deploy_and_transfer.tar.gz -C .
On a text editor, edit the deploy_conf.json
as below.
Replace
ip
andport
in thescn
section with the actual values of your SCN. The port is RPC_PORT in kscnd.conf. The default configuration is using port 7551.Replace
key
withtestkey1
that was generated byhomi
.Set
operator
to thesubbridge.childOperator
address that we examined in the previous step.Replace
ip
andport
in theen
section with the actual values of your EN. The port is RPC_PORT in kend.conf. The default configuration is using port 8551.Replace
key
with the private key of the test account created from Baobab Wallet in the previous stepSet
operator
as thesubbridge.parentOperator
of the previous step.
{
"scn" : {
"ip": "192.168.0.1",
"port": "7551",
"key": "0x66cb283353589a10866b58d388e9d956e5a9c873a8c78fa4411d460c19c494ea",
"operator": "0x10221f7f9355017cd0c11444e7eecb99621bacce"
},
"en" : {
"ip": "192.168.0.5",
"port": "8551",
"key": "0x26f4b5ac42ceabcfd3b23a991fdbfc792d10ce700a99582fdf9185a8f163b790",
"operator": "0x3ce216beeafc62d20547376396e89528e1d778ca"
}
}
Perform token deployment with node deploy.js
command. It will show an API list to perform at the next step.
$ node deploy.js
subbridge.registerBridge("0x5f093de8a1b1d32Fc4cF6F40357DCcD24453BAb3", "0xD1C4808960Fb4581b9A5B3B217b9a67057D84c19")
subbridge.subscribeBridge("0x5f093de8a1b1d32Fc4cF6F40357DCcD24453BAb3", "0xD1C4808960Fb4581b9A5B3B217b9a67057D84c19")
subbridge.registerToken("0x5f093de8a1b1d32Fc4cF6F40357DCcD24453BAb3", "0xD1C4808960Fb4581b9A5B3B217b9a67057D84c19", "0x96272131600EC7c64c45CE139C32F4919fBFaDC8", "0xc7858a153376764208e8F6B6B55B4a0792B67c3E")
Step 3: Register Bridge, Subscribe Bridge and Register Token
On the console, execute the APIs shown above one by one.
$ kscn attach --datadir ~/data
> subbridge.registerBridge("0x5f093de8a1b1d32Fc4cF6F40357DCcD24453BAb3", "0xD1C4808960Fb4581b9A5B3B217b9a67057D84c19")
null
> subbridge.subscribeBridge("0x5f093de8a1b1d32Fc4cF6F40357DCcD24453BAb3", "0xD1C4808960Fb4581b9A5B3B217b9a67057D84c19")
null
> subbridge.registerToken("0x5f093de8a1b1d32Fc4cF6F40357DCcD24453BAb3", "0xD1C4808960Fb4581b9A5B3B217b9a67057D84c19", "0x96272131600EC7c64c45CE139C32F4919fBFaDC8", "0xc7858a153376764208e8F6B6B55B4a0792B67c3E")
null
Step 4: Token transfer
Perform token transfer with node transfer.js
command.
$ node transfer.js
requestValueTransfer..
alice balance: 100
Check if the result is alice balance: 100
.
Last updated
Was this helpful?