├── .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 | .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 | .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 | .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 | .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 | 
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 | .png>)
25 |
26 | You will see an imported “Account 2” looks like this:
27 |
28 | .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 | 
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 | .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 | .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 | .png>)
58 |
59 | Then Click the "Confirm" button to confirm the transaction:
60 |
61 | .png>)
62 |
63 | Once done, you will see the status as “pending” until it is confirmed after a short period.
64 |
65 | .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 | .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 | .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 |
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 |  (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 |  (1) (1).png>)
16 |
17 | Then the `Setup up nominator` dialogs show up:
18 |
19 |  (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 |  (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 |  (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 |  (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 |  (1) (1) (1).png>)
17 |
18 | ### Select Validators to Nominate
19 |
20 |  (1) (1).png>)
21 |
22 | ### Input CLV Amount for Staking
23 |
24 |  (1) (1).png>)
25 |
26 | ### Sign the Transaction
27 |
28 |  (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 | 
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 | 
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 | 
101 |
102 | With Polkadot JS Apps connected, you will see the standalone Clover node producing blocks.
103 |
104 | 
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 | 
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 | 
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 | 
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 | 
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 | .png>)
6 |
7 | ## Generate an account using Clover Apps
8 |
9 | #### Click the "Accounts" menu item in the top navigation bar.
10 |
11 | .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 | .png>)
18 |
19 | Click "Add account" to create a new account.
20 |
21 | .png>)
22 |
23 | After setting the account information click the **"Next"** button.
24 |
25 | .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 | .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 | .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 | .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 | .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 | .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 | .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 | .png>)
62 |
63 | 3\. Confirm the claim:
64 |
65 | .png>)
66 |
67 | 4\. Check your balance after claim succeed:
68 |
69 | .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 | .png>)
80 |
81 | Once you input your CLV address, just click "claim" to invoke Clover extension wallet to sign your claim request.
82 |
83 | .png>)
84 |
85 | Once your claim is successful, you can view your claim transaction detail in Subscan.
86 |
87 | .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 | 
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 |  (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 |  (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 |  (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 | .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 | .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 | .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 | .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 | .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 | .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 | .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 | .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 | .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 | .png>)
22 |
23 | You can click "Sign with BSC", it will invoke Clover intension wallet to interact with BSC:
24 |
25 | .png>)
26 |
27 | You can click "Sign with Polkadot", it will invoke Clover intension wallet to interact with Polkadot:
28 |
29 | .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 |  (1).png>)
8 |
9 | ## Select 'Import Account'
10 |
11 |  (1).png>)
12 |
13 | ## Input Your Seed Phrase and Confirm
14 |
15 | .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 |  (1).png>)
11 |
12 | While creating, please do write down your seed phrase to a safe place that no one knows.
13 |
14 | .png>)
15 |
16 | After that, you're ready to start using the clover wallet!
17 |
18 |  (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 | .png>)
8 |
9 | ## Input Recipient
10 |
11 | .png>)
12 |
13 | You can also select your recipient from your address book.
14 |
15 | ## Input Amount and Continue
16 |
17 |  (1).png>)
18 |
19 | ## Confirm the Transaction and Send
20 |
21 | .png>)
22 |
23 | ## More Options
24 |
25 | If you send EVM assets, you can customize the transaction fee:
26 |
27 | .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 |  (1) (1).png>)
11 |
12 | ## Switch EVM Networks
13 |
14 | Click the EVM network you want to switch
15 |
16 |  (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 | .png>)
8 |
9 | ## Click Account's Actions Button
10 |
11 |  (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 |
--------------------------------------------------------------------------------