Smart Contract Steps
We will unbox the
liquidx
box to give us all of the logic, contracts, and unit testsmkir liquidx; cd liquidx
zeus unbox liquidx
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 ../../../
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. If you are already using an existing contract such as
tokenpegx
then this is already handled for you2 files must be added and 2 files deleted as to not conflict
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 chainsidechain_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"
}
/zeus_boxes/liquidx/models/eosio-chains/${CHAIN_ACCOUNT}.json
- this maps the chain’s configuration detailsdsp_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
Example
Jungle3
{
"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
}
{
"dsp_port":3117,
"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":"liquidjungl3",
"local":true
}
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
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
.Ensure that you add
@eosio.code
to the active permission level of the account. This can be done with the --add-code
flag on the cleos set account permission
command.The side chain name is the account on the EOS mainnet that has registered the chain. You may find what this contract is by asking a DSP, a BP, or the chain team itself.
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.cd zeus_boxes/contracts/eos
export EOS_ENDPOINT=
export ACCOUNT=
cleos -u $EOS_ENDPOINT set contract $ACCOUNT $MY_CONTRACT_NAME
Last modified 2yr ago