cd6cb852ad
* remove duplicate genesis * add testnet-5k genesis copy * update for v0.38 * update formatting |
||
---|---|---|
.. | ||
genesis_examples | ||
rest_examples | ||
README.md |
Testnet-5000
Testnet-5000 introduces transfers between Kava and Bnbchain via BEP3.
This guide will walk you through interacting with the blockchains and transferring coins via the rest server. To send transactions, we'll create an unsigned request, sign it, and broadcast it to the Kava blockchain.
Rest server requests
Setup
We'll be using Kava's CLI to build, sign, and broadcast the transactions:
# Download kvcli
make install
Before making a request, query account information for the signing account. Note the 'accountnumber' and 'sequence' fields, we'll need them later in order to send our request:
kvcli q auth account $(kvcli keys show testuser -a)
Create swap
Use the example file in rest_examples/create-swap.json
to format the request. First, update the header parameters 'from', 'chain-id', 'account_number', 'sequence'.
Next, we'll update the swap's creation parameters. For that, we need a unique random number that will be used to claim the funds.
WARNING: Don't use calc-rnh
for the generation of secrets in production. These values should be generated client-side for the safety of user funds.
# Generate a sample random number, timestamp, and random number hash
kvcli q bep3 calc-rnh now
# Expected output:
# Random number: 110802331073994018312675691928205725441742309715720953510374321628333109608728
# Timestamp: 1585203985
# Random number hash: 4644fc2d9a2389c60e621785b873ae187e320eaded1687edaa120961428eba9e
In the same json file, populate each of the following parameters
- from
- to
- recipient_other_chain
- sender_other_chain
- random_number_hash
- timestamp
- amount
- expected_income
- height_span
- cross_chain
Once each parameter is populated, it's time to create our swap:
# Create an unsigned request
curl -H "Content-Type: application/json" -X POST -d @./contrib/testnet-5000/rest_examples/create-swap.json http://127.0.0.1:1317/bep3/swap/create | jq > ./contrib/testnet-5000/rest_examples/create-swap-unsigned.json
# Sign the request
kvcli tx sign ./contrib/testnet-5000/rest_examples/create-swap-unsigned.json --from testnetdeputy --offline --chain-id testing --sequence 0 --account-number 5 | jq > ./contrib/testnet-5000/rest_examples/broadcast-create-swap.json
# Broadcast the request
kvcli tx broadcast ./contrib/testnet-5000/rest_examples/broadcast-create-swap.json
The tx broadcast will log information in the terminal, including the txhash. This tx hash can be used to get information about the transaction, including the swap creation event that includes the swap's ID:
# Get information about the transaction
curl -H "Content-Type: application/json" -X GET http://localhost:1317/txs/81A1955216F6D985ECB4770E29B9BCED8F73A42D0C0FD566372CF673CCB81587
Congratulations, you've just created a swap on Kava! The swap will be automatically relayed over to Bnbchain where it it can be claimed using the secret random number from above.
Claim swap
Only unexpired swaps can be claimed. To claim a swap, we'll use the secret random number that matches this swap's timestamp and random number hash.
Generally, claimable swaps must be created on Bnbchain. // TODO: add link to Bnbchain document with interaction steps
Use the example file in rest_examples/claim-swap.json
to format the request. Again, update the header parameters 'from', 'account_number', 'sequence'. Check your account using the command from above to ensure that the parameters match the blockchain's state.
In the same json file, populate each listed parameter:
- swap_id
- random_number
Once the swap_id
parameter is populated, it's time to claim our swap:
# Create an unsigned request
curl -H "Content-Type: application/json" -X POST -d @./contrib/testnet-5000/rest_examples/claim-swap.json http://127.0.0.1:1317/bep3/swap/claim | jq > ./contrib/testnet-5000/rest_examples/claim-swap-unsigned.json
# Sign the request
kvcli tx sign ./contrib/testnet-5000/rest_examples/claim-swap-unsigned.json --from user --offline --chain-id testing --sequence 0 --account-number 1 | jq > ./contrib/testnet-5000/rest_examples/broadcast-claim-swap.json
# Broadcast the request
kvcli tx broadcast ./contrib/testnet-5000/rest_examples/broadcast-claim-swap.json
Refund swap
Only expired swaps may be refunded.
Use the example file in rest_examples/refund-swap.json
to format the request. Again, update the header parameters 'from', 'account_number', 'sequence'. Check your account using the command from above to ensure that the parameters match the blockchain's state.
In the same json file, populate each parameter:
- swap_id
Once the swap_id
parameter is populated, it's time to refund our swap:
# Create an unsigned request
curl -H "Content-Type: application/json" -X POST -d @./contrib/testnet-5000/rest_examples/refund-swap.json http://127.0.0.1:1317/bep3/swap/refund | jq > ./contrib/testnet-5000/rest_examples/refund-swap-unsigned.json
# Sign the request
kvcli tx sign ./contrib/testnet-5000/rest_examples/refund-swap-unsigned.json --from user --offline --chain-id testing --sequence 0 --account-number 1 | jq > ./contrib/testnet-5000/rest_examples/broadcast-refund-swap.json
# Broadcast the request
kvcli tx broadcast ./contrib/testnet-5000/rest_examples/broadcast-refund-swap.json