├── .gitbook └── assets │ ├── 004.png │ ├── 1.png │ ├── 10.jpg │ ├── 11.jpg │ ├── 12.jpg │ ├── 13.jpg │ ├── 14.jpg │ ├── 1608540371482.jpg │ ├── 1609227317438.jpg │ ├── 1609227432992.jpg │ ├── 1609227552510.jpg │ ├── 2.jpg │ ├── 3.jpg │ ├── 4.jpg │ ├── 5.jpg │ ├── 6.jpg │ ├── 7.jpg │ ├── 8.jpg │ ├── 9.jpg │ ├── WeChat3992b3176f68921425976a75691e18d9.png │ ├── WeChat7444857413cc84c4683450fb8ab093d7 (1).png │ ├── WeChat7444857413cc84c4683450fb8ab093d7.png │ ├── WeChat8d28fbb49ca231e3ae87abc91d27b656.png │ ├── WeChatb79a46a51fa05f007a8e5d43650fd6b4.png │ ├── WeChatbc76bcb1a3de40c16b88e6c0bf9184be.png │ ├── WeChatc0719ca96134005ee74595d20e7c0f6d (1).png │ ├── WeChatc0719ca96134005ee74595d20e7c0f6d.png │ ├── WeChate6b1d6dd3249493dbdc35ce2a399c93a.png │ ├── WeChatfa83faa624300261955ccc46843ef9c6.png │ ├── dapp.png │ ├── faucet (1).jpg │ ├── faucet.jpg │ ├── image (1).png │ ├── image (10).png │ ├── image (100) (1).png │ ├── image (100).png │ ├── image (101) (1) (1).png │ ├── image (101) (1).png │ ├── image (101).png │ ├── image (102).png │ ├── image (103).png │ ├── image (104).png │ ├── image (105).png │ ├── image (11).png │ ├── image (12).png │ ├── image (13).png │ ├── image (14).png │ ├── image (15).png │ ├── image (16).png │ ├── image (17).png │ ├── image (18).png │ ├── image (19).png │ ├── image (2).png │ ├── image (20).png │ ├── image (21).png │ ├── image (22).png │ ├── image (23).png │ ├── image (24).png │ ├── image (25).png │ ├── image (26).png │ ├── image (27).png │ ├── image (28).png │ ├── image (29).png │ ├── image (3).png │ ├── image (30).png │ ├── image (31).png │ ├── image (32).png │ ├── image (33).png │ ├── image (34).png │ ├── image (35).png │ ├── image (36).png │ ├── image (37).png │ ├── image (38).png │ ├── image (39).png │ ├── image (4).png │ ├── image (40).png │ ├── image (41).png │ ├── image (42).png │ ├── image (43).png │ ├── image (44).png │ ├── image (45).png │ ├── image (46).png │ ├── image (47).png │ ├── image (48).png │ ├── image (49).png │ ├── image (5).png │ ├── image (50).png │ ├── image (51).png │ ├── image (52).png │ ├── image (53).png │ ├── image (54).png │ ├── image (55).png │ ├── image (56).png │ ├── image (57).png │ ├── image (58).png │ ├── image (59).png │ ├── image (6).png │ ├── image (60).png │ ├── image (61).png │ ├── image (62).png │ ├── image (63).png │ ├── image (64).png │ ├── image (65).png │ ├── image (66).png │ ├── image (67).png │ ├── image (68).png │ ├── image (69).png │ ├── image (7).png │ ├── image (70).png │ ├── image (71).png │ ├── image (72).png │ ├── image (73).png │ ├── image (74).png │ ├── image (75).png │ ├── image (76).png │ ├── image (77).png │ ├── image (78).png │ ├── image (79).png │ ├── image (8).png │ ├── image (80).png │ ├── image (81).png │ ├── image (82).png │ ├── image (83).png │ ├── image (84).png │ ├── image (85).png │ ├── image (86).png │ ├── image (87).png │ ├── image (88).png │ ├── image (89) (1) (1) (1).png │ ├── image (89) (1) (1).png │ ├── image (89) (1).png │ ├── image (89).png │ ├── image (9).png │ ├── image (90) (1) (1).png │ ├── image (90) (1).png │ ├── image (90).png │ ├── image (91) (1) (1) (1).png │ ├── image (91) (1) (1).png │ ├── image (91) (1).png │ ├── image (91).png │ ├── image (92) (1) (1).png │ ├── image (92) (1).png │ ├── image (92).png │ ├── image (93) (1) (1) (1).png │ ├── image (93) (1) (1).png │ ├── image (93) (1).png │ ├── image (93).png │ ├── image (94) (1) (1) (1) (1).png │ ├── image (94) (1) (1) (1).png │ ├── image (94) (1) (1).png │ ├── image (94) (1).png │ ├── image (94).png │ ├── image (95) (1) (1) (1) (1).png │ ├── image (95) (1) (1) (1).png │ ├── image (95) (1) (1).png │ ├── image (95) (1).png │ ├── image (95).png │ ├── image (96) (1) (1).png │ ├── image (96) (1).png │ ├── image (96).png │ ├── image (97) (1) (1).png │ ├── image (97) (1).png │ ├── image (97).png │ ├── image (98) (1).png │ ├── image (98).png │ ├── image (99) (1) (1).png │ ├── image (99) (1).png │ ├── image (99).png │ ├── image.png │ ├── img-2x.png │ ├── img@2x.png │ ├── remix.jpg │ ├── scan.jpg │ ├── testnet.jpg │ ├── wechat3992b3176f68921425976a75691e18d9.png │ ├── wechat7444857413cc84c4683450fb8ab093d7 (1).png │ ├── wechat7444857413cc84c4683450fb8ab093d7.png │ ├── wechat8d28fbb49ca231e3ae87abc91d27b656.png │ ├── wechatb79a46a51fa05f007a8e5d43650fd6b4.png │ ├── wechatbc76bcb1a3de40c16b88e6c0bf9184be.png │ ├── wechatc0719ca96134005ee74595d20e7c0f6d (1).png │ ├── wechatc0719ca96134005ee74595d20e7c0f6d.png │ ├── wechate6b1d6dd3249493dbdc35ce2a399c93a.png │ └── wechatfa83faa624300261955ccc46843ef9c6.png ├── .gitignore ├── LICENSE ├── README.md ├── SUMMARY.md ├── clover-eco-incentive-program ├── clover-dapp-developer-incentive-structure.md ├── clover-user-incentive-program-1.md ├── clover-user-incentive-program.md └── introduction.md ├── clv-token.md ├── development-guide ├── introduction │ ├── README.md │ ├── prerequisites.md │ └── setup-environment.md ├── tutorial │ ├── README.md │ ├── counter-webapp.md │ ├── deploy-contract.md │ ├── setup-dapp-project.md │ ├── setup-truffle.md │ └── the-counter-contract.md ├── using-metamask.md ├── using-remix.md └── using-web3js │ ├── README.md │ ├── query-balance.md │ └── send-transaction.md ├── docs ├── .nojekyll ├── CNAME ├── _media │ └── logo.svg └── index.html ├── follow-us.md ├── ink-smart-contracts └── example │ └── add-a-pallet.md ├── maintain ├── running-a-rpc-node.md ├── running-a-validator-on-clover-network.md └── staking-on-clover │ ├── README.md │ ├── staking-via-apps.md │ └── staking-via-clover-wallet.md ├── parachain-auction └── about-polkadot-parachain-auction.md ├── quick-start ├── clover-networks.md ├── sakura-networks.md ├── using-local-node.md └── using-testnet │ ├── README.md │ ├── connect-to-testnet.md │ ├── create-an-account.md │ ├── faucet.md │ └── run-a-testnet-node.md ├── solidity-smart-contracts ├── bep20-tokens │ ├── bind-token-tool.md │ ├── bind-token.md │ └── cross-chain-transfer.md ├── blockchain-details │ ├── README.md │ ├── binance-smart-chain-fullnode.md │ ├── clv-relayer.md │ ├── pegged-tokens.md │ └── rpc.md ├── buidl-program.md ├── ecosystem │ ├── verify-contract.md │ └── verify-proxy-contract.md ├── oracles │ └── band-protocol-integration.md ├── tools │ └── gas-price.md ├── tutorial │ └── local-clv-network.md └── untitled-1.md ├── technical-documentation ├── clover-evm-bind.md ├── clover-evm.md ├── clover-test-cases.md ├── query-banalnce.md ├── technical-design-of-clover-wallet.md ├── transaction-finality.md ├── web3-compatibility.md └── web3-compatibility │ ├── README.md │ ├── eth_accounts.md │ ├── eth_blocknumber.md │ ├── eth_call.md │ ├── eth_chainid.md │ ├── eth_coinbase.md │ ├── eth_estimategas.md │ ├── eth_gasprice.md │ ├── eth_getbalance.md │ ├── eth_getblockbynumber.md │ ├── eth_getblocktransactioncountbynumber.md │ ├── eth_getcode.md │ ├── eth_getfilterchanges.md │ ├── eth_getfilterlogs.md │ ├── eth_getlogs.md │ ├── eth_getstorageat.md │ ├── eth_gettransactionbyblockhashandindex.md │ ├── eth_gettransactionbyblocknumberandindex.md │ ├── eth_gettransactionbyhash.md │ ├── eth_gettransactioncount.md │ ├── eth_gettransactionreceipt.md │ ├── eth_getunclebyblocknumberandindex.md │ ├── eth_getunclecountbyblockhash.md │ ├── eth_getwork.md │ ├── eth_hashrate.md │ ├── eth_mining.md │ ├── eth_newblockfilter.md │ ├── eth_newfilter.md │ ├── eth_newpendingtransactionfilter.md │ ├── eth_protocolversion.md │ ├── eth_sendrawtransaction.md │ ├── eth_sendtransaction.md │ ├── eth_submithashrate.md │ ├── eth_submitwork.md │ ├── eth_subscribe.md │ ├── eth_syncing.md │ ├── eth_uninstallfilter.md │ ├── eth_unsubscribe.md │ ├── net_listening.md │ ├── net_peercount.md │ ├── net_version.md │ ├── web3_clientversion.md │ └── web3_sha3.md ├── useful-links.md └── wallet-and-dapp ├── assets-stats-and-management.md ├── clover-cross-chain-explorer.md ├── clover-extension-wallet ├── README.md ├── add-tokens.md ├── cross-chain-transfer.md ├── dapp-integration.md ├── dapp-protocol.md ├── import-account.md ├── installation.md ├── send-tokens.md ├── solana-dapp-integration.md ├── substrate-dapp-integration.md ├── switch-networks.md ├── view-seed-phrase.md └── wallet-integration-qa.md ├── clover-mobile-wallet.md ├── clover-web-wallet ├── README.md └── dapp-integration.md └── web3-compatibility.md /.gitbook/assets/004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/004.png -------------------------------------------------------------------------------- /.gitbook/assets/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/1.png -------------------------------------------------------------------------------- /.gitbook/assets/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/10.jpg -------------------------------------------------------------------------------- /.gitbook/assets/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/11.jpg -------------------------------------------------------------------------------- /.gitbook/assets/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/12.jpg -------------------------------------------------------------------------------- /.gitbook/assets/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/13.jpg -------------------------------------------------------------------------------- /.gitbook/assets/14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/14.jpg -------------------------------------------------------------------------------- /.gitbook/assets/1608540371482.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/1608540371482.jpg -------------------------------------------------------------------------------- /.gitbook/assets/1609227317438.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/1609227317438.jpg -------------------------------------------------------------------------------- /.gitbook/assets/1609227432992.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/1609227432992.jpg -------------------------------------------------------------------------------- /.gitbook/assets/1609227552510.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/1609227552510.jpg -------------------------------------------------------------------------------- /.gitbook/assets/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/2.jpg -------------------------------------------------------------------------------- /.gitbook/assets/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/3.jpg -------------------------------------------------------------------------------- /.gitbook/assets/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/4.jpg -------------------------------------------------------------------------------- /.gitbook/assets/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/5.jpg -------------------------------------------------------------------------------- /.gitbook/assets/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/6.jpg -------------------------------------------------------------------------------- /.gitbook/assets/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/7.jpg -------------------------------------------------------------------------------- /.gitbook/assets/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/8.jpg -------------------------------------------------------------------------------- /.gitbook/assets/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/9.jpg -------------------------------------------------------------------------------- /.gitbook/assets/WeChat3992b3176f68921425976a75691e18d9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/WeChat3992b3176f68921425976a75691e18d9.png -------------------------------------------------------------------------------- /.gitbook/assets/WeChat7444857413cc84c4683450fb8ab093d7 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/WeChat7444857413cc84c4683450fb8ab093d7 (1).png -------------------------------------------------------------------------------- /.gitbook/assets/WeChat7444857413cc84c4683450fb8ab093d7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/WeChat7444857413cc84c4683450fb8ab093d7.png -------------------------------------------------------------------------------- /.gitbook/assets/WeChat8d28fbb49ca231e3ae87abc91d27b656.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/WeChat8d28fbb49ca231e3ae87abc91d27b656.png -------------------------------------------------------------------------------- /.gitbook/assets/WeChatb79a46a51fa05f007a8e5d43650fd6b4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/WeChatb79a46a51fa05f007a8e5d43650fd6b4.png -------------------------------------------------------------------------------- /.gitbook/assets/WeChatbc76bcb1a3de40c16b88e6c0bf9184be.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/WeChatbc76bcb1a3de40c16b88e6c0bf9184be.png -------------------------------------------------------------------------------- /.gitbook/assets/WeChatc0719ca96134005ee74595d20e7c0f6d (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/WeChatc0719ca96134005ee74595d20e7c0f6d (1).png -------------------------------------------------------------------------------- /.gitbook/assets/WeChatc0719ca96134005ee74595d20e7c0f6d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/WeChatc0719ca96134005ee74595d20e7c0f6d.png -------------------------------------------------------------------------------- /.gitbook/assets/WeChate6b1d6dd3249493dbdc35ce2a399c93a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/WeChate6b1d6dd3249493dbdc35ce2a399c93a.png -------------------------------------------------------------------------------- /.gitbook/assets/WeChatfa83faa624300261955ccc46843ef9c6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/WeChatfa83faa624300261955ccc46843ef9c6.png -------------------------------------------------------------------------------- /.gitbook/assets/dapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/dapp.png -------------------------------------------------------------------------------- /.gitbook/assets/faucet (1).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/faucet (1).jpg -------------------------------------------------------------------------------- /.gitbook/assets/faucet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/faucet.jpg -------------------------------------------------------------------------------- /.gitbook/assets/image (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (10).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (10).png -------------------------------------------------------------------------------- /.gitbook/assets/image (100) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (100) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (100).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (100).png -------------------------------------------------------------------------------- /.gitbook/assets/image (101) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (101) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (101) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (101) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (101).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (101).png -------------------------------------------------------------------------------- /.gitbook/assets/image (102).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (102).png -------------------------------------------------------------------------------- /.gitbook/assets/image (103).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (103).png -------------------------------------------------------------------------------- /.gitbook/assets/image (104).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (104).png -------------------------------------------------------------------------------- /.gitbook/assets/image (105).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (105).png -------------------------------------------------------------------------------- /.gitbook/assets/image (11).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (11).png -------------------------------------------------------------------------------- /.gitbook/assets/image (12).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (12).png -------------------------------------------------------------------------------- /.gitbook/assets/image (13).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (13).png -------------------------------------------------------------------------------- /.gitbook/assets/image (14).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (14).png -------------------------------------------------------------------------------- /.gitbook/assets/image (15).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (15).png -------------------------------------------------------------------------------- /.gitbook/assets/image (16).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (16).png -------------------------------------------------------------------------------- /.gitbook/assets/image (17).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (17).png -------------------------------------------------------------------------------- /.gitbook/assets/image (18).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (18).png -------------------------------------------------------------------------------- /.gitbook/assets/image (19).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (19).png -------------------------------------------------------------------------------- /.gitbook/assets/image (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (2).png -------------------------------------------------------------------------------- /.gitbook/assets/image (20).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (20).png -------------------------------------------------------------------------------- /.gitbook/assets/image (21).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (21).png -------------------------------------------------------------------------------- /.gitbook/assets/image (22).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (22).png -------------------------------------------------------------------------------- /.gitbook/assets/image (23).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (23).png -------------------------------------------------------------------------------- /.gitbook/assets/image (24).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (24).png -------------------------------------------------------------------------------- /.gitbook/assets/image (25).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (25).png -------------------------------------------------------------------------------- /.gitbook/assets/image (26).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (26).png -------------------------------------------------------------------------------- /.gitbook/assets/image (27).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (27).png -------------------------------------------------------------------------------- /.gitbook/assets/image (28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (28).png -------------------------------------------------------------------------------- /.gitbook/assets/image (29).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (29).png -------------------------------------------------------------------------------- /.gitbook/assets/image (3).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (3).png -------------------------------------------------------------------------------- /.gitbook/assets/image (30).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (30).png -------------------------------------------------------------------------------- /.gitbook/assets/image (31).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (31).png -------------------------------------------------------------------------------- /.gitbook/assets/image (32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (32).png -------------------------------------------------------------------------------- /.gitbook/assets/image (33).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (33).png -------------------------------------------------------------------------------- /.gitbook/assets/image (34).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (34).png -------------------------------------------------------------------------------- /.gitbook/assets/image (35).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (35).png -------------------------------------------------------------------------------- /.gitbook/assets/image (36).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (36).png -------------------------------------------------------------------------------- /.gitbook/assets/image (37).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (37).png -------------------------------------------------------------------------------- /.gitbook/assets/image (38).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (38).png -------------------------------------------------------------------------------- /.gitbook/assets/image (39).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (39).png -------------------------------------------------------------------------------- /.gitbook/assets/image (4).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (4).png -------------------------------------------------------------------------------- /.gitbook/assets/image (40).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (40).png -------------------------------------------------------------------------------- /.gitbook/assets/image (41).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (41).png -------------------------------------------------------------------------------- /.gitbook/assets/image (42).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (42).png -------------------------------------------------------------------------------- /.gitbook/assets/image (43).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (43).png -------------------------------------------------------------------------------- /.gitbook/assets/image (44).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (44).png -------------------------------------------------------------------------------- /.gitbook/assets/image (45).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (45).png -------------------------------------------------------------------------------- /.gitbook/assets/image (46).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (46).png -------------------------------------------------------------------------------- /.gitbook/assets/image (47).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (47).png -------------------------------------------------------------------------------- /.gitbook/assets/image (48).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (48).png -------------------------------------------------------------------------------- /.gitbook/assets/image (49).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (49).png -------------------------------------------------------------------------------- /.gitbook/assets/image (5).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (5).png -------------------------------------------------------------------------------- /.gitbook/assets/image (50).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (50).png -------------------------------------------------------------------------------- /.gitbook/assets/image (51).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (51).png -------------------------------------------------------------------------------- /.gitbook/assets/image (52).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (52).png -------------------------------------------------------------------------------- /.gitbook/assets/image (53).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (53).png -------------------------------------------------------------------------------- /.gitbook/assets/image (54).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (54).png -------------------------------------------------------------------------------- /.gitbook/assets/image (55).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (55).png -------------------------------------------------------------------------------- /.gitbook/assets/image (56).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (56).png -------------------------------------------------------------------------------- /.gitbook/assets/image (57).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (57).png -------------------------------------------------------------------------------- /.gitbook/assets/image (58).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (58).png -------------------------------------------------------------------------------- /.gitbook/assets/image (59).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (59).png -------------------------------------------------------------------------------- /.gitbook/assets/image (6).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (6).png -------------------------------------------------------------------------------- /.gitbook/assets/image (60).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (60).png -------------------------------------------------------------------------------- /.gitbook/assets/image (61).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (61).png -------------------------------------------------------------------------------- /.gitbook/assets/image (62).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (62).png -------------------------------------------------------------------------------- /.gitbook/assets/image (63).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (63).png -------------------------------------------------------------------------------- /.gitbook/assets/image (64).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (64).png -------------------------------------------------------------------------------- /.gitbook/assets/image (65).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (65).png -------------------------------------------------------------------------------- /.gitbook/assets/image (66).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (66).png -------------------------------------------------------------------------------- /.gitbook/assets/image (67).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (67).png -------------------------------------------------------------------------------- /.gitbook/assets/image (68).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (68).png -------------------------------------------------------------------------------- /.gitbook/assets/image (69).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (69).png -------------------------------------------------------------------------------- /.gitbook/assets/image (7).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (7).png -------------------------------------------------------------------------------- /.gitbook/assets/image (70).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (70).png -------------------------------------------------------------------------------- /.gitbook/assets/image (71).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (71).png -------------------------------------------------------------------------------- /.gitbook/assets/image (72).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (72).png -------------------------------------------------------------------------------- /.gitbook/assets/image (73).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (73).png -------------------------------------------------------------------------------- /.gitbook/assets/image (74).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (74).png -------------------------------------------------------------------------------- /.gitbook/assets/image (75).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (75).png -------------------------------------------------------------------------------- /.gitbook/assets/image (76).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (76).png -------------------------------------------------------------------------------- /.gitbook/assets/image (77).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (77).png -------------------------------------------------------------------------------- /.gitbook/assets/image (78).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (78).png -------------------------------------------------------------------------------- /.gitbook/assets/image (79).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (79).png -------------------------------------------------------------------------------- /.gitbook/assets/image (8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (8).png -------------------------------------------------------------------------------- /.gitbook/assets/image (80).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (80).png -------------------------------------------------------------------------------- /.gitbook/assets/image (81).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (81).png -------------------------------------------------------------------------------- /.gitbook/assets/image (82).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (82).png -------------------------------------------------------------------------------- /.gitbook/assets/image (83).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (83).png -------------------------------------------------------------------------------- /.gitbook/assets/image (84).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (84).png -------------------------------------------------------------------------------- /.gitbook/assets/image (85).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (85).png -------------------------------------------------------------------------------- /.gitbook/assets/image (86).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (86).png -------------------------------------------------------------------------------- /.gitbook/assets/image (87).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (87).png -------------------------------------------------------------------------------- /.gitbook/assets/image (88).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (88).png -------------------------------------------------------------------------------- /.gitbook/assets/image (89) (1) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (89) (1) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (89) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (89) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (89) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (89) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (89).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (89).png -------------------------------------------------------------------------------- /.gitbook/assets/image (9).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (9).png -------------------------------------------------------------------------------- /.gitbook/assets/image (90) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (90) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (90) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (90) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (90).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (90).png -------------------------------------------------------------------------------- /.gitbook/assets/image (91) (1) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (91) (1) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (91) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (91) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (91) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (91) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (91).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (91).png -------------------------------------------------------------------------------- /.gitbook/assets/image (92) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (92) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (92) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (92) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (92).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (92).png -------------------------------------------------------------------------------- /.gitbook/assets/image (93) (1) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (93) (1) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (93) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (93) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (93) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (93) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (93).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (93).png -------------------------------------------------------------------------------- /.gitbook/assets/image (94) (1) (1) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (94) (1) (1) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (94) (1) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (94) (1) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (94) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (94) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (94) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (94) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (94).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (94).png -------------------------------------------------------------------------------- /.gitbook/assets/image (95) (1) (1) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (95) (1) (1) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (95) (1) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (95) (1) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (95) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (95) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (95) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (95) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (95).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (95).png -------------------------------------------------------------------------------- /.gitbook/assets/image (96) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (96) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (96) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (96) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (96).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (96).png -------------------------------------------------------------------------------- /.gitbook/assets/image (97) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (97) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (97) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (97) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (97).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (97).png -------------------------------------------------------------------------------- /.gitbook/assets/image (98) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (98) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (98).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (98).png -------------------------------------------------------------------------------- /.gitbook/assets/image (99) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (99) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (99) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (99) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (99).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image (99).png -------------------------------------------------------------------------------- /.gitbook/assets/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/image.png -------------------------------------------------------------------------------- /.gitbook/assets/img-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/img-2x.png -------------------------------------------------------------------------------- /.gitbook/assets/img@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/img@2x.png -------------------------------------------------------------------------------- /.gitbook/assets/remix.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/remix.jpg -------------------------------------------------------------------------------- /.gitbook/assets/scan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/scan.jpg -------------------------------------------------------------------------------- /.gitbook/assets/testnet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/testnet.jpg -------------------------------------------------------------------------------- /.gitbook/assets/wechat3992b3176f68921425976a75691e18d9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/wechat3992b3176f68921425976a75691e18d9.png -------------------------------------------------------------------------------- /.gitbook/assets/wechat7444857413cc84c4683450fb8ab093d7 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/wechat7444857413cc84c4683450fb8ab093d7 (1).png -------------------------------------------------------------------------------- /.gitbook/assets/wechat7444857413cc84c4683450fb8ab093d7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/wechat7444857413cc84c4683450fb8ab093d7.png -------------------------------------------------------------------------------- /.gitbook/assets/wechat8d28fbb49ca231e3ae87abc91d27b656.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/wechat8d28fbb49ca231e3ae87abc91d27b656.png -------------------------------------------------------------------------------- /.gitbook/assets/wechatb79a46a51fa05f007a8e5d43650fd6b4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/wechatb79a46a51fa05f007a8e5d43650fd6b4.png -------------------------------------------------------------------------------- /.gitbook/assets/wechatbc76bcb1a3de40c16b88e6c0bf9184be.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/wechatbc76bcb1a3de40c16b88e6c0bf9184be.png -------------------------------------------------------------------------------- /.gitbook/assets/wechatc0719ca96134005ee74595d20e7c0f6d (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/wechatc0719ca96134005ee74595d20e7c0f6d (1).png -------------------------------------------------------------------------------- /.gitbook/assets/wechatc0719ca96134005ee74595d20e7c0f6d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/wechatc0719ca96134005ee74595d20e7c0f6d.png -------------------------------------------------------------------------------- /.gitbook/assets/wechate6b1d6dd3249493dbdc35ce2a399c93a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/wechate6b1d6dd3249493dbdc35ce2a399c93a.png -------------------------------------------------------------------------------- /.gitbook/assets/wechatfa83faa624300261955ccc46843ef9c6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/.gitbook/assets/wechatfa83faa624300261955ccc46843ef9c6.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Node rules: 2 | ## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 3 | .grunt 4 | 5 | ## Dependency directory 6 | ## Commenting this out is preferred by some people, see 7 | ## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git 8 | node_modules 9 | 10 | # Book build output 11 | _book 12 | 13 | # eBook build output 14 | *.epub 15 | *.mobi 16 | *.pdf 17 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Clover Network 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Welcome to Clover 2 | 3 | This site provides documentation for Clover, an Operating System parachain on the Polkadot network. Here, you'll find both high-level and technical information for developers, collators, end users, and other Clover network participants. 4 | 5 | This site will be updated from as Clover evolves. We welcome everyone joins the Clover community and contribute to this site and the project. 6 | 7 | ## What is Clover 8 | 9 | Clover is a Substrate-based Polkadot parachain. Clover is committed to providing easy-to-use blockchain infrastructure and creating a one-stop comprehensive infrastructure platform, which aims to reduce the threshold and cost for developers, while bringing them great returns. 10 | 11 | ### Passport to the Omniverse 12 | 13 | Clover is the passport to the omniverse, which contains storage layer, smart contract layer, Defi protocol layer and eApp layer, in details: 14 | 15 | * Storage layer: Storage protocol layer supports distributed storage of dApp data. The supported protocols are IPFS, AR, CRUST etc. 16 | * Smart contract layer: It supports one-stop cross-chain deployment and calls of dApp. Clover provides a Web3-compatible API, and existing web3 dApps can be migrated to Clover without any change needed. 17 | * Defi protocol layer: It supports various basic Defi protocols, such as Swap, Lending, Insurance, etc. It also provides a platform on where developers can build their own Defi protocols. Also, Clover provides a drag-drop smart contract compiler, which is easy-to-use, faultless and can be compiled to WASM. 18 | * eApp layer: It supports the evolution from dApp to eApp (External App). Developers can build and deploy their eApp easily on Clover, without the need for machines, domain names, or network bandwidth. 19 | 20 | ### Built on Substrate 21 | 22 | Substrate is technically fit for Clover. By building on top of Substrate, Clover is able to leverage the extensive functionalities that Substrate provides out-of-the-box, rather than needing to build them from scratch. These functionalities include peer-to-peer networking, consensus mechanisms, governance functionality, EVM implementation, and more. 23 | 24 | Overall, using Substrate will dramatically reduce the time and work needed to implement Clover. Substrate allows a great degree of customization, which is compulsory when achieving compatibility with Ethereum. Meanwhile, by adopting Rust, Clover will gain both safety guarantee and performance enhancement. 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /clover-eco-incentive-program/clover-dapp-developer-incentive-structure.md: -------------------------------------------------------------------------------- 1 | # Clover Developer Incentive Program 2 | 3 | The Developer Incentive Program (DIP) is made of two respective implementations, a foundational-layer coinbase rule activation and a following smart contract implementation. 4 | 5 | ## Coinbase Rule Activation 6 | 7 | Clover users contribute to the program indirectly with transaction fees, this is so that a new fee schedule is not committed to the transaction structure itself. Wallet softwares functions the same as usual without breaking backwards compatibility. 8 | 9 | The coinbase transaction which spends the block reward and all transaction fees to an address of the validators choosing follows a subsequent transaction where 49 percent of txFee reward is respectively transferred to DIP contract. The amount of total CLV a successful validator can claim for himself is therefore changed from blockReward + txnFees to blockReward + txnFees_51/100._ Whenever a block is propagated, every node will check whether the block adheres to the rules where the sum of all transaction outputs in a block must be equal or smaller than all transaction inputs and the block reward: sum(blockOutputs) ¡ sum(blockInputs) + (blockReward + txnFees51/100) + txnFees\*49/100 10 | 11 | ## Smart Contract Implementation 12 | 13 | External contract registration and reward distribution are done through DIP contract, a trust- less autonomous contract that lives on the Clover parachain. This implementation is made of three main phases; registration, invocation and reward distribution. 14 | 15 | ### Registration 16 | 17 | Third party Clover developers can benefit from the Developer Incentive Program upon registering their compiled contract with DIP contract pre-deployment. An external contract willing to register Developer Incentive Program should include an internal method called transactAndInvokeDIP which is used to trigger reward incrementation, and another internal method called claimRewards which is used to trigger reward settlement. 18 | 19 | Right before contract deployment, the respective developer submits contract ABI and contract hexadecimal representation to DIP contract via registerExternalContract method. Given parameters registerExternalContract registers submission upon checking whether the contract is well-formatted and transactAndInvokeDIP is well-structured. 20 | 21 | ![New Contract Registration Logic](<../.gitbook/assets/image (10).png>) 22 | 23 | ### Invocation 24 | 25 | transactAndInvokeDIP adds a new standard to contracts on the Clover network which can be called internally within the external contract with the additional data provided. Whenever a clover user interacts with a registered external contract, transactAndInvokeDIP invokes DIP contract’s function listenInvokeDIP and triggers an event incrementRewardNonce(address), following the convention set in ERC677. 26 | 27 | ![Invocation Logic](<../.gitbook/assets/image (11).png>) 28 | 29 | ### Reward Distribution 30 | 31 | Registered third party Clover developers can claim their rewards, in a predefined period of time, upon calling internal claimRewards function which triggers a set of events to distribute a portion of associated rewards based on external contract’s reward nonce and DIP contract’s total reward pool from coinbase txFee rewards. 32 | 33 | ![Reward Distribution Logic](<../.gitbook/assets/image (12).png>) 34 | 35 | -------------------------------------------------------------------------------- /clover-eco-incentive-program/clover-user-incentive-program-1.md: -------------------------------------------------------------------------------- 1 | # Clover User Incentive Program 2 | 3 | ## 4 | -------------------------------------------------------------------------------- /clover-eco-incentive-program/clover-user-incentive-program.md: -------------------------------------------------------------------------------- 1 | # Virtual Ethereum address binding 2 | 3 | CLV and ETH address Binding is mandatory. Clover will check whether the address is bound every time before a user signs. If the address is unbound, the following process will be triggered. 4 | 5 | ![](<../.gitbook/assets/image (14).png>) 6 | 7 | After binding, the CLV assets of the two accounts will be mapped and the data is shared.\ 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /clover-eco-incentive-program/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | The Developer Incentive Program (DIP) is a Clover-native consensus feature that aims to direct a percentage of transaction fees to registered smart contracts to incentivize in Clover third party contract developers and commons, mainly to boost external dApp development which ultimately enlarges the Clover DeFi ecosystem overall. 4 | 5 | The User Incentive Program(UIP) is another Clover consensus feature aims to Lower the barrier for users to use the Clover network for transactions. Since Clover enable the dapp functions of Ethereum chain, there is a fundamental setup to bind Clover address and virtual Ethereum Address. Then the incentive program will work consistently on both networks. 6 | -------------------------------------------------------------------------------- /clv-token.md: -------------------------------------------------------------------------------- 1 | # CLV Token 2 | 3 | ## What is CLV? 4 | 5 | **CLV** is the native token of the platform, and is used for staking to take part in network consensus, transaction fees, platform rewards, and network governance. 6 | 7 | * **Opt-in Fees:** Pay gas fee in CLV, or have the option to pay with any network token. 8 | * **Governance:** Lock CLV to elect council members and guide the development through on-chain governance. 9 | * **Validation:** Stake CLV to validate the network with your validator infrastructure. 10 | * **Treasury:** Get your projects funded from the treasury. 11 | * **Nomination:** Stake CLV to nominate your own node validator using a single-click deployment. 12 | * **Deployment:** Use CLV to deploy your smart contracts and dApps on Clover. 13 | 14 | ## Token Info 15 | 16 | **SmartContract** 17 | 18 | * **CLV ERC-20:** 0x80C62FE4487E1351b47Ba49809EBD60ED085bf52 19 | * **CLV BEP-20:** 0x09E889BB4D5b474f561db0491C38702F367A4e4d 20 | 21 | **Block Explorer** 22 | 23 | * **CLV ERC-20:** [Etherscan](https://etherscan.io/token/0x80C62FE4487E1351b47Ba49809EBD60ED085bf52) 24 | * **CLV BEP-20:** [Bscscan](https://bscscan.com/token/0x09E889BB4D5b474f561db0491C38702F367A4e4d) 25 | * **CLV Native:** [Subscan](https://clover.subscan.io) 26 | * **CLV Parachain:** [Subscan](https://clv.subscan.io) 27 | * **CLV Cross-Chain Transaction Explorer:** [CloverScan](https://tx.clover.finance/#/) 28 | 29 | ## How to store CLV? 30 | 31 | **Clover App Wallet** 32 | 33 | * [IOS](https://apps.apple.com/us/app/clover-wallet/id1570072858) 34 | * [Android](https://play.google.com/store/apps/details?id=com.clover.finance.wallet\&hl=zh\&gl=US) 35 | * [APK](https://github.com/clover-network/clover-multichain-mobile-wallet-release/releases/latest/download/clover.apk) 36 | 37 | **Clover Extension Wallet** 38 | 39 | * [Chrome](https://chrome.google.com/webstore/detail/clover-wallet/nhnkbkgjikgcigadomkphalanndcapjk) 40 | 41 | ## How to trade CLV? 42 | 43 | * **Coinbase Pro:** [CLV/USDT](https://pro.coinbase.com/trade/CLV-USDT), [CLV/USD](https://pro.coinbase.com/trade/CLV-USD), [CLV/GBP](https://pro.coinbase.com/trade/CLV-GBP), [CLV/EUR](https://pro.coinbase.com/trade/CLV-EUR) 44 | * **Binance:** [CLV/USDT](https://www.binance.com/en/trade/CLV\_USDT), [CLV/BUSD](https://www.binance.com/en/trade/CLV\_BUSD), [CLV/BNB](https://www.binance.com/en/trade/CLV\_BNB), [CLV/BTC](https://www.binance.com/en/trade/CLV\_BTC) 45 | * **FTX:** [CLV/USD](https://ftx.com/trade/CLV/USD) 46 | * **Huobi:** [CLV/USDT](https://www.huobi.com/en-us/exchange/clv\_usdt), [CLV/BTC](https://www.huobi.com/en-us/exchange/clv\_btc) 47 | * **OKEx:** [CLV/USDT](https://www.okex.com/trade-spot/clv-usdt) 48 | * **Kucoin:** [CLV/USDT](https://trade.kucoin.com/CLV-USDT) 49 | * **CoinEx:** [CLV/USDT](https://www.coinex.com/exchange/CLV-USDT) 50 | * **Gate:** [CLV/USDT](https://www.gate.io/trade/CLV\_USDT) 51 | * **MEXC:** [CLV/USDT](https://www.mexc.com/zh-CN/exchange/CLV\_USDT) 52 | * **Hoo:** [CLV/USDT](https://hoo.com/innovation/clv-usdt) 53 | * **Bithumb Global:** [CLV/USDT](https://www.bithumb.pro/en-us/spot/trade?q=CLV-USDT)\ 54 | -------------------------------------------------------------------------------- /development-guide/introduction/README.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | DApp (Decentralized applications) is a computer application that runs on distributed computing system. 4 | 5 | Normally there're two parts In real word DApp: the on-chain code and the off-chain code. Developers put core application logic in the on-chain code and deploy it to the blockchain. The off-chain code provides a better user interface to make it easy to interact with the on-chain application. 6 | 7 | Many modern blockchain systems support DApp development by implementing an on-chain virtual machine to run the DApp code and a corresponding programming language to write the on-chain code which are called as Smart Contract. 8 | 9 | Ethereum virtual machine(aka EVM) is the most popular and widely used virtual machine. Web3js is the most commonly used js SDK to interact with the smart contract application. Clover implements a fully compatible EVM layer, developers can use web3 to interact with Clover DApp. 10 | 11 | This tutorial will guide you to create your first DApp step by step. It will cover the essential of creating a DApp from scratch. 12 | -------------------------------------------------------------------------------- /development-guide/introduction/prerequisites.md: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | 3 | Developing a DApp requires you familiar with several tools. We'll use some tools in this tutorial but we assume you have at least basic knowledge with them. 4 | 5 | ### :tools: [Solidity](https://docs.soliditylang.org/en/v0.7.5/) 6 | 7 | {% hint style="info" %} 8 | Solidity is an object-oriented, high-level language for implementing smart contracts. Smart contracts are programs which govern the behavior of accounts within the Clover state. 9 | {% endhint %} 10 | 11 | We'll use to solidity as the programming language to write on-chain logic. 12 | 13 | ### :pineapple: [Javascript](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Introduction) 14 | 15 | {% hint style="info" %} 16 | JavaScript is a cross-platform, object-oriented scripting language used to make webpages interactive (e.g., having complex animations, clickable buttons, popup menus, etc.). There are also more advanced server side versions of JavaScript such as Node.js, which allow you to add more functionality to a website than downloading files (such as realtime collaboration between multiple computers). Inside a host environment (for example, a web browser), JavaScript can be connected to the objects of its environment to provide programmatic control over them. 17 | {% endhint %} 18 | 19 | We'll implement the frontend UI logic using javascript. 20 | 21 | ### :watermelon: [Reactjs](https://reactjs.org) 22 | 23 | {% hint style="info" %} 24 | React is a declarative, efficient, and flexible JavaScript library for building user interfaces. It lets you compose complex UIs from small and isolated pieces of code called “components”. 25 | {% endhint %} 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /development-guide/introduction/setup-environment.md: -------------------------------------------------------------------------------- 1 | # Setup environment 2 | 3 | ## Install required tools 4 | 5 | We're going to develop DApp using truffle and react. So you need to have at least the following tools installed. 6 | 7 | ### :tangerine: [Nodejs](https://nodejs.org) 8 | 9 | Nodejs is the essential tool to develop both smart contract and create the front end app. Install the recent version of node would be enough, by writing this document, we're using v15.4.0. 10 | 11 | {% hint style="info" %} 12 | Super-powers are granted randomly so please submit an issue if you're not happy with yours. 13 | {% endhint %} 14 | 15 | ### :tools: [Truffle](https://www.trufflesuite.com/truffle) 16 | 17 | Truffle is a world class development environment, testing framework and asset pipeline for blockchains using the Ethereum Virtual Machine (EVM), aiming to make life as a developer easier. 18 | 19 | 20 | 21 | {% hint style="info" %} 22 | Clover provides fully compatible with Ethereum tools and we can use existing power tools like truffle, remix to develop smart contracts on Clover. 23 | {% endhint %} 24 | 25 | ```bash 26 | npm install truffle -g 27 | ``` 28 | 29 | ### :lemon: [Create-React-App](https://github.com/facebook/create-react-app) 30 | 31 | {% hint style="info" %} 32 | Create React App is an officially supported way to create single-page React applications. It offers a modern build setup with no configuration. 33 | {% endhint %} 34 | 35 | ```bash 36 | # No need to install create-react-app, 37 | # just use 'npx create-react-app' to invoke it. 38 | npx create-react-app 39 | ``` 40 | 41 | ## :rocket: [Clover local node](broken-reference) 42 | 43 | We assume you start your clover local node using below command, you might need to adjust some settings if you start clover use a different command arguments. 44 | 45 | ```bash 46 | ./target/release/clover --dev --alice 47 | ``` 48 | -------------------------------------------------------------------------------- /development-guide/tutorial/README.md: -------------------------------------------------------------------------------- 1 | # Counter Tutorial 2 | 3 | In this tutorial we'll start from building a simple Counter DApp. 4 | 5 | It's a very simple DApp, which has one state variable "counter" and a function to write the state. We'll build a web application to interact with the Counter smart contract. 6 | 7 | The source code of this tutorial could be found at: [https://github.com/clover-network/example-counter-dapp](https://github.com/clover-network/example-counter-dapp) . 8 | -------------------------------------------------------------------------------- /development-guide/tutorial/setup-dapp-project.md: -------------------------------------------------------------------------------- 1 | # Setup dapp project 2 | 3 | ## :corn: Create a project using create-react-app 4 | 5 | Let's start with creating a frontend project using create-react-app. 6 | 7 | ``` 8 | npx create-react-app counter-dapp 9 | ``` 10 | 11 | {% hint style="info" %} 12 | This command takes a little while to complete, be pertinent. You need to confirm the installation of create-react-app if it's your first time using this command. 13 | {% endhint %} 14 | 15 | Once the command complete, start the web app: 16 | 17 | ```bash 18 | cd counter-dapp 19 | yarn start 20 | ``` 21 | 22 | {% hint style="info" %} 23 | A browser window will be opened and who the web app. You can visit [http://localhost:3000/](http://localhost:3000) either. 24 | {% endhint %} 25 | 26 | ## :tools: Add counter state and buttons 27 | 28 | We'll add a simple text to show the current value of the counter state. 29 | 30 | "Inc" and "Dec" buttons to update the counter state. 31 | 32 | Edit `src/App.js` and set the `App()` function looks like below: 33 | 34 | ```jsx 35 | function App() { 36 | return ( 37 |
38 |
39 |

Counter Example

40 |

41 | Current value: n/a 42 |

43 | 44 | 45 |
46 |
47 | ); 48 | } 49 | ``` 50 | 51 | Edit `src/App.css` and add the css class `CounterButton`. You can make your customizations as you like. 52 | 53 | ```css 54 | .CounterButton { 55 | background-color: #4CAF50; 56 | border: none; 57 | color: white; 58 | margin-top: 15px; 59 | padding: 15px 32px; 60 | text-align: center; 61 | text-decoration: none; 62 | display: inline-block; 63 | font-size: 16px; 64 | width: 200px; 65 | } 66 | ``` 67 | 68 | The webpage will be reloaded after you saved the files. 69 | 70 | Now you can see we're having the basic page layout! 71 | 72 | {% hint style="info" %} 73 | The source code of this chapter could be found at the revision `fdb1b9e5f` in the [`counter-dapp`](https://github.com/clover-network/example-counter-dapp) source repo. 74 | {% endhint %} 75 | -------------------------------------------------------------------------------- /development-guide/tutorial/setup-truffle.md: -------------------------------------------------------------------------------- 1 | # Setup truffle 2 | 3 | ## :pencil: Truffle config 4 | 5 | create and edit `truffle-config.js`: 6 | 7 | {% code title="truffle-config.js" %} 8 | ```javascript 9 | module.exports = { 10 | contracts_build_directory: "./src/contract_build", 11 | compilers: { 12 | solc: { 13 | version: '0.5.2' 14 | } 15 | }, 16 | }; 17 | ``` 18 | {% endcode %} 19 | 20 | We specified to use `solc` version `0.5.2` as the contract compiler and we set the contract build directory to `./src/contract_build` because the default build directory is `./build` which conflicts with react application build folder. Another reason is later on we'll use react to load the `Counter.json` from the build directory which must be located inside the `src` directory. 21 | 22 | ## :red\_car: Test out 23 | 24 | You can check if it's setup correctly by running `truffle compile` 25 | 26 | ```bash 27 | truffle compile 28 | ``` 29 | 30 | The command will success and print something like: 31 | 32 | ```bash 33 | Compiling your contracts... 34 | =========================== 35 | > Everything is up to date, there is nothing to compile. 36 | ``` 37 | 38 | {% hint style="info" %} 39 | truffle compile will check the contracts which needs compile to evm byte code. Truffle thinks everything is update to date since we're not having any smart contract in this project. 40 | {% endhint %} 41 | -------------------------------------------------------------------------------- /development-guide/tutorial/the-counter-contract.md: -------------------------------------------------------------------------------- 1 | # The Counter Contract 2 | 3 | ## :pencil: The Code 4 | 5 | Smart contracts are put at the contracts folder. Create the contract folder using: 6 | 7 | ```bash 8 | mkdir contracts 9 | ``` 10 | 11 | {% hint style="info" %} 12 | Placing smart contracts in the contracts folder is a convention of truffle. You can specify a different directory by modifying truffle configuration. Checkout the [conracts\_directory](https://www.trufflesuite.com/docs/truffle/reference/configuration#contracts\_directory) section in truffles document. 13 | {% endhint %} 14 | 15 | Once created the contracts folder , create the `Counter.sol` file with contents below: 16 | 17 | {% code title="Counter.sol" %} 18 | ```bash 19 | pragma solidity >=0.5.0 <0.7.0; 20 | 21 | contract Counter { 22 | uint32 public current_value; 23 | 24 | function inc() public { 25 | require(current_value < 10000, "Counter: max value"); 26 | current_value = current_value + 1; 27 | } 28 | 29 | function dec() public { 30 | require(current_value > 0, "Counter: min value"); 31 | current_value = current_value - 1; 32 | } 33 | } 34 | ``` 35 | {% endcode %} 36 | 37 | ## :star2: Explain 38 | 39 | The contract code is quite self explain: 40 | 41 | * A state variable `current_value` which is an unsigned integer. 42 | * inc() method, which increase the current\_value by one. 43 | * dec() method, which decrease the current\_value by one. 44 | * current\_value has a bound of \[0, 10000] which was checked in inc and dec methods. 45 | 46 | ## :red\_car: Test out 47 | 48 | Run command `truffle compile`, it will find and compiles the Counter contract. you should looks outputs like: 49 | 50 | ```bash 51 | Compiling your contracts... 52 | =========================== 53 | > Compiling ./contracts/Counter.sol 54 | > Artifacts written to ~/counter-dapp/build/contracts 55 | > Compiled successfully using: 56 | - solc: 0.5.2+commit.1df8f40c.Emscripten.clang 57 | ``` 58 | 59 | {% hint style="info" %} 60 | Truffle command will download solidity compiler at the first time. There could be some messages related to the compiler setup. It's normal. 61 | {% endhint %} 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /development-guide/using-metamask.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Interacting with a Clover Node Using MetaMask 3 | --- 4 | 5 | # Using MetaMask 6 | 7 | This guide will show you how to use MetaMask wallet connecting to a self-run Clover standalone node, and sending tokens between accounts. There are two ways to interact with Clover: using Substrate RPC endpoints, or by using Web3-compatible RPC endpoints, which is served from the same Substrate RPC RPC server. In this tutorial, we will use Web3 RPC endpoints. 8 | 9 | ### Installing MetaMask Chrome Extension 10 | 11 | First of all, install the [MetaMask](https://metamask.io) Extension from the Chrome Store. After installation is done, follow the "Get Started" guide to create a wallet, set a password, and keep your secret backup phrases in a secure place. 12 | 13 | Now import the development account: 14 | 15 | ![](../../.gitbook/assets/image.png) 16 | 17 | The information for the pre-funded development account for standalone build are: 18 | 19 | * Private key: `0xa504b64992e478a6846670237a68ad89b6e42e90de0490273e28e74f084c03c8` 20 | * Public address: `0xe6206C7f064c7d77C6d8e3eD8601c9AA435419cE` 21 | 22 | Select “Private Key” and paste the key on the "Import" page, then click the "import" button. 23 | 24 | ![](<../../.gitbook/assets/image (2).png>) 25 | 26 | You will see an imported “Account 2” looks like this: 27 | 28 | ![](<../../.gitbook/assets/image (3).png>) 29 | 30 | ### Connecting to the Local Clover Node 31 | 32 | Now connect MetaMask to your locally running Clover node. It should be producing blocks now: 33 | 34 | ![](../../.gitbook/assets/1608540371482.jpg) 35 | 36 | Back to MetaMask, navigate to Settings -> Networks -> Add Network. Fill in the following Contents: 37 | 38 | * Network Name: `Clover Dev` 39 | * New RPC URL: `http://127.0.0.1:9933` 40 | * ChainID: `1023` 41 | * Symbol (Optional): `CLV` 42 | 43 | ![](<../../.gitbook/assets/image (4).png>) 44 | 45 | When done, click on the "save" button. MetaMask should be connected to the local Clover standalone node via its Web3 RPC. Now you should see the Clover dev account with a balance of 10,000,000 CLV. 46 | 47 | ![](<../../.gitbook/assets/image (5).png>) 48 | 49 | ### Initiating a Transfer 50 | 51 | Now we can try sending tokens with MetaMask. Let's transfer from this dev account to the account we just created while setting up MetaMask, so that we can simply use the “Transfer between my accounts” option. 52 | 53 | First let’s send 100 tokens. Input an amount of 100 ETH and leave all other settings as default. 54 | 55 | Note that the token name may be changed to ETH when you re-login, which is OK for the development purpose. 56 | 57 | ![](<../../.gitbook/assets/image (6).png>) 58 | 59 | Then Click the "Confirm" button to confirm the transaction: 60 | 61 | ![](<../../.gitbook/assets/image (7).png>) 62 | 63 | Once done, you will see the status as “pending” until it is confirmed after a short period. 64 | 65 | ![](<../../.gitbook/assets/image (8).png>) 66 | 67 | The Account 2 balance should now have been decreased by the amount sent plus a gas fee. When switch to Account 1, you should see the 100 tokens has arrived: 68 | 69 | ![](<../../.gitbook/assets/image (9).png>) 70 | 71 | -------------------------------------------------------------------------------- /development-guide/using-web3js/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Using Web3.js to interact with Clover 3 | --- 4 | 5 | # Web3.js 6 | 7 | ### Introduction 8 | 9 | This guide walks through the process of using [web3.js](https://github.com/ethereum/web3.js/) to manually sign and send a transaction to a Clover standalone node. For this example, we will use Node.js and straightforward JavaScript code. 10 | 11 | The guide assumes that you have a local Clover node running in `--dev` mode. You can find instructions to set up a local Clover node [here](https://clover-network.gitbook.io/portal/quick-start/local-node/setting-up-a-node). 12 | 13 | ### Checking Prerequisites 14 | 15 | #### 1. Start Clover node 16 | 17 | Start your standalone Clover node, which can successfully produce blocks in your local environment. 18 | 19 | #### 2. Install Node.js and NPM 20 | 21 | To install Node.js (we'll go for v12.x, you can choose other versions, such as the latest version v15.x) and NPM package manager. You can do this by running the following commands in your terminal: 22 | 23 | For Mac users: 24 | 25 | ``` 26 | brew update 27 | brew install node 28 | ``` 29 | 30 | For Debian users: 31 | 32 | ``` 33 | curl -sL https://deb.nodesource.com/setup_12.x | sudo bash - 34 | sudo apt-get install -y nodejs 35 | ``` 36 | 37 | For Centos/Redhat users: 38 | 39 | ``` 40 | curl -sL https://deb.nodesource.com/setup_12.x | sudo bash - 41 | sudo yum install nodejs 42 | ``` 43 | 44 | We can verify that everything installed correctly by querying the version for each package: 45 | 46 | ``` 47 | node -v 48 | npm -v 49 | ``` 50 | 51 | #### 3. Create your Node.js project 52 | 53 | You can create a repository on your local environment by running: 54 | 55 | ``` 56 | mkdir clover-web3 && cd clover-web3/ 57 | npm init --yes 58 | npm install web3 --save 59 | ``` 60 | -------------------------------------------------------------------------------- /development-guide/using-web3js/query-balance.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Use Web3.js to Query Balance on Clover 3 | --- 4 | 5 | # Query Balance 6 | 7 | We can easily do this by leveraging the Ethereum compatibility features of Clover. 8 | 9 | First let's create a file _balance.js_ under the project we've created. Here we just query the balance of the genesis account, and the genesis account is endowed with **10,000,000** ETH by your local Clover node under the development mode. To get the balances of the account, we need to make an asynchronous function that uses the `web3.eth.getBalance(address)` command. We can take advantage of the `web3.utils.fromWei()` function to transform the balance into a more readable number in ETH. 10 | 11 | The file looks like this: 12 | 13 | ```typescript 14 | const Web3 = require('web3') 15 | 16 | const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:9933')); 17 | const GENESIS_ACCOUNT = '0xe6206C7f064c7d77C6d8e3eD8601c9AA435419cE'; 18 | 19 | async function getBalance(account) { 20 | const balance = await web3.eth.getBalance(account); 21 | const balanceOfEther = web3.utils.fromWei(balance, "ether"); 22 | console.log(`${account} has balance: ${balanceOfEther} ETH`); 23 | } 24 | 25 | getBalance(GENESIS_ACCOUNT); 26 | ``` 27 | 28 | ## Running the Script 29 | 30 | You can run the above script using command : 31 | 32 | ``` 33 | node balance.js 34 | ``` 35 | 36 | The output of the execution is as following: 37 | 38 | ![](<../../../.gitbook/assets/image (1).png>) 39 | -------------------------------------------------------------------------------- /development-guide/using-web3js/send-transaction.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Use Web3.js to Send Transaction on Clover 3 | --- 4 | 5 | # Send Transaction 6 | 7 | For our example, we only need a single JavaScript file (arbitrarily named _transaction.js_) to create and send the transaction, which we will run using the `node` command in the terminal. The script will transfer 100 CLV from the genesis account to another address. For simplicity, the file is divided into three sections: variable definition, create transaction, and send transaction. 8 | 9 | We need to set a couple of values in the variable definitions, then construct and sign the transaction: 10 | 11 | 1. Create your Web3 constructor (`Web3`). 12 | 2. Specify the received address, CLV amount, gas price and gas limit. 13 | 3. Sign the transaction and broadcast it the Clover chain 14 | 15 | The code looks like: 16 | 17 | ```javascript 18 | const Web3 = require('web3') 19 | 20 | const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:9933')); 21 | const GENESIS_ACCOUNT = '0xe6206C7f064c7d77C6d8e3eD8601c9AA435419cE'; 22 | 23 | async function webTransfer(account, etherValue) { 24 | try { 25 | const before = await web3.eth.getBalance(account); 26 | console.log(`before transfer: ${account}, has balance ${web3.utils.fromWei(before, "ether")}`); 27 | 28 | const nonce = await web3.eth.getTransactionCount(GENESIS_ACCOUNT); 29 | const signedTransaction = await web3.eth.accounts.signTransaction({ 30 | from: GENESIS_ACCOUNT, 31 | to: account, 32 | value: web3.utils.toWei(etherValue.toString(), "ether"), 33 | gasPrice: web3.utils.toWei("100", "gwei"), 34 | gas: "0x5208", 35 | nonce: nonce 36 | }, 'your private key configured somewhere'); 37 | await web3.eth.sendSignedTransaction(signedTransaction.rawTransaction); 38 | const after = await web3.eth.getBalance(account); 39 | console.log(`after transfer: ${account}, has balance ${web3.utils.fromWei(after, "ether")}`); 40 | return { success: true }; 41 | } catch (e) { 42 | return { success: false, message: e.toString() }; 43 | } 44 | } 45 | 46 | webTransfer('0x1874FC5f915aa9Fd24C379fE7F9ec40607CEf78A', 100).then(console.log) 47 | ``` 48 | 49 | ## Running the Script 50 | 51 | You can run the above script using command : 52 | 53 | ``` 54 | node transaction.js 55 | ``` 56 | 57 | -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clover-network/clover-docs/1e44ba0ebae0c9dc53544a023361619fb96bc629/docs/.nojekyll -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | docs.ownstack.cn -------------------------------------------------------------------------------- /docs/_media/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Clover Docs 6 | 7 | 8 | 9 | 10 | 11 | 15 | 16 | 17 |
18 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /follow-us.md: -------------------------------------------------------------------------------- 1 | # Follow Us 2 | 3 | ### Useful Links 4 | 5 | * Twitter: [https://twitter.com/clover\_finance](https://twitter.com/clover_finance) 6 | * Medium: [https://medium.com/projectclover](https://medium.com/projectclover) 7 | * LinkedIn: [https://www.linkedin.com/company/projectclover/](https://www.linkedin.com/company/projectclover/) 8 | * Website: [https://clover.finance/](https://clover.finance/) 9 | * Github: [https://github.com/clover-network](https://github.com/clover-network) 10 | * LitePaper: [https://clover.finance/litepaper.pdf](https://clover.finance/litepaper.pdf) 11 | * Docs: [https://docs.clover.finance/](https://docs.clover.finance/) 12 | * Blog: [https://blog.clover.finance/](https://blog.clover.finance/) 13 | 14 | ### Official Community 15 | 16 | * Discord: [https://discord.com/invite/7EFqBwZ3aw](https://discord.com/invite/7EFqBwZ3aw) 17 | * Telegram Group: [https://t.me/clover\_en](https://t.me/clover_en) 18 | * Telegram Channel: [https://t.me/clover\_ann](https://t.me/clover_ann) 19 | * Dev Group: [https://t.me/clover\_dev](https://t.me/clover_dev) 20 | 21 | ### Volunteer Community 22 | 23 | * China: [https://t.me/CloverCN](https://t.me/CloverCN) 24 | * Russia: [https://t.me/clover\_ru](https://t.me/clover_ru) 25 | * Turkey: [https://t.me/clover\_turkiye](https://t.me/clover_turkiye) 26 | * Pakistan & India: [https://t.me/CloverPK\_IN](https://t.me/CloverPK_IN) 27 | * Vietnam: [https://t.me/CloverVN](https://t.me/CloverVN) 28 | 29 | Many thanks to volunteers contributed to Clover Finance 30 | 31 | -------------------------------------------------------------------------------- /maintain/running-a-validator-on-clover-network.md: -------------------------------------------------------------------------------- 1 | # Running a validator on Clover Network 2 | 3 | This guide will instruct you how to set up a Clover validator node on Clover networks (Testnet/Sakura/Mainnet). 4 | 5 | ## :point\_right: Must Read Before Start.... 6 | 7 | Running a validator is a serious thing, you have a lot responsibility for the staked tokens of you and nominators. You take the risk of losing your staked tokens as a slash might happen if your validator node is not properly configured. Please make sure you or your team have the necessary knowledge to run a validator node. 8 | 9 | [Polkadot Wiki ](https://wiki.polkadot.network/docs/en/maintain-guides-how-to-validate-polkadot)has an awesome introduction of running a validator node on the [Polkadot network](https://polkadot.network). As a member of the Polkadot ecosystem, Clover follows the similar process to run and setup a validator node. We may skip some basics steps in this tutorial. 10 | 11 | ## :tools: Hardware Requirements 12 | 13 | * **CPU** - Recent released high end cpu, e.g. Intel 10700/Amd 5800X. 14 | * **Memory** - 32GB for Testnet, 64GB for Sakura and Mainnet. 15 | * **Storage** - 300GB SSD, Storage usage could increase by time, you might need to increase the capacity as the chain data grows.. 16 | * **OS**: Linux, Debian/Ubuntu LTS distributions are recommended. 17 | 18 | ## :wrench: Prepare Environment 19 | 20 | We'll use [docker](https://docs.docker.com/engine/) and [docker-compose](https://docs.docker.com/compose/) to run the validator in this guide. You need to install docker and docker-compose firstly. Please follow the installation guide in the docs. 21 | 22 | * [Docker Install Document](https://docs.docker.com/engine/install/) 23 | * [Docker-Compose Install Document](https://docs.docker.com/compose/install/) 24 | 25 | {% hint style="info" %} 26 | We're using docker to simplify the setup process. You can use the tools which you're familiar with. 27 | {% endhint %} 28 | 29 | ### :satellite\_orbital: Firewall Setup 30 | 31 | Below ports need to be exposed: 32 | 33 | * **30333** - The p2p port of the chain 34 | 35 | ### :file\_folder: Create Directories 36 | 37 | Create the config and data directories using below command: 38 | 39 | ```bash 40 | sudo mkdir -p /opt/data/ 41 | sudo mkdir -p /opt/compose/ 42 | # secure the data access 43 | sudo chmod 0700 /opt/data 44 | sudo chmod 0700 /opt/compose 45 | ``` 46 | 47 | ## :gear: Setup Clover Validator Node 48 | 49 | Currently we only have **Clover Testnet**(iris) and **Clover Mainnet**(ivy) launched. Clover Testnet opens for validators to join. _Clover Mainnet operates in the POA mode and maintained by 6 nodes belongs to Clover foundation_. 50 | 51 | Validator Configuration for Clover Mainnet will be updated later once it's ready for staking and validators can join. 52 | 53 | ### :pencil: Create the Compose configure file 54 | 55 | Create `/opt/compose/docker-compose.yaml` and set the content as below: 56 | 57 | ```yaml 58 | version: "3.8" 59 | services: 60 | clover-validator: 61 | image: "cloverio/clover-ivy:0.1.16" 62 | restart: always 63 | command: 64 | - /opt/clover/bin/clover 65 | - --chain 66 | - /opt/specs/clover-ivy.json 67 | - --base-path 68 | - /opt/chaindata 69 | - --validator 70 | - --name 71 | - 🍀clover-validatornode 72 | - --port 73 | - "30333" 74 | - --ws-port 75 | - "9944" 76 | - --rpc-port 77 | - "9933" 78 | - --rpc-cors=all 79 | - --execution 80 | - wasm 81 | ports: 82 | - "30333:30333" 83 | - "9933:9933" 84 | - "9944:9944" 85 | volumes: 86 | - /opt/data/clover:/opt/chaindata 87 | ``` 88 | 89 | {% hint style="info" %} 90 | You can edit the `docker-compose.yaml` and include your customizations by updating below arguments: 91 | 92 | * image: the docker image used to launch the node, for Clover mainnet, use `cloverio/clover-ivy:0.1.16.`For a full list of clover networks please check out the [Clover Network List](../quick-start/clover-networks.md) page. 93 | * \--_name_: The node name of your validator, the name could be found in the telemetry node list. 94 | * _--unsafe-rpc-external:_ You might need this flag to call the `author_rotateKeys` api, make sure to remove this flag later on for better security. 95 | * Ensure enable the `--exeuction wasm` flag, This is required for all validator nodes. 96 | {% endhint %} 97 | 98 | ## :rocket: Bring up the validator node 99 | 100 | Use below command to bring up the validator node: 101 | 102 | ```bash 103 | cd /opt/compose # goto the compose file directory 104 | docker-compose up # bring up the validator node in the foreground 105 | ## check whether the node starts up normally 106 | ## Ctrl-C stop the node 107 | docker-compose up -d # start the validator node in the daemon mode. 108 | ``` 109 | 110 | You need to check the node logs using `docker-compose logs` command. Wait until the node is synced and the block numbers syncs with the latest number on the chain. 111 | 112 | ## :chart: Bond CLV 113 | 114 | Checkout [Staking](staking-on-clover/) documentation. 115 | 116 | ## :key2: Set the session keys 117 | 118 | Checkout [Polkadot Session Keys](https://wiki.polkadot.network/docs/en/maintain-guides-how-to-validate-polkadot#option-2-cli) documentation. 119 | 120 | ## :stars: Validate 121 | 122 | Checkout [Polkadot Validate](https://wiki.polkadot.network/docs/en/maintain-guides-how-to-validate-polkadot#validate) documentation. 123 | 124 | ## :trident: Links 125 | 126 | * [Clover Testnet Apps](https://apps.clover.finance) 127 | * [Clover Mainnet Apps](https://apps-ivy.clover.finance) 128 | -------------------------------------------------------------------------------- /maintain/staking-on-clover/README.md: -------------------------------------------------------------------------------- 1 | # Staking on Clover 2 | 3 | Clover Ivy network uses NPOS(Nominated Proof-of-Stake) as its consensus mechanism which is the same as [Polkadot](https://polkadot.network) uses. CLV users can participate the consensus as norminators. Norminators may support validator candiates by collatoring their CLV tokens and receive staking rewards. 4 | 5 | This tutorial focuses on how to staking on Clover Ivy netowrk. The detailed information of how staking works could be found at the [Polkadot Staking wiki pages.](https://wiki.polkadot.network/docs/learn-staking) 6 | 7 | ## 8 | 9 | -------------------------------------------------------------------------------- /maintain/staking-on-clover/staking-via-apps.md: -------------------------------------------------------------------------------- 1 | # Staking via Apps 2 | 3 | ## Create Accounts 4 | 5 | You can go to [https://apps-ivy.clover.finance/](https://apps-ivy.clover.finance) to setup the accounts for staking. There are two accounts in Clover: `Stash` and `Controller` . It's recommended to create two separate accounts for `Stash` and `Controller`. And you can import your existing accounts as well. 6 | 7 | ![Stash And Controller accounts.](<../../.gitbook/assets/image (89) (1) (1) (1).png>) 8 | 9 | `Stash` account is the main account of holding your funds. It delegates some staking permission to the `Controller` account. 10 | 11 | ## Set Accounts and CLV Bonded 12 | 13 | To grant the staking permissions to the `Controller` account, You need go to the `Staking/Account Actions` page. Click on the `Nominator` button. 14 | 15 | ![](<../../.gitbook/assets/image (90) (1) (1).png>) 16 | 17 | Then the `Setup up nominator` dialogs show up: 18 | 19 | ![Setup nominator dialog 1](<../../.gitbook/assets/image (94) (1) (1) (1) (1).png>) 20 | 21 | Select your `Stash` and `Controller` accounts and set the value bonded. The payment destination options controls where the staking reward goes. Click `next` button. 22 | 23 | {% hint style="info" %} 24 | Do keep some balances in your stash account(aka, don't bond all of your funds). You still need some funds to pay the transaction fees. 25 | {% endhint %} 26 | 27 | ## Select Nominators 28 | 29 | ![Setup nominator dialog 2](<../../.gitbook/assets/image (93) (1) (1) (1).png>) 30 | 31 | You can select some validator candidates to nominate in the second page. 32 | 33 | {% hint style="warning" %} 34 | Do only select the validators you trust! Picking candidates only on their current profitability could lead to reduced profits or even loss of funds! 35 | 36 | Misbehaved validators will be `slashed` as well as nominators who nominated them. 37 | {% endhint %} 38 | 39 | ## Bond and Nominate 40 | 41 | Confirm and send the transaction and wait for the transaction is included in the block chain. The account details will show in the `Account Details` page. 42 | 43 | ![Nomination details](<../../.gitbook/assets/image (95) (1) (1) (1) (1).png>) 44 | 45 | More actions could be found by clicking on the dots at the right side of the account details: 46 | 47 | ![Account actions](<../../.gitbook/assets/image (91) (1) (1) (1).png>) 48 | 49 | You can: 50 | 51 | 1. Bond more funds 52 | 2. Unbond funds 53 | 3. Change `Controller` account 54 | 4. Change reward destination 55 | 5. Set nominees 56 | -------------------------------------------------------------------------------- /maintain/staking-on-clover/staking-via-clover-wallet.md: -------------------------------------------------------------------------------- 1 | # Staking via Clover Wallet 2 | 3 | ## Prerequisite 4 | 5 | You need to have Clover mobile wallet installed. 6 | 7 | * [Android version](https://play.google.com/store/apps/details?id=com.clover.finance.wallet\&hl=en\_US\&gl=US) 8 | * [IOS version](https://apps.apple.com/app/clover-wallet/id1570072858) 9 | 10 | ## Stake CLV 11 | 12 | The following guide shows how to stake CLV on Clover mobile wallet. 13 | 14 | ### Click the Stake Button 15 | 16 | ![](<../../.gitbook/assets/image (94) (1) (1) (1).png>) 17 | 18 | ### Select Validators to Nominate 19 | 20 | ![](<../../.gitbook/assets/image (93) (1) (1).png>) 21 | 22 | ### Input CLV Amount for Staking 23 | 24 | ![](<../../.gitbook/assets/image (91) (1) (1).png>) 25 | 26 | ### Sign the Transaction 27 | 28 | ![](<../../.gitbook/assets/image (89) (1) (1).png>) 29 | 30 | ## More Actions 31 | 32 | Once you successfully stake your CLV, you can view the transactions on staking detail page. You can do more actions there, for example: 33 | 34 | * Bound more CLV 35 | * Change validators 36 | * Unstake CLV 37 | * Claim staking reword 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /parachain-auction/about-polkadot-parachain-auction.md: -------------------------------------------------------------------------------- 1 | # About Polkadot Parachain Auction 2 | 3 | #### **Polkadot reaches new ATH, Here are the Information about Parachain Auction You Need to Know** 4 | 5 | On November 1st, Polkadot Council approved Motion 122 and entered the referendum phase, which aims to open parallel chain registration and Crowdloan for the Polkadot network. Once approved, the Parallel Chain team will be able to start parallel chain registration and Crowdloan on November 4, 2021. 6 | 7 | Along with the announcement, Polkadot’s native DOT coin has been on the rise for over 100% from a low of $26.05 on Sept. 29 to a new all-time high at $53.35 on Nov. 2. 8 | 9 | It’s likely that traders are looking at the success of the parachain auctions that took place on Polkadot’s sister network, Kusama, and expecting the same to occur for Polkadot. Polkadot communities are also looking forward to contributing DOT to Polkadot Crowdloan module to support their favourite Polkadot projects. 10 | 11 | #### **Polkadot’s Parachain Auctions Approach** 12 | 13 | The Polkadot parachain auction is a way for parachains (Substrate-based independent blockchains) to connect to the Polkadot Multi-chain universe via an open, permissionless auction. The purpose of the auctions is to allocate parachain slots to projects that want to operate on either network. 14 | 15 | These parachain slots are intentionally scarce to encourage competition and the best possible allocation of fixed Relay Chain resources. By limiting the number of available slots, aspiring parachains must outbid each other to earn a lease, both for the initial launch and again for renewal once the lease period expires (On Polkadot, the maximum lease period is 96-weeks). The competition is a great way to help ensure the quality of parachain projects launched on the Polkadot network. 16 | 17 | #### **Projects Eyes on First Batch of Highly Anticipated Polkadot Parachain Auction** 18 | 19 | Many Polkadot ecosystem projects have made announcements of their participation in the upcoming first batch of five Polkadot Parachain slot auctions starting from Nov. 11. Five winning projects would be onboarded to Polkadot simultaneously on Dec. 15, 2021, rather than being onboarded immediately following each auction. 20 | 21 | For one, Clover Finance, a highly regarded blockchain infrastructure platform that focuses on multi-and cross-chain compatibility, interoperability and applications, has just announced their plan to participate in the first batch of auctions. Like many other projects, details of their Crowdloan reward scheme should be released approaching the starting of Polkadot Crowdloan on Nov. 4. 22 | -------------------------------------------------------------------------------- /quick-start/clover-networks.md: -------------------------------------------------------------------------------- 1 | # Clover Networks 2 | 3 | Clover has three different networks, namely parachain, mainnet and testnet. Below are the details of each network. 4 | 5 | ## Clover Parachain 6 | 7 | * **Docker Image**: [clover-para:polkadot-v0.9.12-1](https://hub.docker.com/r/cloverio/clover-para/tags?page=1\&ordering=last\_updated) 8 | * **Apps Portal**: [https://apps-ivy.clover.finance](https://apps-ivy.clover.finance) 9 | * **Blockchain Explorer:** [https://clv.subscan.io/](https://clv.subscan.io) 10 | * **EVM Network id:** 1024 11 | * **RPC Endpoints**: 12 | * https://api-para.clover.finance 13 | * **Api Endpoints**: 14 | 15 | * wss://rpc-para.clover.finance 16 | 17 | 18 | 19 | {% hint style="info" %} 20 | Clover EVM is enabled only on parachain. 21 | {% endhint %} 22 | 23 | ## Clover Mainnet 24 | 25 | * **Docker Image**: [cloverio/clover-ivy:0.1.13 ](https://hub.docker.com/r/cloverio/clover-ivy/tags?page=1\&ordering=last\_updated) 26 | * **Apps Portal**: [https://apps-ivy.clover.finance](https://apps-ivy.clover.finance) 27 | * **Blockchain Explorer:** [https://clover.subscan.io/](https://clover.subscan.io) 28 | * **RPC Endpoints**: 29 | * https://rpc-ivy.clover.finance 30 | * https://rpc-ivy-2.clover.finance 31 | * https://rpc-ivy-3.clover.finance 32 | * **Api Endpoints**: 33 | * wss://api-ivy-elastic.clover.finance 34 | * wss://api-ivy-2.clover.finance 35 | * wss://api-ivy-3.clover.finance 36 | 37 | {% hint style="info" %} 38 | Staking and governance features are enabled only on mainnet. 39 | {% endhint %} 40 | 41 | ## Clover Testnet 42 | 43 | * **Docker Image**: [cloverio/clover-iris:0.1.15 ](https://hub.docker.com/r/cloverio/clover-iris/tags?page=1\&ordering=last\_updated) 44 | * **Apps Portal**: [https://apps.clover.finance](https://apps.clover.finance) 45 | * **EVM Network id:** 1023 46 | * **RPC Endpoints**: 47 | * https://rpc.clover.finance 48 | * https://rpc-2.clover.finance 49 | * https://rpc-3.clover.finance 50 | * **Api Endpoints**: 51 | * wss://api.clover.finance 52 | * wss://api-2.clover.finance 53 | * wss://api-3.clover.finance 54 | -------------------------------------------------------------------------------- /quick-start/sakura-networks.md: -------------------------------------------------------------------------------- 1 | # Sakura Networks 2 | 3 | Sakura is the canary network of Clover, and Sakura is a Kusama parachain. The network information of Sakura is as follows: 4 | 5 | ## Sakura Mainnet 6 | 7 | * **Docker Image**: [cloverio/clover-sakura:0.1.13 ](https://hub.docker.com/r/cloverio/clover-sakura) 8 | * **Apps Portal**: [https://apps-sakura.clover.finance](https://apps-sakura.clover.finance) 9 | * **Api Endpoints**: 10 | * [wss://rpc.sakura.clover.finance](wss://rpc.sakura.clover.finance) 11 | -------------------------------------------------------------------------------- /quick-start/using-local-node.md: -------------------------------------------------------------------------------- 1 | # Using Local Node 2 | 3 | This guide outlines steps to create a standalone local node to test Clover's compatibility with Ethereum. Follow this guide and you will have a Clover node running in your local environment, which can be connected to the default Polkadot JS GUI. 4 | 5 | ## 1. Install build tools & libraries 6 | 7 | Clover is the easiest to be set up on Unix-based operating systems like macOS or Linux. Here is the instruction on installing Rust's toolchains. If you have already done this, please go to the Step 3. 8 | 9 | #### macOS 10 | 11 | Open the Terminal application and execute the following commands: 12 | 13 | ```bash 14 | # Install Homebrew if necessary https://brew.sh/ 15 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" 16 | 17 | # Make sure Homebrew is up-to-date, install openssl and cmake 18 | brew update 19 | brew install openssl cmake 20 | ``` 21 | 22 | #### Ubuntu/Debian 23 | 24 | Use a terminal shell to execute the following commands: 25 | 26 | ```bash 27 | sudo apt update 28 | # May prompt for location information 29 | sudo apt install -y cmake pkg-config libssl-dev git build-essential clang libclang-dev curl 30 | ``` 31 | 32 | #### Arch Linux 33 | 34 | Run these commands from a terminal: 35 | 36 | ```bash 37 | pacman -Syu --needed --noconfirm cmake gcc openssl-1.0 pkgconf git clang 38 | export OPENSSL_LIB_DIR="/usr/lib/openssl-1.0" 39 | export OPENSSL_INCLUDE_DIR="/usr/include/openssl-1.0" 40 | ``` 41 | 42 | ## 2. Install Rust toolchain 43 | 44 | This guide uses [`rustup`](https://rustup.rs) to help manage the Rust toolchain. First, install and configure `rustup`: 45 | 46 | ```bash 47 | # Install 48 | curl https://sh.rustup.rs -sSf | sh 49 | # Configure 50 | source ~/.cargo/env 51 | ``` 52 | 53 | ## 3. Compile the node 54 | 55 | Let's start by cloning the master branch of the Clover repo that you can find here: [https://github.com/clover-network/clover](https://github.com/clover-network/clover) 56 | 57 | ```bash 58 | git clone git@github.com:clover-network/clover.git 59 | cd clover 60 | ``` 61 | 62 | Once you have followed all of the steps above, it's time to build the standalone node by running: 63 | 64 | ```bash 65 | cargo build --release --features clover-testnet 66 | ``` 67 | 68 | {% hint style="info" %} 69 | The initial build will take a while, depending on your hardware. It may take 30 minutes for the build process to complete. 70 | {% endhint %} 71 | 72 | ## 4. Run the Node 73 | 74 | Then you will want to run the node in dev mode using the following command: 75 | 76 | ``` 77 | ./target/release/clover --dev --rpc-cors=all --unsafe-rpc-external --unsafe-ws-external --validator --tmp -lruntime=debug 78 | ``` 79 | 80 | You should see an output that looks like the following, showing that blocks are being produced: 81 | 82 | ![](../.gitbook/assets/1608540371482.jpg) 83 | 84 | {% hint style="info" %} 85 | The local standalone Clover node provides two RPC endpoints: 86 | 87 | * HTTP: `http://127.0.0.1:9933` 88 | * WS: `ws://127.0.0.1:9944` 89 | {% endhint %} 90 | 91 | ### Connecting Polkadot JS Apps to a Local Clover Node 92 | 93 | The locally-running Clover node is a Substrate-based node, so we can interact with it using standard Substrate tools. Let’s start by connecting it with Clover JS Apps.\ 94 | Visit https://apps.clover.finance/#/explorer and you will see Polkadot JS Apps and are automatically connected to the Polkadot MainNet. 95 | 96 | ![](../.gitbook/assets/1609227317438.jpg) 97 | 98 | Click on the top left corner to open the menu and configure the networks, then navigate down to open the Development sub-menu. Select the "Local Node" option which points Polkadot JS Apps to `ws://127.0.0.1:9944`. Next, click on the Switch button and the site should be successfully connected to your standalone Clover node. 99 | 100 | ![](../.gitbook/assets/1609227432992.jpg) 101 | 102 | With Polkadot JS Apps connected, you will see the standalone Clover node producing blocks. 103 | 104 | ![](../.gitbook/assets/1609227552510.jpg) 105 | -------------------------------------------------------------------------------- /quick-start/using-testnet/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: This section shows how to connect to Clover TestNet using MetaMask or Remix 3 | --- 4 | 5 | # TestNet (Iris) 6 | 7 | ## Clover Test Net 8 | 9 | Please refer to the following details for Clover TestNet: 10 | 11 | * Network Name: `Clover TestNet` 12 | * RPC URL: 13 | * `https://rpc.clover.finance` 14 | * `https://rpc-2.clover.finance` 15 | * `https://rpc-3.clover.finance` 16 | * Web Socket URL: 17 | * `wss://api.clover.finance` 18 | * `wss://api-2.clover.finance` 19 | * `wss://api-3.clover.finance` 20 | * ChainID: `1023` 21 | * Symbol (Optional): `CLV` 22 | 23 | {% hint style="info" %} 24 | For a full list of clover networks please check out the [Clover Network List](../clover-networks.md) page. 25 | {% endhint %} 26 | 27 | ## Using MetaMask for TestNet 28 | 29 | In MetaMask, navigate to Settings -> Networks -> Add Network and fill in the above details: 30 | 31 | ![](../../.gitbook/assets/testnet.jpg) 32 | 33 | Then the MetaMask can connect to Clover TestNet. You can apply CLV for test via the faucet [https://faucet-iris.clover.finance/](https://faucet-iris.clover.finance) 34 | 35 | ## Using Remix for Test Net 36 | 37 | Make sure your MetaMask is connected to CloverTestNet as described above. The screen shot is as follows: 38 | 39 | ![](../../.gitbook/assets/remix.jpg) 40 | 41 | ## Connect to Clover TestNet 42 | 43 | If you want to set up a local node, which can connect to Clover TestNet, please use the following command to start your local node: 44 | 45 | ```bash 46 | ./target/release/clover --chain specs/clover-preview-iris.json \ 47 | --port 30333 --ws-port 9944 --rpc-port 9933 \ 48 | --name myNode --rpc-cors=all --rpc-methods=Unsafe \ 49 | --validator --unsafe-ws-external --unsafe-rpc-external \ 50 | --execution wasm 51 | ``` 52 | -------------------------------------------------------------------------------- /quick-start/using-testnet/connect-to-testnet.md: -------------------------------------------------------------------------------- 1 | # Connect to TestNet network 2 | 3 | Please refer to the following details for Clover TestNet: 4 | 5 | * Network Name: `Clover TestNet` 6 | * RPC URL: 7 | * `https://rpc.clover.finance ` 8 | * `https://rpc-2.clover.finance ` 9 | * `https://rpc-3.clover.finance` 10 | * Web Socket URL: 11 | * `wss://api.clover.finance` 12 | * `wss://api-2.clover.finance` 13 | * `wss://api-3.clover.finance` 14 | * ChainID: `1023` 15 | * Symbol (Optional): `CLV` 16 | 17 | ## Using MetaMask for TestNet 18 | 19 | In MetaMask, navigate to Settings -> Networks -> Add Network and fill in the above details: 20 | 21 | ![](../../.gitbook/assets/testnet.jpg) 22 | 23 | Then the MetaMask can connect to Clover TestNet. You can apply CLV for test via the faucet [http://faucet.clovernode.com/](http://faucet.clovernode.com) 24 | 25 | ## Using Remix for TestNet 26 | 27 | Make sure your MetaMask is connected to Clover TestNet as described above. The screen shot is as follows: 28 | 29 | ![](../../.gitbook/assets/remix.jpg) 30 | 31 | ## 32 | -------------------------------------------------------------------------------- /quick-start/using-testnet/create-an-account.md: -------------------------------------------------------------------------------- 1 | # Create an account 2 | 3 | Firstly, open [Clover Apps portal](https://apps.clover.finance/#/explorer) and select the "Clover" node in the network list in the left side navigation bar. 4 | 5 | ![](<../../.gitbook/assets/image (28).png>) 6 | 7 | ## Generate an account using Clover Apps 8 | 9 | #### Click the "Accounts" menu item in the top navigation bar. 10 | 11 | ![](<../../.gitbook/assets/image (29).png>) 12 | 13 | #### New Account 14 | 15 | There're several buttons to add an account: "Add account", "Restore JSON", "Add via Qr", etc. 16 | 17 | ![](<../../.gitbook/assets/image (30).png>) 18 | 19 | Click "Add account" to create a new account. 20 | 21 | ![](<../../.gitbook/assets/image (31).png>) 22 | 23 | After setting the account information click the **"Next"** button. 24 | 25 | ![](<../../.gitbook/assets/image (32).png>) 26 | 27 | Click the **"Save"** button, the account will be created and the backup file will be promoted to download. Save the backup file to a safe location and keep it secret. 28 | 29 | #### Restore account from backup 30 | 31 | You can restore an account by restoring it from the json backup file. 32 | 33 | Click **"Restore JSON"** button 34 | 35 | ![](<../../.gitbook/assets/image (33).png>) 36 | 37 | Select your backup json file and fill the password of the json file then click the "**Restore**" Button. The account will be restored to the account list. 38 | -------------------------------------------------------------------------------- /quick-start/using-testnet/faucet.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Using Clover Faucet to get CLV for testing 3 | --- 4 | 5 | # Faucet 6 | 7 | Open your browser, and navigate to [https://faucet-iris.clover.finance/](https://faucet-iris.clover.finance) . Click the **Twitter** link to compose a tweet with your Clover address (can be EVM format address or Polkadot format address), Paste your twitter link and acquire CLV, the screen shot is as follows: 8 | 9 | ![](<../../.gitbook/assets/faucet (1).jpg>) 10 | -------------------------------------------------------------------------------- /quick-start/using-testnet/run-a-testnet-node.md: -------------------------------------------------------------------------------- 1 | # Run a Clover node 2 | 3 | If you're building dapps or products on a Substrate-based chain like Clover or a custom Substrate implementation, you probably want the ability to run a node-as-a-back-end. After all, it's always better to rely on your own infrastructure than on a third-party-hosted one in this brave new decentralized world. 4 | 5 | This guide will show you how to connect to Clover network, but the same process applies to any other [Substrate](https://substrate.dev/docs/en/)-based chain. First, let's clarify the term _full node_. 6 | 7 | ### Using Docker and Docker Compose 8 | 9 | Make sure you have docker and docker-compose installed using below command: 10 | 11 | ```bash 12 | curl -fsSL https://get.docker.com -o get-docker.sh 13 | sh get-docker.sh 14 | ``` 15 | 16 | To run a clover full node, create a `docker-compose.yaml` file with below content: 17 | 18 | ```yaml 19 | version: "3.8" 20 | services: 21 | clover-node: 22 | image: "cloverio/clover-iris:0.1.15" 23 | restart: always 24 | environment: 25 | ARGS: "--base-path /opt/chaindata --chain /opt/specs/clover-preview-iris.json --port 30333 --ws-port 9944 --rpc-port 9933 --name "clover-node" --rpc-cors=all --validator --unsafe-ws-external --unsafe-rpc-external --rpc-methods=Unsafe" 26 | ports: 27 | - "9933:9933" 28 | - "9944:9944" 29 | - "30333:30333" 30 | - "9615:9615" 31 | volumes: 32 | - /opt/data/dev:/opt/chaindata 33 | ``` 34 | 35 | You're free to edit the name of this node in the ARGS field. 36 | 37 | Now launch the node with below command: 38 | 39 | ```bash 40 | docker-compose up -d 41 | ``` 42 | 43 | You should get clover node runs and syncing data from the test net now. You can monitor the logs with: 44 | 45 | ```bash 46 | docker-compose logs -f --tail 10 clover-node 47 | ``` 48 | 49 | ## Get Substrate 50 | 51 | Follow instructions as outlined [here](https://substrate.dev/docs/en/knowledgebase/getting-started) - note that Windows users will have their work cut out for them. It's better to use a virtual machine instead. 52 | 53 | Test if the installation was successful by running `cargo --version`. 54 | 55 | ``` 56 | λ cargo --version 57 | cargo 1.41.0 (626f0f40e 2019-12-03) 58 | ``` 59 | 60 | ## Clone and Build 61 | 62 | The [clover-network/clover](https://github.com/clover-network/clover) repo's master branch contains the latest Clover code. 63 | 64 | ``` 65 | git clone https://github.com/clover-network/clover 66 | cd clover 67 | ./scripts/init.sh 68 | cargo build --release 69 | ``` 70 | 71 | Alternatively, if you wish to use a specific release, you can check out a specific tag (`v0.8.3` in the example below): 72 | 73 | ``` 74 | git clone https://github.com/clover-network/clover 75 | cd clover 76 | git checkout tags/v0.8.3 77 | ./scripts/init.sh 78 | cargo build --release 79 | ``` 80 | 81 | ## Run 82 | 83 | The built binary will be in the `target/release` folder, called clover. 84 | 85 | ``` 86 | ./target/release/clover --name "My node's name" --chain specs/clover-cc1-raw.json 87 | ``` 88 | 89 | Use the `--help` flag to find out which flags you can use when running the node. For example, if [connecting to your node remotely](https://app.gitbook.com/@clover-network/s/portal/maintain/nodes-and-dapps/set-up-secure-websocket-for-remote-connections/@drafts), you'll probably want to use `--ws-external` and `--rpc-cors all`. 90 | 91 | The syncing process will take a while depending on your bandwidth, processing power, disk speed and RAM. On a $10 DigitalOcean droplet, the process can complete in some 36 hours. 92 | 93 | Congratulations, you're now syncing with Clover. Keep in mind that the process is identical when using any other Substrate chain. 94 | 95 | ## Running an Archive Node 96 | 97 | When running as a simple sync node (above), only the state of the past 256 blocks will be kept. When validating, it defaults to archive mode. To keep the full state use the `--pruning` flag: 98 | 99 | ``` 100 | ./target/release/clover --name "My node's name" --pruning archive 101 | ``` 102 | 103 | It is possible to almost quadruple synchronization speed by using an additional flag: `--wasm-execution Compiled`. Note that this uses much more CPU and RAM, so it should be turned off after the node is in sync. 104 | 105 | ## Using Docker 106 | 107 | Finally, you can use Docker to run your node in a container. Doing this is a bit more advanced so it's best left up to those that either already have familiarity with docker, or have completed the other set-up instructions in this guide. If you would like to connect to your node's WebSockets ensure that you run you node with the `--rpc-external` and `--ws-external` commands. 108 | 109 | ``` 110 | docker run -p 9944:9944 clover-network/clover-iris:0.1.15 --name "calling_home_from_a_docker_container" --rpc-external --ws-external 111 | ``` 112 | -------------------------------------------------------------------------------- /solidity-smart-contracts/bep20-tokens/bind-token-tool.md: -------------------------------------------------------------------------------- 1 | # Bind Token Tool 2 | 3 | -------------------------------------------------------------------------------- /solidity-smart-contracts/blockchain-details/README.md: -------------------------------------------------------------------------------- 1 | # Blockchain Details 2 | 3 | -------------------------------------------------------------------------------- /solidity-smart-contracts/blockchain-details/binance-smart-chain-fullnode.md: -------------------------------------------------------------------------------- 1 | # Binance Smart Chain Fullnode 2 | 3 | ## Fullnodes Functions 4 | 5 | * Stores the full blockchain history on disk and can answer the data request from the network. 6 | * Receives and validates the new blocks and transactions. 7 | * Verifies the states of every accounts. 8 | 9 | ## Supported Platforms 10 | 11 | We support running a full node on `Mac OS X`and `Linux`. 12 | 13 | ## Minimum Requirements 14 | 15 | The hardware must meet certain requirements to run a full node. 16 | 17 | * VPS running recent versions of Mac OS X or Linux. 18 | * 500 GB of free disk space 19 | * 4 cores of CPU and 8 gigabytes of memory \(RAM\). 20 | * A broadband Internet connection with upload/download speeds of at least 1 megabyte per second 21 | 22 | ## Settings 23 | 24 | ### Sync Mode 25 | 26 | * Fast Sync 27 | 28 | The **default** sync mode. Synchronizes a full node doing a fast synchronization by downloading the entire state database, requesting the headers first, and filling in block bodies and receipts afterward. Once the fast sync reaches the best block of the Binance Smart Chain network, it switches to full sync mode. 29 | 30 | * Full Sync 31 | 32 | Synchronizes a full node starting at genesis, verifying all blocks and executing all transactions. This mode is a bit slower than the fast sync mode but comes with increased security. 33 | 34 | ## Steps to Run a Fullnode 35 | 36 | 1.Build from source code 37 | 38 | Make sure that you have installed [Go 1.13+](https://golang.org/doc/install) and have added `GOPATH` to `PATH` environment variable 39 | 40 | ```text 41 | git clone https://github.com/binance-chain/bsc 42 | # Enter the folder clv was cloned into 43 | cd clv 44 | # Comile and install clv 45 | make geth 46 | ``` 47 | 48 | or you can download the pre-build binaries from [release page](https://github.com/binance-chain/bsc/releases/latest) or follow the instructions below: 49 | 50 | ```text 51 | # Linux 52 | wget --no-check-certificate https://github.com/binance-chain/bsc/releases/download/v1.0.2/geth_linux 53 | # MacOS 54 | wget --no-check-certificate https://github.com/binance-chain/bsc/releases/download/v1.0.2/geth_mac 55 | ``` 56 | 57 | 2.Download the config files 58 | 59 | Download `genesis.json` and `config.toml` by: 60 | 61 | ```text 62 | ## mainet 63 | wget --no-check-certificate $(curl -s https://api.github.com/repos/binance-chain/bsc/releases/latest |grep browser_ |grep mainnet |cut -d\" -f4) 64 | unzip mainnet.zip 65 | 66 | ## testnet 67 | wget --no-check-certificate $(curl -s https://api.github.com/repos/binance-chain/bsc/releases/latest |grep browser_ |grep testnet |cut -d\" -f4) 68 | unzip testnet.zip 69 | ``` 70 | 71 | 3.Write genesis state locally 72 | 73 | ```text 74 | geth --datadir node init genesis.json 75 | ``` 76 | 77 | You could see the following output: 78 | 79 | ```text 80 | INFO [05-19|14:53:17.468] Allocated cache and file handles database=/Users/huangsuyu/Downloads/clv/node/geth/chaindata cache=16.00MiB handles=16 81 | INFO [05-19|14:53:17.498] Writing custom genesis block 82 | INFO [05-19|14:53:17.501] Persisted trie from memory database nodes=21 size=56.84KiB time=357.915µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=-574.00B 83 | INFO [05-19|14:53:17.502] Successfully wrote genesis state database=chaindata hash=7d79cc…fb0d1e 84 | INFO [05-19|14:53:17.503] Allocated cache and file handles database=/Users/huangsuyu/Downloads/clv/node/geth/lightchaindata cache=16.00MiB handles=16 85 | INFO [05-19|14:53:17.524] Writing custom genesis block 86 | INFO [05-19|14:53:17.525] Persisted trie from memory database nodes=21 size=56.84KiB time=638.396µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=-574.00B 87 | INFO [05-19|14:53:17.528] Successfully wrote genesis state database=lightchaindata hash=7d79cc…fb0d1e 88 | ``` 89 | 90 | 4.Start your fullnode or a validator node 91 | 92 | ```text 93 | ## start a full node 94 | geth --config ./config.toml --datadir ./node --pprofaddr 0.0.0.0 --metrics --pprof 95 | ``` 96 | 97 | start a validator node 98 | 99 | ```text 100 | ## generate the consensus key and input the password 101 | geth account new --datadir ./node 102 | echo {your-password} > password.txt 103 | geth --config ./config.toml --datadir ./node -unlock {your-validator-address} --password password.txt --mine --allow-insecure-unlock --pprofaddr 0.0.0.0 --metrics --pprof 104 | ``` 105 | 106 | 5.Monitor node status 107 | 108 | you can monitor the log from `/node/clv.log` by default. 109 | 110 | -------------------------------------------------------------------------------- /solidity-smart-contracts/blockchain-details/clv-relayer.md: -------------------------------------------------------------------------------- 1 | # CLV Relayer 2 | 3 | ## Prepare Fund 4 | 5 | 1. Make sure that you have enough BNB in your account. You can get from[ faucet](http://faucet.clovernode.com/) 6 | 7 | If you haven't created your account yet, please follow these [guides](https://docs.binance.org/smart-chain/wallet/metamask.html) to create one first. 8 | 9 | * **100BNB** for relayer register 10 | * More than 50BNB for transaction fee 11 | 12 | Tip 13 | 14 | Currently the bsc-relayer code is not fully prepared. Some features like `db persistence`, `alert`, `prometheus monitor` are still under development. So please don’t modify the configuration about db\_config, alert\_config, instrumentation\_config, admin\_config 15 | 16 | ## Steps to Install CLV Relayer 17 | 18 | 1.Build from source code 19 | 20 | Make sure that you have installed [Go 1.13+](https://golang.org/doc/install) and have added `GOPATH` to `PATH` environment variable 21 | 22 | ```text 23 | git clone https://github.com/binance-chain/bsc-relayer 24 | # Enter the folder bsc was cloned into 25 | cd bsc-relayer 26 | # Comile and install bsc 27 | make build 28 | ``` 29 | 30 | or you can download the pre-build binaries from [release page](https://github.com/binance-chain/smart-chain-binary/tree/master/bsc) 31 | 32 | ## Get Example Config File 33 | 34 | Get example config from this url: [https://github.com/binance-chain/bsc-relayer/blob/master/config/config.json](https://github.com/binance-chain/bsc-relayer/blob/master/config/config.json) 35 | 36 | Edit`config.json` and fill your BSC private key to bsc\_config.private\_key, example private key: `AFD8C5D83F148065176268A9D1EE375A10CEE1E74D15985D4CC63E467EC34DA5` 37 | 38 | * Binance Chain Configuration: 39 | * `mnemonic`: Paste the recovery phrase here. Since bsc-relayer will automaticly submit `double-sign` evidence, if it's committed, the reward will be sent to this address 40 | * Binance Smart Chain Configuration: \* 41 | 42 | ## Start Relayer 43 | 44 | You can start Locally 45 | 46 | ```text 47 | ./bsc-relayer --config-type local --config-path config.json 48 | ``` 49 | 50 | Output: 51 | 52 | ```text 53 | (base) huangsuyudeMacBook-Pro:mac huangsuyu$ bsc-relayer --config-type local --config-path config.json 54 | 2020-05-27 17:01:16 INFO main Start relayer 55 | 2020-05-27 17:01:16 INFO SyncProtocol Sync cross chain protocol from https://github.com/binance-chain/bsc-relayer-config.git 56 | 2020-05-27 17:01:18 INFO RegisterRelayerHub This relayer has already been registered 57 | 2020-05-27 17:01:18 INFO CleanPreviousPackages channelID: 1, next deliver sequence 55 on BSC, next sequence 55 on BC 58 | 2020-05-27 17:01:18 INFO CleanPreviousPackages channelID: 2, next deliver sequence 1273 on BSC, next sequence 1273 on BC 59 | 2020-05-27 17:01:18 INFO CleanPreviousPackages channelID: 3, next deliver sequence 6 on BSC, next sequence 6 on BC 60 | 2020-05-27 17:01:19 INFO CleanPreviousPackages channelID: 8, next deliver sequence 5 on BSC, next sequence 5 on BC 61 | 2020-05-27 17:01:19 INFO RelayerDaemon Start relayer daemon 62 | 2020-05-27 17:01:19 INFO Serve start admin server at 0.0.0.0:8080 63 | ``` 64 | 65 | Or, dynamic Sync Cross Chain Protocol Configuration from [https://github.com/binance-chain/bsc-relayer-config](https://github.com/binance-chain/bsc-relayer-config) 66 | 67 | * Edit config.json and change "cross\_chain\_config.protocol\_config\_type" to "remote". Then relayer will dynamically sync cross chain protocol configuration from this repository: [https://github.com/binance-chain/bsc-relayer-config](https://github.com/binance-chain/bsc-relayer-config) 68 | * Start relayer service 69 | 70 | ```text 71 | ./bsc-relayer --config-type local --config-path config.json 72 | ``` 73 | 74 | ### Verify Status 75 | 76 | You could call [RelayerHub Contract](https://bscscan.com/address/0x0000000000000000000000000000000000001006) to verify that your relayer is registered. Go to [read contract](https://bscscan.com/address/0x0000000000000000000000000000000000001006#readContract) and call **isRelayer** function. If it returns **true**, then your relayer is working properly. 77 | 78 | ## Relayer Rewards 79 | 80 | 1. You can witness the distribution of relayer rewards in the log of system contract: [https://bscscan.com/address/0x0000000000000000000000000000000000001005\#events](https://bscscan.com/address/0x0000000000000000000000000000000000001005#events). According to the design of [Relayer Incentive](https://docs.binance.org/smart-chain/guides/concepts/incentives.html), the rewards will be distributed every 1000 data packages. The total accumulated rewards can be read from [contract](https://bscscan.com/address/0x0000000000000000000000000000000000001005#readContract)the value of `_collectedRewardForHeaderRelayer` and `_collectedRewardForTransferRelayer`. 81 | 2. Query your relayer's status 82 | 83 | The total accumulated relayed count can be read from [contract](https://bscscan.com/address/0x0000000000000000000000000000000000001005#readContract)the value of `_transferRelayersSubmitCount` 84 | 85 | ## Stop Relayer 86 | 87 | To get your locked **100BNB** back, you need to call [RelayerHub Contract](https://bscscan.com/address/0x0000000000000000000000000000000000001006) to unregister your relayer. The fee is **0.1BNB** 88 | 89 | * Go to MyEtherWallet and [interact with contract](https://www.myetherwallet.com/interface/interact-with-contract) 90 | * Fill in the contract addresss: **0x0000000000000000000000000000000000001006** with [abi](https://docs.binance.org/smart-chain/system-smart-contract/relayerhub.abi) interface 91 | * Call **unregister** function and leave value in ETH as 0 92 | * Sign your transaction in **MetaMask** 93 | 94 | -------------------------------------------------------------------------------- /solidity-smart-contracts/blockchain-details/pegged-tokens.md: -------------------------------------------------------------------------------- 1 | # Pegged Tokens 2 | 3 | -------------------------------------------------------------------------------- /solidity-smart-contracts/blockchain-details/rpc.md: -------------------------------------------------------------------------------- 1 | # RPC 2 | 3 | -------------------------------------------------------------------------------- /solidity-smart-contracts/buidl-program.md: -------------------------------------------------------------------------------- 1 | # BUIDL Program 2 | 3 | [BUIDL Program](https://www.binance.com/en/blog/421499824684900972/Bridging-DeFi-and-CeFi-Introducing-a-$100M-Support-Fund-for-DeFi-Projects-on-Binance-Smart-Chain) 4 | 5 | -------------------------------------------------------------------------------- /solidity-smart-contracts/ecosystem/verify-contract.md: -------------------------------------------------------------------------------- 1 | # Verify Contract 2 | 3 | ## Verify Your Contract on BscScan 4 | 5 | The recommended way to verify a smart contract is using plugin. It is easier to read, imports are maintained, licenses are maintained. 6 | 7 | **Verified using Truffle** 8 | 9 | Example: [https://testnet.bscscan.com/token/0x68D2E27940CA48109Fa3DaD0D2C8B27E64a0c6cf](https://testnet.bscscan.com/token/0x68D2E27940CA48109Fa3DaD0D2C8B27E64a0c6cf) 10 | 11 | GitHub Project: [https://github.com/huangsuyu/verify-example](https://github.com/huangsuyu/verify-example) 12 | 13 | ### Truffle 14 | 15 | Truffle has an BscScan plugin: [truffle-plugin-verify](https://github.com/rkalis/truffle-plugin-verify) 16 | 17 | You need to deploy with Truffle to verify with the Truffle verify plugin. 18 | 19 | * Install the plugin 20 | 21 | ```text 22 | npm install -D truffle-plugin-verify 23 | ``` 24 | 25 | * Configure the plugin in `truffle-config.js` 26 | 27 | ```text 28 | const HDWalletProvider = require("@truffle/hdwallet-provider"); 29 | 30 | // const infuraKey = "fj4jll3k....."; 31 | // 32 | const { mnemonic, BSCSCANAPIKEY} = require('./env.json'); 33 | 34 | module.exports = { 35 | 36 | plugins: [ 37 | 'truffle-plugin-verify' 38 | ], 39 | api_keys: { 40 | bscscan: BSCSCANAPIKEY 41 | }, 42 | networks: { 43 | 44 | testnet: { 45 | provider: () => new HDWalletProvider(mnemonic, `https://data-seed-prebsc-1-s1.binance.org:8545`), 46 | network_id: 97, 47 | timeoutBlocks: 200, 48 | confirmations: 5, 49 | production: true // Treats this network as if it was a public net. (default: false) 50 | } 51 | }, 52 | 53 | // Set default mocha options here, use special reporters etc. 54 | mocha: { 55 | timeout: 100000 56 | }, 57 | 58 | // Configure your compilers 59 | compilers: { 60 | solc: { 61 | version: "0.5.16", // Fetch exact version from solc-bin (default: truffle's version) 62 | // docker: true, // Use "0.5.1" you've installed locally with docker (default: false) 63 | settings: { // See the solidity docs for advice about optimization and evmVersion 64 | optimizer: { 65 | enabled: false, 66 | runs: 200 67 | }, 68 | evmVersion: "byzantium" 69 | } 70 | }, 71 | }, 72 | }; 73 | ``` 74 | 75 | -------------------------------------------------------------------------------- /solidity-smart-contracts/tools/gas-price.md: -------------------------------------------------------------------------------- 1 | # Gas Price 2 | 3 | gas price is [here](https://apps.clover.finance/#/explorer) 4 | 5 | -------------------------------------------------------------------------------- /solidity-smart-contracts/tutorial/local-clv-network.md: -------------------------------------------------------------------------------- 1 | # Local CLV Network 2 | 3 | See also : [https://github.com/ethereum/go-ethereum/wiki/Private-network](https://github.com/ethereum/go-ethereum/wiki/Private-network) 4 | 5 | ## Setting up your CLV Node\(s\) 6 | 7 | ### 1. Prereq : Install Geth 8 | 9 | Review the guide [here](https://docs.binance.org/smart-chain/developer/fullnode.html) 10 | 11 | ### 2. Prereq : create /projects 12 | 13 | Create a `/projects` symbolic link _\(Note: This step is simply so "/projects" can be used in all other commands, instead you could use full paths, or set an env var\)_ 14 | 15 | ```text 16 | $ mkdir 17 | $ sudo ln -s /projects 18 | ``` 19 | 20 | ### 3. Create local\_ethereum\_blockchain folder 21 | 22 | ```text 23 | $ mkdir /projects/local_ethereum_blockchain 24 | ``` 25 | 26 | ### 4. Create the genesis block config 27 | 28 | Create this file : `/projects/local_ethereum_blockchain/genesis.json` 29 | 30 | With the following contents : 31 | 32 | ```text 33 | { 34 | "config": { 35 | "chainId": 1337, 36 | "homesteadBlock": 0, 37 | "eip155Block": 0, 38 | "eip158Block": 0 39 | }, 40 | "nonce": "0x0000000000000061", 41 | "timestamp": "0x0", 42 | "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 43 | "gasLimit": "0x8000000", 44 | "difficulty": "0x100", 45 | "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 46 | "coinbase": "0x3333333333333333333333333333333333333333", 47 | "alloc": {} 48 | } 49 | ``` 50 | 51 | \([info about the genesis file](https://ethereum.stackexchange.com/a/2377/2040)\) 52 | 53 | ### 5. Initialise an Ethereum node 54 | 55 | ```text 56 | $ geth --datadir /projects/local_ethereum_blockchain/node1 init /projects/local_ethereum_blockchain/genesis.json 57 | ``` 58 | 59 | ### 6. Start that Ethereum node 60 | 61 | ```text 62 | $ geth --datadir /projects/local_ethereum_blockchain/node1 --networkid 1337 console 63 | ``` 64 | 65 | ### 7. Initialise another Ethereum node 66 | 67 | ```text 68 | $ geth --datadir /projects/local_ethereum_blockchain/node-2 init /projects/local_ethereum_blockchain/genesis.json 69 | ``` 70 | 71 | ### 8. Start the 2nd Ethereum node 72 | 73 | ```text 74 | $ geth --datadir /projects/local_ethereum_blockchain/node-2 --port 30304 --nodiscover --networkid 1000 console 75 | ``` 76 | 77 | ### 9. Connect one node to the other 78 | 79 | In one geth console : 80 | 81 | In the other console : 82 | 83 | ## Useful geth commands 84 | 85 | ### Node info 86 | 87 | ### Peers 88 | 89 | Show peers 90 | 91 | How many peers ? 92 | 93 | ### Create an account 94 | 95 | You need an account to do be able to do things like mining 96 | 97 | _And make sure your remember/save the password!_ 98 | 99 | ### Unlock account 100 | 101 | Neccessary before some actions 102 | 103 | ```text 104 | > personal.unlockAccount( eth.accounts[0] ) 105 | ``` 106 | 107 | ### Start mining 108 | 109 | The first block may take a while to mine, allow a few minutes 110 | 111 | ### Stop mining 112 | 113 | ### Current block number 114 | 115 | ### Details of current block 116 | 117 | ```text 118 | > eth.getBlock( eth.blockNumber ) 119 | ``` 120 | 121 | ### Which node minded the last block 122 | 123 | ```text 124 | > eth.getBlock(eth.blockNumber).miner 125 | ``` 126 | 127 | ### Account balance, in ether 128 | 129 | ```text 130 | > web3.fromWei(eth.getBalance(eth.accounts[0])) 131 | ``` 132 | 133 | ### Transfer ether between accounts 134 | 135 | First get the account numbers by doing 136 | 137 | `> eth.accounts` 138 | 139 | Then unlock the account you are sending from 140 | 141 | `> personal.unlockAccount( )` 142 | 143 | eg. 144 | 145 | `> personal.unlockAccount(eth.accounts[0])` 146 | 147 | Finally transfer 1 ether 148 | 149 | ```text 150 | > eth.sendTransaction({from: "", to: "", value: web3.toWei(1, "ether")}) 151 | ``` 152 | 153 | ### Exit 154 | 155 | \(This will also stop the node from running if it was started using `$ geth console` \(as opposed to `$ geth attach`\)\) 156 | 157 | ## Connect to other nodes on your network 158 | 159 | 1. Get the IP of the node : `$ ifconfig|grep netmask|awk '{print $2}'` 160 | 2. Get the enode of the node : `> admin.nodeInfo.enode` 161 | 3. REPLACE `[::]` in the enode string with the `[]` 162 | 4. On your console `> admin.addPeer(< the enode string with the ip address in it>)` 163 | 164 | -------------------------------------------------------------------------------- /solidity-smart-contracts/untitled-1.md: -------------------------------------------------------------------------------- 1 | # Untitled 2 | 3 | -------------------------------------------------------------------------------- /technical-documentation/clover-evm-bind.md: -------------------------------------------------------------------------------- 1 | # Clover Accounts Binding 2 | 3 | Clover provides an account binding feature. You can bind your Clover address to a Clover EVM address. Once you bind the accounts, you can use one account to interact with both EVM-based blockchains as well as Substrate-based blockchains. 4 | 5 | Here are the features of Clover accounts binding (suppose you have done the accounts binding, for example bind your Clover address: **5DyCG7icXFuq8WtLd7iLi3umczKf84SAvp7w7Rw44RFEU8Yf** with EVM address: **0xe6206C7f064c7d77C6d8e3eD8601c9AA435419cE**) 6 | 7 | 1. The above addresses will have the same balance. Other people can send CLV to any of the above account, and you can receive the CLV. At the same time, you can send CLV to other people using any of the above account. 8 | 2. If you only have CLV in **0xe6206C7f064c7d77C6d8e3eD8601c9AA435419cE**, you can't deploy or interact with Clover smart contract. Once you bind the account with a EVM address, you are able to deploy and interact with Clover smart contract. 9 | 10 | ## How to Bind the Account 11 | 12 | 1. Using Clover Wallet, the version should be above 1.0.3 13 | 2. Using the following sample code: 14 | 15 | ```javascript 16 | const API = require("@polkadot/api") 17 | const Web3 = require("web3") 18 | const web3 = new Web3("https://rpc-2.clover.finance") 19 | const cloverTypes = require('@clover-network/node-types') 20 | 21 | const PUB_KEY = "0xe6206C7f064c7d77C6d8e3eD8601c9AA435419cE" 22 | const PRIV_KEY = "0xa504b64992e478a6846670237a68ad89b6e42e90de0490273e28e74f084c03c8" 23 | const CLOVER_SEEDS = "your 12 seed words" 24 | 25 | async function run() { 26 | const wsProvider = new API.WsProvider('wss://api-2.clover.finance'); 27 | const api = await API.ApiPromise.create({ 28 | provider: wsProvider, 29 | types: cloverTypes 30 | }); 31 | const keyring = new API.Keyring({ type: 'sr25519' }); 32 | const alice = keyring.addFromUri(CLOVER_SEEDS); 33 | let nonce = await api.rpc.system.accountNextIndex(alice.address); 34 | web3.eth.accounts.wallet.add(PRIV_KEY); 35 | let signature = await web3.eth.sign(`clover evm:${web3.utils.bytesToHex(alice.publicKey).slice(2)}`, PUB_KEY); 36 | 37 | await api.tx.evmAccounts 38 | .claimAccount(PUB_KEY, web3.utils.hexToBytes(signature)) 39 | .signAndSend(alice, { 40 | nonce, 41 | }, ({ events = [], status }) => { 42 | if (status.isFinalized) { 43 | console.log(`${alice.address} has bound with EVM address: ${PUB_KEY}`) 44 | } 45 | }); 46 | } 47 | 48 | run() 49 | ``` 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /technical-documentation/clover-evm.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: >- 3 | Clover EVM is based on Frontier, but we make a lot of changes to support 4 | Clover features. Please see the following details. 5 | --- 6 | 7 | # Clover EVM 8 | 9 | ## New Gas Estimation Feature 10 | 11 | Clover EVM is based on Frontier, we find that the gas fee estimation under some cases may fail, such as nested smart contract call. Clover provides a binary search based solution to solve the problem. Please find the details here: 12 | 13 | {% embed url="https://github.com/paritytech/frontier/pull/252" %} 14 | 15 | ## New EVM Economic Incentives 16 | 17 | In order to make developer easily do the development on Clover. Clover EVM support a new economic incentives. The smart contract owner will receive partial of the transaction fee once their contracts are called. Details are: 18 | 19 | * Up to 40% of the transaction fee will be sent to the smart contract owner. 20 | * Up to 60% of the transaction fee will be sent to the miner. 21 | 22 | ## Other EVM Configurations 23 | 24 | Clover change the create\_contract\_limit from 0x6000 to 0xc000, try to reduce the chances that smart contract deployer has to split their big contract for deployment. 25 | -------------------------------------------------------------------------------- /technical-documentation/query-banalnce.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: >- 3 | This section shows how to connect to Clover mainnet and query the account 4 | balance 5 | --- 6 | 7 | # Query Balance 8 | 9 | ## **Prerequisites** 10 | 11 | Install @polkadot/api, the suggested version is ^4.15.1 (equal or above 4.15.1) 12 | 13 | ## Sample code 14 | 15 | ```javascript 16 | const API = require("@polkadot/api") 17 | const cloverTypes = require('@clover-network/node-types'); 18 | 19 | async function getBalance(address) { 20 | const wsProvider = new API.WsProvider('wss://api-ivy.clover.finance'); 21 | const api = await API.ApiPromise.create({ 22 | provider: wsProvider, 23 | types: cloverTypes 24 | }); 25 | const { parentHash } = await api.rpc.chain.getHeader(); 26 | const { 27 | data: { free: balance }, 28 | } = await api.query.system.account.at(parentHash, address); 29 | return balance.toString(); 30 | } 31 | 32 | getBalance('5DZabq7G2m12g1GUuqs66CCAVcmzdWRkXsGxpi4dgXFEcLEb').then(console.log) 33 | ``` 34 | 35 | Furthermore you may use **formatBalance** from **@polkadot/util** to format the display 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /technical-documentation/technical-design-of-clover-wallet.md: -------------------------------------------------------------------------------- 1 | # Technical design of Clover wallet 2 | 3 | -------------------------------------------------------------------------------- /technical-documentation/transaction-finality.md: -------------------------------------------------------------------------------- 1 | # Transaction Finality 2 | 3 | PolkadotJS API provides **signAndSend** function to send a transaction, the callback will yield information around the transaction pool status as well as any events when isInBlock or isFinalized. If you receive the isFinalized event, then your transaction is considered as finality and will never be reverted. 4 | 5 | ## Sample Code 6 | 7 | ```javascript 8 | const API = require("@polkadot/api"); 9 | const cloverTypes = require('@clover-network/node-types'); 10 | 11 | async function sendCLV(address, amount) { 12 | const wsProvider = new API.WsProvider('wss://api-ivy.clover.finance'); 13 | const api = await API.ApiPromise.create({ 14 | provider: wsProvider, 15 | types: cloverTypes 16 | }); 17 | const nonce = await api.rpc.system.accountNextIndex('your CLV address configured somewhere'); 18 | const keyring = new API.Keyring({ type: 'sr25519' }); 19 | const signer = keyring.addFromUri('your seeds configured somewhere'); 20 | return new Promise( (resolve, reject) => { 21 | api.tx.balances 22 | .transfer(address, amount) 23 | .signAndSend(signer, { 24 | nonce, 25 | }, ({ events = [], status }) => { 26 | if (status.isFinalized) { 27 | // filter events and check balances.transfer is succeed 28 | resolve({ success: true }); 29 | } 30 | if (status.isDropped || status.isInvalid || status.isUsurped) { 31 | resolve({ success: false }); 32 | } 33 | }); 34 | }); 35 | } 36 | ``` 37 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility.md: -------------------------------------------------------------------------------- 1 | # Web3 compatibility 2 | 3 | Clover OS is also a Polkadot smart contract chain, which has a full compatibility with web3 application. 4 | 5 | For developers, please use the following web3 http provider to access Clover chain: 6 | 7 | ```text 8 | const Web3 = require("web3"); 9 | const web3 = new Web3("https://rpc.clover.finance"); 10 | ``` 11 | 12 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/README.md: -------------------------------------------------------------------------------- 1 | # Web3 compatibility 2 | 3 | Clover OS is also a Polkadot smart contract chain, which has a full compatibility with web3 application. 4 | 5 | For developers, please use the following web3 http provider to access Clover chain: 6 | 7 | ``` 8 | const Web3 = require("web3"); 9 | const web3 = new Web3("https://rpc.clover.finance"); 10 | ``` 11 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_accounts.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns accounts list 3 | --- 4 | 5 | # eth\_accounts 6 | 7 | ``` 8 | web3.eth.getAccounts([callback]) 9 | ``` 10 | 11 | #### Returns 12 | 13 | An array of addresses controlled by node 14 | 15 | #### Example 16 | 17 | ``` 18 | > web3.eth.getAccounts().then(console.log) 19 | > [ '0x19E7E376E7C213B7E7e7e46cc70A5dD086DAff2A' ] 20 | ``` 21 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_blocknumber.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns highest block number 3 | --- 4 | 5 | # eth\_blockNumber 6 | 7 | ``` 8 | web3.eth.getBlockNumber([callback]) 9 | ``` 10 | 11 | #### Returns 12 | 13 | The number of the most recent block. 14 | 15 | #### Example 16 | 17 | ``` 18 | > web3.eth.getBlockNumber().then(console.log) 19 | > 114913 20 | ``` 21 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_call.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Call contract, returning the output data 3 | --- 4 | 5 | # eth\_call 6 | 7 | ``` 8 | web3.eth.call(callObject [, defaultBlock] [, callback]) 9 | ``` 10 | 11 | #### Parameters 12 | 13 | 1. A transaction object, see [web3.eth.sendTransaction](https://web3js.readthedocs.io/en/v1.3.0/web3-eth.html#eth-sendtransaction-return). For calls the `from` property is optional however it is highly recommended to explicitly set it or it may default to address(0) depending on your node or provider. 14 | 2. (optional) If you pass this parameter it will not use the default block set with [web3.eth.defaultBlock](https://web3js.readthedocs.io/en/v1.3.0/web3-eth.html#eth-defaultblock). Pre-defined block numbers as `"earliest"`, `"latest"` and `"pending"` can also be used. 15 | 3. (optional) Optional callback, returns an error object as first parameter and the result as second. 16 | 17 | #### Returns 18 | 19 | The returned data of the call, e.g. a smart contract functions return value. 20 | 21 | #### Example 22 | 23 | ``` 24 | const abi = JSON.parse('[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"get\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"_value\",\"type\":\"string\"}],\"name\":\"set\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]') 25 | bytecode = '0x608060405234801561001057600080fd5b506040518060400160405280600781526020017f6d7956616c7565000000000000000000000000000000000000000000000000008152506000908051906020019061005c929190610062565b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b61030f806101166000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634ed3885e1461003b5780636d4ce63c146100f6575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610179565b005b6100fe610193565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013e578082015181840152602081019050610123565b50505050905090810190601f16801561016b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b806000908051906020019061018f929190610235565b5050565b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561022b5780601f106102005761010080835404028352916020019161022b565b820191906000526020600020905b81548152906001019060200180831161020e57829003601f168201915b5050505050905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061027657805160ff19168380011785556102a4565b828001600101855582156102a4579182015b828111156102a3578251825591602001919060010190610288565b5b5090506102b191906102b5565b5090565b6102d791905b808211156102d35760008160009055506001016102bb565b5090565b9056fea265627a7a723158209f9d9ab8ca3378404a8af028da3bb61aa36dd8b9e4847ae0c51ce64fbb32b8b164736f6c63430005110032' 26 | const contract = new web3.eth.Contract(abi) 27 | const transaction = contract.deploy({data: bytecode}) 28 | web3.eth.call({ 29 | to : account1, 30 | data : transaction.encodeABI() 31 | }, function(error, result) { 32 | if(!error){ 33 | console.log(result) 34 | }else{ 35 | console.log(error) 36 | } 37 | }); 38 | > 0x 39 | ``` 40 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_chainid.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: >- 3 | Returns the chain ID used for transaction signing at the current best block. 4 | None is returned if not available 5 | --- 6 | 7 | # eth\_chainId 8 | 9 | 10 | 11 | ``` 12 | web3.eth.getChainId([callback]) 13 | ``` 14 | 15 | #### Returns 16 | 17 | Returns chain ID. 18 | 19 | #### Example 20 | 21 | ``` 22 | > web3.eth.getChainId().then(console.log); 23 | > 1023 24 | ``` 25 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_coinbase.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns the coinbase address to which mining rewards will go. 3 | --- 4 | 5 | # eth\_coinbase 6 | 7 | ``` 8 | web3.eth.getCoinbase([callback]) 9 | ``` 10 | 11 | #### Returns 12 | 13 | The coinbase address set in the node for mining rewards 14 | 15 | #### Example 16 | 17 | ``` 18 | > web3.eth.getCoinbase().then(console.log) 19 | > 0x0000000000000000000000000000000000000000 20 | ``` 21 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_estimategas.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Estimate gas needed for execution of given contract 3 | --- 4 | 5 | # eth\_estimateGas 6 | 7 | ``` 8 | web3.eth.estimateGas(callObject [, callback]) 9 | ``` 10 | 11 | #### Parameters 12 | 13 | 1. A transaction object. 14 | 2. (optional) Optional callback, returns an error object as first parameter and the result as second. 15 | 16 | #### Returns 17 | 18 | the used gas for the simulated call/transaction. 19 | 20 | #### Example 21 | 22 | ``` 23 | web3.eth.estimateGas({ 24 | from : account1, 25 | to : account2 26 | }).then(console.log); 27 | > 21000 28 | ``` 29 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_gasprice.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: >- 3 | Returns the current gas price oracle. The gas price is determined by the last 4 | few blocks median gas price. 5 | --- 6 | 7 | # eth\_gasPrice 8 | 9 | ``` 10 | web3.eth.getGasPrice([callback]) 11 | ``` 12 | 13 | #### Returns 14 | 15 | Number string of the current gas price in wei 16 | 17 | #### Example 18 | 19 | ``` 20 | > web3.eth.getGasPrice().then(console.log) 21 | > 1000000000 22 | ``` 23 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_getbalance.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns balance of the given account 3 | --- 4 | 5 | # eth\_getBalance 6 | 7 | 8 | 9 | ``` 10 | web3.eth.getBalance(address [, defaultBlock] [, callback]) 11 | ``` 12 | 13 | #### Parameters 14 | 15 | 1、The address to get the balance of. 16 | 17 | 2、(optional) If you pass this parameter it will not use the default block set with [web3.eth.defaultBlock](https://web3js.readthedocs.io/en/v1.3.0/web3-eth.html#eth-defaultblock). Pre-defined block numbers as `"earliest"`,"latest" and `"pending"` can also be used. 18 | 19 | 3、(optional) Optional callback, returns an error object as first parameter and the result as second. 20 | 21 | #### Returns 22 | 23 | The current balance for the given address in wei. 24 | 25 | #### Example 26 | 27 | ``` 28 | > web3.eth.getBalance("0x063eBCD1dB02320814Acc0721e65f14b8755Ff41").then(console.log) 29 | > 98999296192000000000 30 | ``` 31 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_getblockbynumber.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns block with given number 3 | --- 4 | 5 | # eth\_getBlock 6 | 7 | ``` 8 | web3.eth.getBlock(blockHashOrBlockNumber [, returnTransactionObjects] [, callback]) 9 | ``` 10 | 11 | #### Parameters 12 | 13 | 1. The block number or block hash. Or the string `"earliest"`, `"latest"` or `"pending"` as in the [default block parameter](https://web3js.readthedocs.io/en/v1.3.0/web3-eth.html#eth-defaultblock). 14 | 2. (optional, default `false`) If specified `true`, the returned block will contain all transactions as objects. If `false` it will only contains the transaction hashes. 15 | 3. (optional) Optional callback, returns an error object as first parameter and the result as second. 16 | 17 | #### Returns 18 | 19 | The block object: 20 | 21 | > * `number`: The block number. `null` if a pending block. 22 | > * `hash`: Hash of the block. `null` if a pending block. 23 | > * `parentHash`: Hash of the parent block 24 | > * `sha3Uncles` : SHA3 of the uncles data in the block. 25 | > * `logsBloom`: The bloom filter for the logs of the block. `null` if a pending block. 26 | > * `transactionsRoot`: The root of the transaction trie of the block. 27 | > * `stateRoot` : The root of the final state trie of the block. 28 | > * `miner` : The address of the beneficiary to whom the mining rewards were given. 29 | > * `difficulty` : Integer of the difficulty for this block. 30 | > * `totalDifficulty`: Integer of the total difficulty of the chain until this block. 31 | > * `extraData`: The “extra data” field of this block. 32 | > * `size`: Integer the size of this block in bytes. 33 | > * `gasLimit`: The maximum gas allowed in this block. 34 | > * `gasUsed`: The total used gas by all transactions in this block. 35 | > * `timestamp`: The unix timestamp for when the block was collated. 36 | > * `transactions`: Array of transaction objects, or 32 Bytes transaction hashes depending on the `returnTransactionObjects` parameter. 37 | > * `uncles`: Array of uncle hashes. 38 | > * author : 39 | > * receiptsRoot : 40 | > * sealFields : 41 | > 42 | > #### Example 43 | 44 | > ``` 45 | > //block number 46 | > > web3.eth.getBlock(43458).then(console.log); 47 | > > { 48 | > author: '0xe4a61e41ac64a0e18c22bc3bf0f0e6c9ded3c08d', 49 | > difficulty: '0', 50 | > extraData: '0x', 51 | > gasLimit: 0, 52 | > gasUsed: 0, 53 | > hash: '0x0098d4eb6ec05bf6a7c727310b64ae9bfe1c5fb3ff57a3449bcededa00858015', 54 | > logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 55 | > miner: '0xE4A61E41ac64a0e18c22bc3bF0F0E6c9DeD3C08d', 56 | > number: 43458, 57 | > parentHash: '0x0dd1bb45074703797fbfcb970df49b17e27f72db05af9784279ded0692bbaafd', 58 | > receiptsRoot: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', 59 | > sealFields: [ 60 | > '0x0000000000000000000000000000000000000000000000000000000000000000', 61 | > '0x0000000000000000' 62 | > ], 63 | > sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', 64 | > size: 509, 65 | > stateRoot: '0x341e4f8c138596ef775ee35c82d196b1b97dc5ee2b4c474bff0d0437da9e355c', 66 | > timestamp: 1609917924, 67 | > totalDifficulty: null, 68 | > transactions: [], 69 | > transactionsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421', 70 | > uncles: [] 71 | > } 72 | > ``` 73 | 74 | ``` 75 | //block hash 76 | > web3.eth.getBlock("0x0098d4eb6ec05bf6a7c727310b64ae9bfe1c5fb3ff57a3449bcededa00858015",true).then(console.log) 77 | > { 78 | author: '0xe4a61e41ac64a0e18c22bc3bf0f0e6c9ded3c08d', 79 | difficulty: '0', 80 | extraData: '0x', 81 | gasLimit: 0, 82 | gasUsed: 0, 83 | hash: '0x0098d4eb6ec05bf6a7c727310b64ae9bfe1c5fb3ff57a3449bcededa00858015', 84 | logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 85 | miner: '0xE4A61E41ac64a0e18c22bc3bF0F0E6c9DeD3C08d', 86 | number: 43458, 87 | parentHash: '0x0dd1bb45074703797fbfcb970df49b17e27f72db05af9784279ded0692bbaafd', 88 | receiptsRoot: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', 89 | sealFields: [ 90 | '0x0000000000000000000000000000000000000000000000000000000000000000', 91 | '0x0000000000000000' 92 | ], 93 | sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', 94 | size: 509, 95 | stateRoot: '0x341e4f8c138596ef775ee35c82d196b1b97dc5ee2b4c474bff0d0437da9e355c', 96 | timestamp: 1609917924, 97 | totalDifficulty: null, 98 | transactions: [], 99 | transactionsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421', 100 | uncles: [] 101 | } 102 | 103 | ``` 104 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_getblocktransactioncountbynumber.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns the number of transactions in a block with given block number 3 | --- 4 | 5 | # eth\_getBlockTransactionCount 6 | 7 | ``` 8 | web3.eth.getBlockTransactionCount(blockHashOrBlockNumber [, callback]) 9 | ``` 10 | 11 | #### Parameters 12 | 13 | 1. The block number or hash. Or the string `"earliest"`, `"latest"` or `"pending"` as in the [default block parameter](https://web3js.readthedocs.io/en/v1.3.0/web3-eth.html#eth-defaultblock). 14 | 2. (optional) Optional callback, returns an error object as first parameter and the result as second. 15 | 16 | #### Returns 17 | 18 | The number of transactions in the given block. 19 | 20 | #### Example 21 | 22 | ``` 23 | > web3.eth.getBlockTransactionCount(43458).then(console.log) 24 | > 0 25 | ``` 26 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_getcode.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns the code at given address at given time (block number) 3 | --- 4 | 5 | # eth\_getCode 6 | 7 | ``` 8 | web3.eth.getCode(address [, defaultBlock] [, callback]) 9 | ``` 10 | 11 | #### Parameters 12 | 13 | 1. The address to get the code from. 14 | 2. (optional) If you pass this parameter it will not use the default block set with [web3.eth.defaultBlock](https://web3js.readthedocs.io/en/v1.3.0/web3-eth.html#eth-defaultblock). Pre-defined block numbers as `"earliest"`, `"latest"` and `"pending"` can also be used. 15 | 3. Optional callback, returns an error object as first parameter and the result as second. 16 | 17 | #### Returns 18 | 19 | The data at given address `address` 20 | 21 | #### Example 22 | 23 | ``` 24 | > web3.eth.getCode("0x063eBCD1dB02320814Acc0721e65f14b8755Ff41").then(console.log); 25 | > 0x 26 | ``` 27 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_getfilterchanges.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns filter changes since last poll 3 | --- 4 | 5 | # eth\_getFilterChanges 6 | 7 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_getfilterlogs.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns all logs matching given filter (in a range 'from' - 'to') 3 | --- 4 | 5 | # eth\_getFilterLogs 6 | 7 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_getlogs.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns logs matching given filter object 3 | --- 4 | 5 | # eth\_getLogs 6 | 7 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_getstorageat.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns content of the storage at given address 3 | --- 4 | 5 | # eth\_getStorageAt 6 | 7 | ``` 8 | web3.eth.getStorageAt(address, position [, defaultBlock] [, callback] 9 | ``` 10 | 11 | #### Parameters 12 | 13 | 1、The address to get the storage from. 14 | 15 | 2、The index position of the storage. 16 | 17 | 3、(optional) If you pass this parameter it will not use the default block set with [web3.eth.defaultBlock](https://web3js.readthedocs.io/en/v1.3.0/web3-eth.html#eth-defaultblock). Pre-defined block numbers as `"earliest"`, `"latest"` and `"pending"` can also be used. 18 | 19 | 4、(optional) Optional callback, returns an error object as first parameter and the result as second. 20 | 21 | #### Returns 22 | 23 | The value in storage at the given position. 24 | 25 | #### Example 26 | 27 | ``` 28 | > web3.eth.getStorageAt("0x063eBCD1dB02320814Acc0721e65f14b8755Ff41", 0).then(console.log) 29 | > 0x0000000000000000000000000000000000000000000000000000000000000000 30 | ``` 31 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_gettransactionbyblockhashandindex.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: >- 3 | Returns a transaction based on a block hash and the transaction’s index 4 | position. 5 | --- 6 | 7 | # eth\_getTransactionByBlockHashAndIndex 8 | 9 | ``` 10 | web3.eth.getTransactionByBlockHashAndIndex(BlockHash, indexNumber [, callback]) 11 | ``` 12 | 13 | #### Parameters 14 | 15 | 1. A block hash . 16 | 2. The transaction’s index position. 17 | 3. Optional callback, returns an error object as first parameter and the result as second. 18 | 19 | #### Returns 20 | 21 | A transaction object its hash `transactionHash`: 22 | 23 | > * `hash` : Hash of the transaction. 24 | > * `nonce`: The number of transactions made by the sender prior to this one. 25 | > * `blockHash`: Hash of the block where this transaction was in. `null` if pending. 26 | > * `blockNumber`: Block number where this transaction was in. `null` if pending. 27 | > * `transactionIndex`: Integer of the transactions index position in the block. `null` if pending. 28 | > * `from`: Address of the sender. 29 | > * `to`: Address of the receiver. `null` if it’s a contract creation transaction. 30 | > * `value`: Value transferred in wei. 31 | > * `gasPrice`: Gas price provided by the sender in wei. 32 | > * `gas`: Gas provided by the sender. 33 | > * `input` : The data sent along with the transaction. 34 | 35 | #### Example 36 | 37 | ``` 38 | web3.eth.getTransactionByBlockHashAndIndex("0xfb8d7ee8fb5f4fbebf41a55caa5e988a480a0ce277813cd1ec4443c54f601ddd",0).then(console.log) 39 | > { 40 | "blockHash":"0xfb8d7ee8fb5f4fbebf41a55caa5e988a480a0ce277813cd1ec4443c54f601ddd", 41 | "blockNumber":"0x8", 42 | "chainId":"0x539", 43 | "creates":null, 44 | "from":"0xe6206c7f064c7d77c6d8e3ed8601c9aa435419ce", 45 | "gas":"0x5208", 46 | "gasPrice":"0x3b9aca00", 47 | "hash":"0x7893da51d25cad2c10ab946e5b770a21a99b9c9ccff8f595f8222dd9f2e2013b", 48 | "input":"0x", 49 | "nonce":"0x0", 50 | "publicKey":"0x8c9a51a90433508cec6ce29b993284a0e8d0835b38d3ced62216800db588a6d55fa2c114fab798977763ffe94a03b1a591c48d972d4daa6ba7810c80528644f4", 51 | "r":"0x8f59b2e2a2a07e82067fea3903402a30e7a78176e50827678075271decd19179", 52 | "raw":"0xf86e80843b9aca00825208942193517101eb10ef22f2fa67ef452f66c51839d3896c6b935b8bbd40000080820a96a08f59b2e2a2a07e82067fea3903402a30e7a78176e50827678075271decd19179a01d0c193a99e5ecce21a40ff18e20e0bf4e1751e5308b3e09acc42d0a53b4b3d7", 53 | "s":"0x1d0c193a99e5ecce21a40ff18e20e0bf4e1751e5308b3e09acc42d0a53b4b3d7", 54 | "standardV":"0x1","to":"0x2193517101eb10ef22f2fa67ef452f66c51839d3", 55 | "transactionIndex":"0x0", 56 | "v":"0xa96", 57 | "value":"0x6c6b935b8bbd400000" 58 | } 59 | ``` 60 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_gettransactionbyblocknumberandindex.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: >- 3 | Returns a transaction based on a block number and the transaction’s index 4 | position. 5 | --- 6 | 7 | # eth\_getTransactionByBlockNumberAndIndex 8 | 9 | ``` 10 | web3.eth.getTransactionByBlockNumberAndIndex(BlockNumber, indexNumber [, callback]) 11 | ``` 12 | 13 | #### Parameters 14 | 15 | 1. A block number . 16 | 2. The transaction’s index position. 17 | 3. Optional callback, returns an error object as first parameter and the result as second. 18 | 19 | #### Returns 20 | 21 | A transaction object its hash `transactionHash`: 22 | 23 | > * `hash` : Hash of the transaction. 24 | > * `nonce`: The number of transactions made by the sender prior to this one. 25 | > * `blockHash`: Hash of the block where this transaction was in. `null` if pending. 26 | > * `blockNumber`: Block number where this transaction was in. `null` if pending. 27 | > * `transactionIndex`: Integer of the transactions index position in the block. `null` if pending. 28 | > * `from`: Address of the sender. 29 | > * `to`: Address of the receiver. `null` if it’s a contract creation transaction. 30 | > * `value`: Value transferred in wei. 31 | > * `gasPrice`: Gas price provided by the sender in wei. 32 | > * `gas`: Gas provided by the sender. 33 | > * `input` : The data sent along with the transaction. 34 | 35 | #### Example 36 | 37 | ``` 38 | web3.eth.getTransactionByBlockNumberAndIndex("0x8",0).then(console.log) 39 | > { 40 | "blockHash":"0xfb8d7ee8fb5f4fbebf41a55caa5e988a480a0ce277813cd1ec4443c54f601ddd", 41 | "blockNumber":"0x8", 42 | "chainId":"0x539", 43 | "creates":null, 44 | "from":"0xe6206c7f064c7d77c6d8e3ed8601c9aa435419ce", 45 | "gas":"0x5208", 46 | "gasPrice":"0x3b9aca00", 47 | "hash":"0x7893da51d25cad2c10ab946e5b770a21a99b9c9ccff8f595f8222dd9f2e2013b", 48 | "input":"0x", 49 | "nonce":"0x0", 50 | "publicKey":"0x8c9a51a90433508cec6ce29b993284a0e8d0835b38d3ced62216800db588a6d55fa2c114fab798977763ffe94a03b1a591c48d972d4daa6ba7810c80528644f4", 51 | "r":"0x8f59b2e2a2a07e82067fea3903402a30e7a78176e50827678075271decd19179", 52 | "raw":"0xf86e80843b9aca00825208942193517101eb10ef22f2fa67ef452f66c51839d3896c6b935b8bbd40000080820a96a08f59b2e2a2a07e82067fea3903402a30e7a78176e50827678075271decd19179a01d0c193a99e5ecce21a40ff18e20e0bf4e1751e5308b3e09acc42d0a53b4b3d7", 53 | "s":"0x1d0c193a99e5ecce21a40ff18e20e0bf4e1751e5308b3e09acc42d0a53b4b3d7", 54 | "standardV":"0x1","to":"0x2193517101eb10ef22f2fa67ef452f66c51839d3", 55 | "transactionIndex":"0x0", 56 | "v":"0xa96", 57 | "value":"0x6c6b935b8bbd400000" 58 | } 59 | ``` 60 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_gettransactioncount.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: >- 3 | Returns the number of transactions sent from given address at given time 4 | (block number) 5 | --- 6 | 7 | # eth\_getTransactionCount 8 | 9 | ``` 10 | web3.eth.getTransactionCount(address [, defaultBlock] [, callback]) 11 | ``` 12 | 13 | #### Parameters 14 | 15 | 1. The address to get the numbers of transactions from. 16 | 2. (optional) If you pass this parameter it will not use the default block set with [web3.eth.defaultBlock](https://web3js.readthedocs.io/en/v1.3.0/web3-eth.html#eth-defaultblock). Pre-defined block numbers as `"earliest"`, `"latest"` and `"pending"` can also be used. 17 | 3. (optional) Optional callback, returns an error object as first parameter and the result as second. 18 | 19 | #### Returns 20 | 21 | The number of transactions sent from the given address. 22 | 23 | #### Example 24 | 25 | ``` 26 | > web3.eth.getTransactionCount("0x063eBCD1dB02320814Acc0721e65f14b8755Ff41").then(console.log) 27 | > 12 28 | ``` 29 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_gettransactionreceipt.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns transaction receipt by transaction hash 3 | --- 4 | 5 | # eth\_getTransactionReceipt 6 | 7 | ``` 8 | web3.eth.getTransactionReceipt(hash [, callback]) 9 | ``` 10 | 11 | #### Parameters 12 | 13 | 1. The transaction hash. 14 | 2. (optional) Optional callback, returns an error object as first parameter and the result as second. 15 | 16 | #### Returns 17 | 18 | A transaction receipt object, or `null` if no receipt was found: 19 | 20 | > * `status`: `TRUE` if the transaction was successful, `FALSE` if the EVM reverted the transaction. 21 | > * `blockHash`: Hash of the block where this transaction was in. 22 | > * `blockNumber`: Block number where this transaction was in. 23 | > * `transactionHash`: Hash of the transaction. 24 | > * `transactionIndex`: Integer of the transactions index position in the block. 25 | > * `from`: Address of the sender. 26 | > * `to`: Address of the receiver. `null` when it’s a contract creation transaction. 27 | > * `contractAddress`: The contract address created, if the transaction was a contract creation, otherwise `null`. 28 | > * `cumulativeGasUsed`: The total amount of gas used when this transaction was executed in the block. 29 | > * `gasUsed`: The amount of gas used by this specific transaction alone. 30 | > * `logs`: Array of log objects, which this transaction generated. 31 | > * `internalTransactions`: 32 | > * `logsBloom`: 33 | > 34 | > #### Example 35 | 36 | > ``` 37 | > web3.eth.getTransactionReceipt('0x6d7d750cea87c11ade7852ce02a0a10617f1877995591057f99f66c4d9a350a3').then(console.log) 38 | > > { 39 | > blockHash: '0x79275dcda076bd6d07774318ae7cd74b9f7141b4e6242b1501b2ca25edb35684', 40 | > blockNumber: 54550, 41 | > contractAddress: null, 42 | > cumulativeGasUsed: 21000, 43 | > from: '0x063ebcd1db02320814acc0721e65f14b8755ff41', 44 | > gasUsed: 21000, 45 | > internalTransactions: [ 46 | > { 47 | > developer: null, 48 | > developerReward: null, 49 | > from: '0x063ebcd1db02320814acc0721e65f14b8755ff41', 50 | > gasUsed: '0x0', 51 | > to: '0x69d8fa34508c43c8533a32ab278addde2820556b' 52 | > } 53 | > ], 54 | > logs: [], 55 | > logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 56 | > status: true, 57 | > to: '0x69d8fa34508c43c8533a32ab278addde2820556b', 58 | > transactionHash: '0x6d7d750cea87c11ade7852ce02a0a10617f1877995591057f99f66c4d9a350a3', 59 | > transactionIndex: 0 60 | > } 61 | > ``` 62 | > 63 | > #### 64 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_getunclebyblocknumberandindex.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns an uncles at given block and index 3 | --- 4 | 5 | # eth\_getUncle 6 | 7 | ``` 8 | web3.eth.getUncle(blockHashOrBlockNumber, uncleIndex [, returnTransactionObjects] [, callback]) 9 | ``` 10 | 11 | #### Parameters 12 | 13 | 1. The block number or hash. Or the string `"earliest"`, `"latest"` or `"pending"` as in the [default block parameter](https://web3js.readthedocs.io/en/v1.3.0/web3-eth.html#eth-defaultblock). 14 | 2. The index position of the uncle. 15 | 3. (optional, default `false`) If specified `true`, the returned block will contain all transactions as objects. By default it is `false` so, there is no need to explictly specify false. And, if `false` it will only contains the transaction hashes. 16 | 4. (optional) Optional callback, returns an error object as first parameter and the result as second. 17 | 18 | #### Returns 19 | 20 | the returned uncle 21 | 22 | ``` 23 | ``` 24 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_getunclecountbyblockhash.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns the number of uncles in a block with given hash 3 | --- 4 | 5 | # eth\_getBlockUncleCount 6 | 7 | ``` 8 | web3.eth.getBlockUncleCount(blockHashOrBlockNumber [, callback]) 9 | ``` 10 | 11 | #### Parameters 12 | 13 | 1. The block number or hash. Or the string `"earliest"`, `"latest"` or `"pending"` as in the [default block parameter](https://web3js.readthedocs.io/en/v1.3.0/web3-eth.html#eth-defaultblock). 14 | 2. (optional) Optional callback, returns an error object as first parameter and the result as second. 15 | 16 | #### Returns 17 | 18 | The number of transactions in the given block. 19 | 20 | #### Example 21 | 22 | ``` 23 | > web3.eth.getBlockUncleCount(43458).then(console.log) 24 | > 0 25 | ``` 26 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_getwork.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: >- 3 | Returns the hash of the current block, the seedHash, and the boundary 4 | condition to be met 5 | --- 6 | 7 | # eth\_getWork 8 | 9 | ``` 10 | web3.eth.getWork([callback]) 11 | ``` 12 | 13 | #### Parameters 14 | 15 | 1. (optional) Optional callback, returns an error object as first parameter and the result as second. 16 | 17 | #### Returns 18 | 19 | the mining work with the following structure: 20 | 21 | > * current block header pow-hash 22 | > * the seed hash used for the DAG. 23 | > * the boundary condition (“target”), 2^256 / difficulty. 24 | > 25 | > #### Example 26 | 27 | ``` 28 | web3.eth.getWork().then(console.log) 29 | > [ 30 | '0x0000000000000000000000000000000000000000000000000000000000000000', 31 | '0x0000000000000000000000000000000000000000000000000000000000000000', 32 | '0x0000000000000000000000000000000000000000000000000000000000000000' 33 | ] 34 | ``` 35 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_hashrate.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns the number of hashes per second that the node is mining with 3 | --- 4 | 5 | # eth\_hashrate 6 | 7 | ``` 8 | web3.eth.getHashrate([callback]) 9 | ``` 10 | 11 | #### Returns 12 | 13 | Number of hashes per second 14 | 15 | #### Example 16 | 17 | ``` 18 | > web3.eth.getHashrate().then(console.log) 19 | > 0 20 | ``` 21 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_mining.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns true if client is actively mining new blocks 3 | --- 4 | 5 | # eth\_mining 6 | 7 | ``` 8 | web3.eth.isMining([callback]) 9 | ``` 10 | 11 | #### Returns 12 | 13 | `true` if the node is mining, otherwise `false` 14 | 15 | #### Example 16 | 17 | ``` 18 | > web3.eth.isMining().then(console.log) 19 | > true 20 | ``` 21 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_newblockfilter.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns id of new block filter 3 | --- 4 | 5 | # eth\_newBlockFilter 6 | 7 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_newfilter.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns id of new filter 3 | --- 4 | 5 | # eth\_newFilter 6 | 7 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_newpendingtransactionfilter.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns id of new block filter 3 | --- 4 | 5 | # eth\_newPendingTransactionFilter 6 | 7 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_protocolversion.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns protocol version encoded as a string 3 | --- 4 | 5 | # eth\_protocolVersion 6 | 7 | ``` 8 | web3.eth.getProtocolVersion([callback]) 9 | ``` 10 | 11 | #### Returns 12 | 13 | Promise returns String: the protocol version. 14 | 15 | #### Example 16 | 17 | ``` 18 | > web3.eth.getProtocolVersion().then(console.log) 19 | > 1 20 | ``` 21 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_sendrawtransaction.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Sends signed transaction, returning its hash 3 | --- 4 | 5 | # eth\_sendSignedTransaction 6 | 7 | ``` 8 | web3.eth.sendSignedTransaction(signedTransactionData [, callback]) 9 | ``` 10 | 11 | #### Parameters 12 | 13 | 1. Signed transaction data in HEX format 14 | 2. (optional) Optional callback, returns an error object as first parameter and the result as second 15 | 16 | #### Returns 17 | 18 | The callback will return the 32 bytes transaction hash. 19 | 20 | #### Example 21 | 22 | ``` 23 | > web3.eth.accounts.signTransaction({ 24 | from : "0x063eBCD1dB02320814Acc0721e65f14b8755Ff41", 25 | to : "0x69d8fa34508C43C8533a32ab278aDDDE2820556b", 26 | value : web3.utils.toWei('0.1', 'ether'), 27 | gas : web3.utils.toHex(21000), 28 | gasPrice : web3.utils.toWei("1", "gwei"), 29 | nonce : 19 30 | },"e0855c1ec13690c826ee767be03937fa5bce1d621ca780d2ac487574bf8d74d2",function(err,raw){ 31 | if(!err){ 32 | web3.eth.sendSignedTransaction(raw.rawTransaction, function(error, result){ 33 | if(!error){ 34 | console.log(result) 35 | }else{ 36 | console.log(error) 37 | } 38 | }) 39 | }else{ 40 | console.log(err) 41 | } 42 | }); 43 | > 0x52e5f6347bdbf6fe1d8acb07bb460ce31d82bb36e80acfdc8aca798e28415334 44 | ``` 45 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_sendtransaction.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: >- 3 | Sends transaction; will block waiting for signer to return the transaction 4 | hash 5 | --- 6 | 7 | # eth\_sendTransaction 8 | 9 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_submithashrate.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Used for submitting mining hashrate 3 | --- 4 | 5 | # eth\_submitHashrate 6 | 7 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_submitwork.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Used for submitting a proof-of-work solution 3 | --- 4 | 5 | # eth\_submitWork 6 | 7 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_subscribe.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Subscribe to Eth subscription 3 | --- 4 | 5 | # eth\_subscribe 6 | 7 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_syncing.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns an object with data about the sync status or false 3 | --- 4 | 5 | # eth\_syncing 6 | 7 | ``` 8 | web3.eth.isSyncing([callback]) 9 | ``` 10 | 11 | #### Returns 12 | 13 | A sync object when the node is currently syncing or `false`: 14 | 15 | > * `startingBlock` - `Number`: The block number where the sync started. 16 | > * `currentBlock` - `Number`: The block number where the node is currently synced to. 17 | > * `highestBlock` - `Number`: The estimated block number to sync to. 18 | > * `knownStates` - `Number`: The number of estimated states to download. 19 | > * `pulledStates` - `Number`: The number of already downloaded states. 20 | 21 | #### Example 22 | 23 | ``` 24 | > web3.eth.isSyncing().then(console.log) 25 | > false 26 | ``` 27 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_uninstallfilter.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Uninstalls filter 3 | --- 4 | 5 | # eth\_uninstallFilter 6 | 7 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/eth_unsubscribe.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Unsubscribe from existing Eth subscription 3 | --- 4 | 5 | # eth\_unsubscribe 6 | 7 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/net_listening.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: >- 3 | Returns true if client is actively listening for network connections. 4 | Otherwise false 5 | --- 6 | 7 | # net\_listening 8 | 9 | ``` 10 | web3.eth.net.Listening 11 | ``` 12 | 13 | #### Parameters 14 | 15 | none 16 | 17 | #### Returns 18 | 19 | returns `Boolean:`that the connected node is listening for network requests. 20 | 21 | #### Example 22 | 23 | ``` 24 | const Listening = web3.net.Listening 25 | console.log(Listening); 26 | > true 27 | ``` 28 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/net_peercount.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns number of peers connected to node 3 | --- 4 | 5 | # net\_peerCount 6 | 7 | ``` 8 | web3.net.peerCount 9 | ``` 10 | 11 | #### Parameters 12 | 13 | none 14 | 15 | #### Returns 16 | 17 | The number of other Ethereum nodes connected to the node. 18 | 19 | #### Example 20 | 21 | ``` 22 | var peerCount = web3.net.peerCount; 23 | console.log(peerCount); 24 | > 5 25 | ``` 26 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/net_version.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns the current network id 3 | --- 4 | 5 | # net\_version 6 | 7 | ``` 8 | web3.net.version 9 | ``` 10 | 11 | **Parameters** 12 | 13 | none 14 | 15 | **Returns** 16 | 17 | The current network id. 18 | 19 | **Example** 20 | 21 | ``` 22 | var version = web3.net.version; 23 | console.log(version); 24 | > 1023 25 | ``` 26 | 27 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/web3_clientversion.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns current client version 3 | --- 4 | 5 | # web3\_clientVersion 6 | 7 | ``` 8 | web3.clientVersion 9 | ``` 10 | 11 | #### Returns 12 | 13 | The current version. 14 | 15 | #### Example 16 | 17 | ``` 18 | const clientVersion = web3.clientVersion 19 | console.log(clientVersion) 20 | > clover/v11.1/fc-rpc-0.1.0-clover 21 | ``` 22 | 23 | -------------------------------------------------------------------------------- /technical-documentation/web3-compatibility/web3_sha3.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Returns sha3 of the given data 3 | --- 4 | 5 | # web3\_sha3 6 | 7 | ``` 8 | web3.sha3(SHA3hash) 9 | ``` 10 | 11 | **Parameters** 12 | 13 | the data to convert into a SHA3 hash 14 | 15 | **Returns** 16 | 17 | The SHA3 result of the given string 18 | 19 | **Example** 20 | 21 | ``` 22 | const sha3 = web3.sha3("0x68656c6c6f20776f726c64"); 23 | console.log(sha3) 24 | > 0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad 25 | ``` 26 | -------------------------------------------------------------------------------- /useful-links.md: -------------------------------------------------------------------------------- 1 | # Useful Links 2 | 3 | ### Useful Links 4 | 5 | * Twitter: [https://twitter.com/clover\_finance](https://twitter.com/clover\_finance) 6 | * Medium: [https://medium.com/projectclover](https://medium.com/projectclover) 7 | * LinkedIn: [https://www.linkedin.com/company/projectclover/](https://www.linkedin.com/company/projectclover/) 8 | * Website: [https://clover.finance/](https://clover.finance) 9 | * Github: [https://github.com/clover-network](https://github.com/clover-network) 10 | * LitePaper: [https://clover.finance/litepaper.pdf](https://clover.finance/litepaper.pdf) 11 | * Docs: [https://docs.clover.finance/](https://docs.clover.finance) 12 | * Blog: [https://blog.clover.finance/](https://blog.clover.finance) 13 | 14 | ### Official Community 15 | 16 | * Discord: [https://discord.com/invite/7EFqBwZ3aw](https://discord.com/invite/7EFqBwZ3aw) 17 | * Telegram Group: [https://t.me/clover\_en](https://t.me/clover\_en) 18 | * Telegram Channel: [https://t.me/clover\_ann](https://t.me/clover\_ann) 19 | * Dev Group: [https://t.me/clover\_dev](https://t.me/clover\_dev) 20 | 21 | ### Volunteer Community 22 | 23 | * China: [https://t.me/CloverCN](https://t.me/CloverCN) 24 | * Russia: [https://t.me/clover\_ru](https://t.me/clover\_ru) 25 | * Turkey: [https://t.me/clover\_turkiye](https://t.me/clover\_turkiye) 26 | 27 | Many thanks to volunteers contributed to Clover Finance 28 | -------------------------------------------------------------------------------- /wallet-and-dapp/assets-stats-and-management.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: one-stop assets management 3 | --- 4 | 5 | # Clover Assets Explorer 6 | 7 | ## Introduction 8 | 9 | Clover Assets Explorer is an one-stop assets management tool based on a data dashboard that helps users to track their DeFi assets, compare DeFi rates, manage DeFi assets, find DeFi projects, and analyze DeFi risks. 10 | 11 | Users can easily get access to it through both Clover browser extension wallet and mobile wallet, where they can save a lot of time and discover investment opportunities with detailed real-time data. 12 | 13 | ## Features 14 | 15 | Users can overview their total assets value, total debts value and Net worth. Data are also demonsted in diagram. Assets distribution diagram shows proportion of assets and liabilities value. Assets trend diagram shows assets and dets value changes over time. Daily profit and loss diagram shows today's profit of each asset in wallet. 16 | 17 | Users can find the DeFi projects they are interested in in the DeFi project list, find all kinds of DeFi project information and resources, and make investment appraisal based on the mortgage, long and short position of each DeFi platform. 18 | 19 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-cross-chain-explorer.md: -------------------------------------------------------------------------------- 1 | # Clover Cross-Chain Explorer 2 | 3 | Clover Cross-Chain Explorer ([https://tx.clover.finance/](https://tx.clover.finance)) shows all the information about the cross chain transactions 4 | 5 | ## Cross-chain Transaction Summary 6 | 7 | The summary section will show: 8 | 9 | * Total cross-chain transaction happened 10 | * Total cross-chain volume in CLV 11 | * Total number of addresses who participate the cross-chain 12 | * Current cross-chain fees. Clover <-> Ethereum and Clover <-> BSC 13 | 14 | Also users can search all the cross-chain transactions by hash or their CLV (Native token, ERC20, BEP20) token address 15 | 16 | ![](<../.gitbook/assets/image (84).png>) 17 | 18 | ## Cross-chain Transaction Record 19 | 20 | cross-chain transaction list will show all the details, like: 21 | 22 | * From address, with the source blockchain info 23 | * To address, with the target blockchain info 24 | * Amount of CLV transferred 25 | * The cross-chain transaction time, fee, duration, and status 26 | 27 | ![Cross-chain Tx List](<../.gitbook/assets/image (66).png>) 28 | 29 | ## Cross-chain Transaction Details 30 | 31 | You can click the cross-chain transaction record to expand the details: 32 | 33 | * Burn info, including the transaction hash, block number, block confirmations, etc. You can also view the burn transaction on Etherscan or Subscan 34 | * Mint info 35 | * Claim info, including the claim transaction hash, claim block, claim time, etc. 36 | 37 | ![Cross-chain Details](<../.gitbook/assets/image (67).png>) 38 | 39 | ## Claim Your CLV 40 | 41 | In case of special case, for example you uninstall the Clover mobile or extension wallet which contains pending cross-chain transactions. You can use cross-chain transaction explorer to get your CLV back. 42 | 43 | There are two ways to claim your CLV: 44 | 45 | ### Using Cross-Chain Explorer 46 | 47 | 1. First, click the "Claim CLV" button on the right upper corner: 48 | 49 | ![Click the "Claim CLV" button](<../.gitbook/assets/image (85).png>) 50 | 51 | 2\. Fill in the claim form: 52 | 53 | Blockchain: you need to select the blockchain where the transaction happened. 54 | 55 | Transaction Hash: you need to copy your transaction hash from [Etherscan](https://etherscan.io) or [BscScan](https://bscscan.com) 56 | 57 | CLV Address: **make sure the CLV address is yours, otherwise you may lose your CLV forever!** 58 | 59 | Private Key: the private key or seed phrase of your **Ethereum/BSC** account (Clover will **never save** your private key, it will only be used in your computer, and deleted from any cache once you close the claim dialog!). 60 | 61 | ![Fill in your CLV claim request](<../.gitbook/assets/image (86).png>) 62 | 63 | 3\. Confirm the claim: 64 | 65 | ![Confirm you request](<../.gitbook/assets/image (87).png>) 66 | 67 | 4\. Check your balance after claim succeed: 68 | 69 | ![Claim with success](<../.gitbook/assets/image (88).png>) 70 | 71 | ### Using Clover Extension Wallet 72 | 73 | * First, you need to install Clover intension wallet and import the same account from which you sent the previous cross-chain transaction 74 | * Connect you wallet to the cross-chain transaction explorer 75 | * Search your address or the pending transaction hash 76 | * Expand the detail, and click the "Claim" button 77 | * Input your claiming CLV address trigger the claim process 78 | 79 | ![Claim CLV from Cross-chain Transaction Explorer](<../.gitbook/assets/image (68).png>) 80 | 81 | Once you input your CLV address, just click "claim" to invoke Clover extension wallet to sign your claim request. 82 | 83 | ![Sign your Claim Request ](<../.gitbook/assets/image (69).png>) 84 | 85 | Once your claim is successful, you can view your claim transaction detail in Subscan. 86 | 87 | ![Claim Success](<../.gitbook/assets/image (70).png>) 88 | 89 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-extension-wallet/README.md: -------------------------------------------------------------------------------- 1 | # Clover Extension Wallet 2 | 3 | ## **Introduction** 4 | 5 | Clover Wallet is an open-source multi currency wallet that lives in your browser. Interact with cross-chain DeFi applications without needing to switch between networks in an all-in one streamlined interface. Send, receive, wrap and unwrap cross-chain assets across Ethereum, Polkadot and Binance Smart Chain. Entirely non-custodial and free to use. 6 | 7 | ![](../../.gitbook/assets/004.png) 8 | 9 | Clover wallet (browser extension version) includes following features: 10 | 11 | * Create, import and manage multi-chain accounts in one wallet. 12 | * Easy management and switch between multiple wallets. 13 | * Safe and easy way to transfer assets. 14 | * Support NFT assets on Ethereum, BSC, Solana, Fantom, etc. 15 | * Easy Cross-chain Transfer of tokens in one wallet. 16 | * Interact with dApps on many EVM compatible chains like Ethereum, BSC, Heco, Fantom, etc. 17 | * Interact with Dapps on many Substrate chains. 18 | 19 | 20 | 21 | 22 | 23 | **** 24 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-extension-wallet/add-tokens.md: -------------------------------------------------------------------------------- 1 | # Add Tokens 2 | 3 | ## Add Token 4 | 5 | Clover Wallet support 20+ major blockchains, and support a lot of on-chain assets, such as ERC20, BEP20, TRC20, etc. Users can use the 'Add Token' button on the main page to add their favourite tokens:\ 6 | ![](<../../.gitbook/assets/image (89) (1).png>) 7 | 8 | ## Search Tokens and Add 9 | 10 | You can search token symbols and add them. For example, if you search **USDT**, you may find the following assets: 11 | 12 | * Tether USD on Ethereum 13 | * Compound Tether cUSDT on Ethereum 14 | * Wrapped USDT on Solana 15 | 16 | ![](<../../.gitbook/assets/image (95) (1).png>) 17 | 18 | ## Add Custom Token 19 | 20 | To add a custom token asset, you need to select the related blockchain network where your assets belong to. Then put the token contract address and click the 'Continue' to add that token into your asset list. 21 | 22 | ![](<../../.gitbook/assets/image (90) (1).png>) 23 | 24 | Please note that you only need to copy/paste the contract address, the token symbol and decimal will be automatically loaded. 25 | 26 | ## Confirm and Add 27 | 28 | ![](<../../.gitbook/assets/image (93).png>) 29 | 30 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-extension-wallet/cross-chain-transfer.md: -------------------------------------------------------------------------------- 1 | # Cross-Chain Transfer 2 | 3 | Using Clover mobile wallet or extension wallet. You can cross-chain transfer you native CLV token to Ethereum and BSC. This is an automatic process, without the need to claim. 4 | 5 | ## CLV Tokens 6 | 7 | Currently, there are three kinds of CLV assets:\ 8 | \ 9 | **WARNING: DO NOT send CLV cross-chain transfer to any of the addresses listed below or you will risk losing your assets, these are only example addresses or contract addresses which the team DOES NOT have access to. Please send the cross-chain transfer only directly to your own address or input address on an exchange account.** 10 | 11 | ### 1. CLV native token 12 | 13 | This is the token issued on Clover mainnet. The address format is like: **5CyngUVPJD2MnAbrYR9F72CA5YX1VekR6ip9n2QuuBWcKXKB**. You can view your balance in Subscan, the url is like (you need to change the address to your own!): [https://clover.subscan.io/account/5CyngUVPJD2MnAbrYR9F72CA5YX1VekR6ip9n2QuuBWcKXKB](https://clover.subscan.io/account/5CyngUVPJD2MnAbrYR9F72CA5YX1VekR6ip9n2QuuBWcKXKB) 14 | 15 | ### 2. CLV erc20 token 16 | 17 | This is the erc20 token deployed on Ethereum. The address format is like: **0xcdbf90174493dcc418f177a4d7b2604a95997e1f**. The smart contract address is: [0x80C62FE4487E1351b47Ba49809EBD60ED085bf52](https://etherscan.io/address/0x80C62FE4487E1351b47Ba49809EBD60ED085bf52) 18 | 19 | ### 3. CLV bep20 token 20 | 21 | This is the bep20 token deployed on BSC. The address format is like: **0xcdbf90174493dcc418f177a4d7b2604a95997e1f**. The smart contract address is: [0x09E889BB4D5b474f561db0491C38702F367A4e4d](https://bscscan.com/address/0x09E889BB4D5b474f561db0491C38702F367A4e4d) 22 | 23 | ## CLV Native Token 24 | 25 | If you install Clover extension wallet, you should see Clover token: 26 | 27 | ![](<../../.gitbook/assets/image (91).png>) 28 | 29 | Please note that this is Clover native token (the address format has a prefix of 5) 30 | 31 | ## Add Clover Wrapped Tokens 32 | 33 | When you wan to make a cross-chain transfer, you may need to add Clover wrapped tokens on target networks, such as Ethereum, BSC. You can click the 'Add Token' button on the bottom of the main page: 34 | 35 | ![](<../../.gitbook/assets/image (96).png>) 36 | 37 | ## Make a Cross-Chain Transfer 38 | 39 | If you have the knowledge of the three different CLV assets. It is time to make a cross-chain transfer. Let us give an example of **how to transfer native CLV token to Ethereum**. Here we will use extension wallet to explain (You can use mobile wallet to do cross-chain transfer as well !). 40 | 41 | ### 1. Click action button and select 'Cross Chain' 42 | 43 | ![](<../../.gitbook/assets/image (101).png>) 44 | 45 | ### 2. Select target chain 46 | 47 | You need to select Ethereum if you want to send CLV to your Ethereum account address. (**By default, CLV will be sent to BSC chain !**) 48 | 49 | ![](<../../.gitbook/assets/image (103).png>) 50 | 51 | ### 3. Input recipient address and send amount 52 | 53 | Before you click Continue button, please make sure: 54 | 55 | * The target chain is correct, here we use BSC 56 | * The recipient address is correct. 57 | * The transfer amount (There is a minimum amount for cross-chain) 58 | 59 | ![](<../../.gitbook/assets/image (104).png>) 60 | 61 | Please noted that: 62 | 63 | * If you cross-chain transfer CLV to Ethereum or BSC, there will be a cross-chain fee + transaction fee charged. However, users don't need to pay ETH or BNB as cross-chain fee. 64 | * You can check current cross-chain fee at [https://tx.clover.finance/](https://tx.clover.finance) 65 | 66 | ### 4. Confirm your cross-chain transaction 67 | 68 | Once you confirm and send the cross-chain transaction, you can just wait for your transaction to be successful. You can check your cross-chain transaction in your wallet or Clover's cross-chain transaction explorer at [https://tx.clover.finance/](https://tx.clover.finance) 69 | 70 | ![Clover cross-chain transaction explorer](<../../.gitbook/assets/image (83).png>) 71 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-extension-wallet/dapp-integration.md: -------------------------------------------------------------------------------- 1 | # dApp Integration 2 | 3 | ### Integrated with JS 4 | 5 | Clover Extension Wallet injected into web pages a varible, which named 'clover'. DApp developer could integrate with the wallet with window.clover. Below snippet shows how to use it to interact between dapp and the wallet. 6 | 7 | ```javascript 8 | const example = async () => { 9 | // connect to wallet and get accounts 10 | const accounts = await window.clover.request({ method: 'eth_requestAccounts' }) 11 | 12 | // the first account is the selected account 13 | const currAccount = accounts[0] 14 | 15 | // get chain id 16 | const chainId = await window.clover.request({ method: 'eth_chainId' }); 17 | 18 | const transactionParameters = { 19 | nonce: '0x05', 20 | gasPrice: '0x3e95ba80', // could set by user 21 | gas: '0x2710', // could set by user 22 | to: '0x66cb476bdbd6b55804644072255a1156e6977b23', 23 | from: currAccount, 24 | value: '0x2386f26fc10000', 25 | chainId: chainId, 26 | }; 27 | 28 | const txHash = await window.clover.request({ 29 | method: 'eth_sendTransaction', 30 | params: [transactionParameters], 31 | }); 32 | } 33 | 34 | const handleAccountsChanged = async (accounts) => { 35 | // here could set current account with accounts[0] 36 | } 37 | 38 | window.clover.on('accountsChanged', handleAccountsChanged); 39 | 40 | ``` 41 | 42 | ### Integrated with web3-react 43 | 44 | First, install clover connector as dependency to your project: 45 | 46 | ```javascript 47 | npm i @clover-network/clover-connector 48 | or 49 | yarn add @clover-network/clover-connector 50 | ``` 51 | 52 | Second, Web3ReactProvider and getLibrary should be used as provider as below: 53 | 54 | ```javascript 55 | 56 | {/* <...> */} 57 | 58 | 59 | ``` 60 | 61 | Then, initialize cloverConnector, which could be used as connector to connect to Clover Extension Wallet. 62 | 63 | ```javascript 64 | const cloverConnector = new CloverConnector({ supportedChainIds: [1, 3] }) 65 | ``` 66 | 67 | At last, we could use cloverConnector to connect to and communicate with the wallet 68 | 69 | ```javascript 70 | const { activate, deactivate, library, account, error } = useWeb3React() 71 | 72 | useEffect(() => { 73 | activate(cloverConnector, async (error) => { 74 | if (error instanceof UnsupportedChainIdError) { 75 | setToast('error', 'Unsupported chain id') 76 | } else { 77 | if (error instanceof NoEthereumProviderError) { 78 | setToast('error', 'No provider was found') 79 | } else if ( 80 | error instanceof UserRejectedRequestErrorInjected 81 | ) { 82 | setToast('error', 'Please authorize to access your account') 83 | } else { 84 | setToast('error', error.message) 85 | } 86 | } 87 | }) 88 | }, [activate]) 89 | 90 | useEffect(() => { 91 | const send = async () => { 92 | if (account !== undefined) { 93 | const chainId = '0x3'; 94 | 95 | const transaction = { 96 | nonce: '0x05', 97 | to: account, 98 | from: account, 99 | value: '0x2386f26fc10000', 100 | chainId: chainId, 101 | }; 102 | 103 | const txHash = await library.request({ 104 | method: 'eth_sendTransaction', 105 | params: [transaction], 106 | }); 107 | } 108 | } 109 | send() 110 | }, [account, library]) 111 | 112 | ``` 113 | 114 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-extension-wallet/dapp-protocol.md: -------------------------------------------------------------------------------- 1 | # dApp Interaction Protocol 2 | 3 | Clover extension wallet implemented a brand-new dApp interaction protocol, it can support multiple active blockchains. dApps can use the above protocol to interact with different blockchains, **without the need to switch between them !** 4 | 5 | ## Demo 6 | 7 | In order to show how Clover extension wallet interacts with multiple active blockchains, we build a demo at: [https://wallet-demo.clover.finance/](https://wallet-demo.clover.finance) 8 | 9 | ![](<../../.gitbook/assets/image (71).png>) 10 | 11 | ### 1. Install Clover Extension Wallet 12 | 13 | In order to play with the demo, you need to install Clover extension wallet, and make sure the version is above **2.5.0**. Then connect with your wallet: 14 | 15 | ![Connect to your wallet](<../../.gitbook/assets/image (72).png>) 16 | 17 | ### 2. Sign Message with Different Blockchains 18 | 19 | You can click "Sign with Ethereum", it will invoke Clover intension wallet to interact with Ethereum chain: 20 | 21 | ![Sign with Ethereum](<../../.gitbook/assets/image (73).png>) 22 | 23 | You can click "Sign with BSC", it will invoke Clover intension wallet to interact with BSC: 24 | 25 | ![Sign with BSC](<../../.gitbook/assets/image (74).png>) 26 | 27 | You can click "Sign with Polkadot", it will invoke Clover intension wallet to interact with Polkadot: 28 | 29 | ![Sign with Polkadot](<../../.gitbook/assets/image (76).png>) 30 | 31 | ## Github 32 | 33 | Please refer to our the code repo of the demo: [https://github.com/clover-network/clover-multichain-wallet-demo](https://github.com/clover-network/clover-multichain-wallet-demo) 34 | 35 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-extension-wallet/import-account.md: -------------------------------------------------------------------------------- 1 | # Import Account 2 | 3 | ## Click Current Account 4 | 5 | Any time you want to restore or import your account , just click on the account on the top of the asset list page. 6 | 7 | ![](<../../.gitbook/assets/image (91) (1).png>) 8 | 9 | ## Select 'Import Account' 10 | 11 | ![](<../../.gitbook/assets/image (99) (1).png>) 12 | 13 | ## Input Your Seed Phrase and Confirm 14 | 15 | ![](<../../.gitbook/assets/image (89).png>) 16 | 17 | Note: If you open the "Advanced" option, you will find that Clover wallet supports two keypair types, SR25519 and ED25519 for substrate networks. Clover wallet uses SR25519 by default. 18 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-extension-wallet/installation.md: -------------------------------------------------------------------------------- 1 | # Getting Started 2 | 3 | ## Installation 4 | 5 | You can install Clover Wallet from the [Chrome Web Store](https://chrome.google.com/webstore/detail/clover-wallet/nhnkbkgjikgcigadomkphalanndcapjk). 6 | 7 | ## Create New Wallet 8 | 9 | To start, you need to create a new multi-chain wallet or restore a wallet if you have one. Note that Clover wallet only supports seed word restore.\ 10 | ![](<../../.gitbook/assets/image (100) (1).png>) 11 | 12 | While creating, please do write down your seed phrase to a safe place that no one knows. 13 | 14 | ![](<../../.gitbook/assets/image (92).png>) 15 | 16 | After that, you're ready to start using the clover wallet! 17 | 18 | ![](<../../.gitbook/assets/image (93) (1).png>) 19 | 20 | Note that Clover wallet supports two keypair crypto types, SR25519 and ED25519. The account address for Clover and other substrate networks will be SR25519 by default. 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-extension-wallet/send-tokens.md: -------------------------------------------------------------------------------- 1 | # Send Tokens 2 | 3 | ## Click 'Send' Button 4 | 5 | To send tokens to another address, click the action button on the bottom of the asset detail page. 6 | 7 | ![](<../../.gitbook/assets/image (100).png>) 8 | 9 | ## Input Recipient 10 | 11 | ![](<../../.gitbook/assets/image (102).png>) 12 | 13 | You can also select your recipient from your address book. 14 | 15 | ## Input Amount and Continue 16 | 17 | ![](<../../.gitbook/assets/image (101) (1).png>) 18 | 19 | ## Confirm the Transaction and Send 20 | 21 | ![](<../../.gitbook/assets/image (98).png>) 22 | 23 | ## More Options 24 | 25 | If you send EVM assets, you can customize the transaction fee: 26 | 27 | ![](<../../.gitbook/assets/image (97).png>) 28 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-extension-wallet/solana-dapp-integration.md: -------------------------------------------------------------------------------- 1 | # Solana-dApp-Integration 2 | 3 | Once Clover extension wallet is installed, it will inject the following to window object: 4 | 5 | ``` 6 | window.clover_solana = { 7 | isCloverWallet: true, 8 | getAccount: async() => {...} 9 | signTransaction: async (paload) => {...} 10 | } 11 | ``` 12 | 13 | dApps can use the above injected object to integrate with Clover extension wallet. 14 | 15 | ## dApp Development Documents 16 | 17 | ### RPC document 18 | 19 | [https://docs.solana.com/](https://docs.solana.com) 20 | 21 | ### Wallet Adapter API (lib for communicate with web wallet or extension) 22 | 23 | {% embed url="https://github.com/project-serum/sol-wallet-adapter" %} 24 | 25 | ### Web3 JS (create transactions in frontend) 26 | 27 | {% embed url="https://github.com/solana-labs/solana-web3.js" %} 28 | 29 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-extension-wallet/substrate-dapp-integration.md: -------------------------------------------------------------------------------- 1 | # Substrate dApp Integration 2 | 3 | Clover Extension Wallet use method '**injectExtension**' of **@polkadot/extension-inject** to inject an object into dApp's web page, and dApp can invoke the wallet by calling web3Enable(). The sample code is as follows: 4 | 5 | ```typescript 6 | import { web3Accounts, web3Enable } from '@polkadot/extension-dapp'; 7 | 8 | // find clover extension wallet injector 9 | const findCloverInjected = async () => { 10 | const injected = await web3Enable('clv'); 11 | if (!injected.length) { 12 | return { 13 | message: "Not found wallet", 14 | status: 'error' 15 | }; 16 | } 17 | 18 | const cloverInjector = injected.find(injected, (w) => isCloverWallet(w)) 19 | return cloverInjector 20 | } 21 | 22 | // sign message 23 | const polkadotSignMessage = async () => { 24 | const polkadotAddress = await web3Accounts({ ss58Format: 42 }); 25 | const wrapped = u8aWrapBytes(polkadotAddress.toLowerCase()); 26 | const ret = await currentInjected.signer.signRaw({ 27 | data: u8aToHex(wrapped), 28 | address: polkadotAddress, 29 | type: "bytes", 30 | }); 31 | } 32 | 33 | // send transaction 34 | polkadotSignTransaction = async () => { 35 | const wsProvider = new WsProvider('wss://rpc.polkadot.io'); 36 | const api = await ApiPromise.create({provider: wsProvider}); 37 | const polkadotAddress = await web3Accounts({ ss58Format: 42 }); 38 | const currentClvAccount = polkadotAddress 39 | const injected = await web3FromAddress(currentClvAccount) 40 | api.setSigner(injected.signer) 41 | const unsub = await api.tx.balances 42 | .transfer(currentClvAccount, 0) 43 | .signAndSend(currentClvAccount, (result) => { 44 | 45 | if (result.status.isInBlock) { 46 | // in block 47 | } else if (result.status.isFinalized) { 48 | unsub(); 49 | } 50 | }) 51 | } 52 | ``` 53 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-extension-wallet/switch-networks.md: -------------------------------------------------------------------------------- 1 | # Switch Networks 2 | 3 | Clover wallet is capable of connecting to multiple blockchain networks simultaneously. Details are: 4 | 5 | * Clover wallet connect to all non-EVM networks simultaneously, such as Polkadot, Solana, Tron, etc. 6 | * For EVM networks, if developers use Clover Wallet dApp interaction protocol, then there is no need for their users to switch between EVM networks. Otherwise, users need to switch between them (please refer to the following step). 7 | 8 | ## Click 'dApp Networks' 9 | 10 | ![](<../../.gitbook/assets/image (97) (1) (1).png>) 11 | 12 | ## Switch EVM Networks 13 | 14 | Click the EVM network you want to switch 15 | 16 | ![](<../../.gitbook/assets/image (96) (1) (1).png>) 17 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-extension-wallet/view-seed-phrase.md: -------------------------------------------------------------------------------- 1 | # View Seed Phrase 2 | 3 | ## Click 'Settings' Button 4 | 5 | To check the seed phrase of your account, first click the setting button on the bottom navigation bar. Then click the 'Accounts' item. 6 | 7 | ![](<../../.gitbook/assets/image (94).png>) 8 | 9 | ## Click Account's Actions Button 10 | 11 | ![](<../../.gitbook/assets/image (97) (1).png>) 12 | 13 | Please note that you may input your password in order to view your seed phrase 14 | 15 | ## 16 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-extension-wallet/wallet-integration-qa.md: -------------------------------------------------------------------------------- 1 | # Wallet Integration QA 2 | 3 | ## Asset Integration 4 | 5 | if you need your blockchain assets supported by Clover Wallet, please provide the javascript SDK for your blockchain. For example: 6 | 7 | | Assets | SDK | Description | 8 | | ------ | --------------- | ----------- | 9 | | DOT | @polkadot/api | | 10 | | SOL | @solana/web3.js | | 11 | | ... | | | 12 | 13 | If your chain is EVM compatible, you only need to provide the following information: 14 | 15 | * Chain ID 16 | * Chain RPC 17 | * Native Token Symbol 18 | * Native Token Decimal 19 | 20 | ## dApp Integration 21 | 22 | If your dApp is a Solana dApp, please refer to the following integration demo: 23 | 24 | {% embed url="https://github.com/Bonfida/audaces-perps-ui/pull/5/commits/7a31c4004dda4dce9cbcdd11c84c0a90e159550e" %} 25 | 26 | If your dApp is a EVM compatible dApp, please refer to the following integration demo: 27 | 28 | {% embed url="https://github.com/sushiswap/sushiswap-interface/pull/401/commits/aba48d0650813f349f08e8ca61067b15ff2b0f3f" %} 29 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-mobile-wallet.md: -------------------------------------------------------------------------------- 1 | # Clover Mobile Wallet 2 | 3 | ## **Introduction** 4 | 5 | Clover Mobile Wallet is a mobile app, which helps users to manage assets of the Polkadot ecosystem and do the transaction, available on both Android and iOS platforms. Also, it allows users to access private keys and signing transactions easily. 6 | 7 | ## **Features** 8 | 9 | Clover Mobile Wallet supports secure account Management for substrate-based-blockchains, such as Polkadot and Clover. And users could import accounts by Mnemonics, Raw Seed and Keystore. Encrypt type Sr/Ed25519 is supported. Clover Tokens transfer/loan/swap/liquid is supported and Polkadot Token could be transferred too. Also, in Clover Mobile Wallet users could change wallet password, name, language and account prefix. 10 | 11 | ## Installation 12 | 13 | ## **DApps** 14 | 15 | Clover Mobile Wallet helps users to connect to the dapps world conveniently, there will be hundreds of dapps in the wallet. Clover Mobile Wallet is not only a wallet, but an entry to the blockchain ecosystem. 16 | 17 | ## **Technology** 18 | 19 | Clover Mobile Wallet is developed based on the flutter framework, which could develop applications for Android and iOS. And Polkadot/api is injected into webview as javascript extension for web page and native app features.\ 20 | \ 21 | \ 22 | -------------------------------------------------------------------------------- /wallet-and-dapp/clover-web-wallet/README.md: -------------------------------------------------------------------------------- 1 | # Clover Web Wallet 2 | 3 | ## What is Clover Web Wallet 4 | 5 | Clover web wallet is the most secure decentralized web-based digital wallet. It has a lot of great features: 6 | 7 | ### 1. OAuth social logins without password 8 | 9 | Usually, a crypto wallet needs users to provide a seed phrase or a private key to secure their crypto assets. This may lead to two risks: 10 | 11 | * Users may forget their seed phrase or private key, and they will never get back of their assets. 12 | * Users may have their seed phrase or private key hacked, and they will permanently lose their assets. 13 | 14 | Clover web wallet provides a OAuth social login mechanism, no passwords and no downloads. Users can connect their wallet account by Google, Facebook, Twitter, etc. No more complicated seed phrases or private keys. 15 | 16 | Clover web wallet inherits traditional account recovery systems that allow users to recover their account via email/social login. And users don't need to worry about that if they lose access to their accounts. 17 | 18 | ### 2. Non-custodial Key Management 19 | 20 | Clover web wallet never stores users' private key or seed phrase in cloud service. All the credential info are accessible only by users. Clover web wallet is powered by decentralized non-custodial PKI infrastructure that is maintained by users themselves and IPFS with encryption. 21 | 22 | ### 3. Send and receive digital currencies via email 23 | 24 | Using Clover web wallet, users don't need to remember the complicated addresses of their contacts. They can send and receive digital currencies via email. 25 | 26 | ### 4. Muti-chain support 27 | 28 | Clover web wallet is multi-chain based. It supports most of the main blockchains, such as Ethereum, BSC, Polkadot, Kusama, Matic, OkEx chain, Fantom, etc. 29 | 30 | -------------------------------------------------------------------------------- /wallet-and-dapp/web3-compatibility.md: -------------------------------------------------------------------------------- 1 | # Web3 compatibility 2 | 3 | --------------------------------------------------------------------------------