Smart Contract Steps
Smart contract commands
Unbox LiquidX box
We will unbox the liquidx
box to give us all of the logic, contracts, and unit tests
mkir liquidx; cd liquidx
zeus unbox liquidx
Create Contract
Create smart contract, or if you're using thise guide as a part of another guide, you can skip this and go to the compiling section
export MY_CONTRACT_NAME=
zeus create contract $MY_CONTRACT_NAME
cd zeus_boxes/contracts/eos
# edit MY_CONTRACT_NAME.cpp
cd ../../../
Smart Contract Steps
#define LIQUIDX
#define LIQUIDX
At the smart contract level, the liquidx
box must be unboxed and #define LIQUIDX
must be added at the top of the smart contract which uses the DAPP Network services.
Adding files to Zeus
2 files must be added and 2 files deleted as to not conflict
liquidx-mappings/sidechain_name.dappservices.json
liquidx-mappings/sidechain_name.dappservices.json
update sidechain_name
to chain_account
/zeus_boxes/liquidx/models/liquidx-mappings/sidechain_name.dappservices.json
- this maps the dappservices account on the mainnet to the dappservicex account name on the new chain
sidechain_name
- EOS mainnet account that has registered the chainmainnet_account
- dappservices account on EOS mainnetchain_account
- dappservicex account on new chain - enter the sidechain_name as the scope for thechainentry
table, thedappservices_contract
key will list the account name needed
{
"sidechain_name":"liquidjungl3",
"mainnet_account":"dappservices",
"chain_account":"testdappxxxx"
}
eosio-chains/${CHAIN_ACCOUNT}.json
eosio-chains/${CHAIN_ACCOUNT}.json
/zeus_boxes/liquidx/models/eosio-chains/${CHAIN_ACCOUNT}.json
- this maps the chain’s configuration details
dsp_port
- port DSP gateway runs onwebhook_dapp_port
- webhook portnodeos_host
- nodeos host addressnodeos_port
- nodeos portsecured
- bool true/false for http/https for the nodeos addressnodeos_state_history_port
- port for nodeos state history websocketnodeos_p2p_port
- nodeos peer 2 peer portnodeos_endpoint
- full nodeos endpointdemux_port
- demux portname
- name of the chain accountlocal
- bool whether chain is local or not
{
"dsp_port":13016,
"webhook_dapp_port": 8813,
"nodeos_host":"localhost",
"nodeos_port":2424,
"secured":false,
"nodeos_state_history_port":12341,
"nodeos_p2p_port":12451,
"nodeos_endpoint":"http://localhost:2424",
"demux_port":1232,
"name":"CHAIN_ACCOUNT_HERE",
"local":true
}
Remove files:
Removing the following if they exist:
rm ./zeus_boxes/liquidx/models/liquidx-mappings/test1.dappservices.json
rm ./zeus_boxes/liquidx/models/liquidx-mappings/test1.provider1.json
rm ./zeus_boxes/liquidx/models/liquidx-mappings/test1.provider2.json
rm ./zeus_boxes/liquidx/models/eosio-chains/test1.json
Compile Contract Again with new files
export SIDE_CHAIN_NAME=liquidjungl3
zeus compile --sidechain $SIDE_CHAIN_NAME
In order for the compiler to know which network the contract intends to be deployed on the --sidechain
flag must be passed to zeus compile --sidechain $SIDE_CHAIN_NAME
.
dappservices config file
Now let's see why we did all of that, in the ./contracts/eos/dappservices/dappservices.config.hpp
we see:
#define DAPPSERVICEX_CONTRACT_TESTDAPPXXXX "liquidjungl3"_n
#define DAPPSERVICESA_CONTRACT "dappservices"_n
#ifdef LIQUIDX
#define DAPPSERVICES_CONTRACT DAPPSERVICEX_CONTRACT_TESTDAPPXXXX
#else
#define DAPPSERVICES_CONTRACT DAPPSERVICESA_CONTRACT
#endif
If you see _TEST1
at all above, something is wrong and likely you need to remove the files suggested above.
Set Contract
cd zeus_boxes/contracts/eos
export EOS_ENDPOINT=
export ACCOUNT=
cleos -u $EOS_ENDPOINT set contract $ACCOUNT $MY_CONTRACT_NAME
Last updated
Was this helpful?