diff --git a/.gitbook/assets/0 (1).png b/.gitbook/assets/0 (1).png new file mode 100644 index 0000000..56b8c98 Binary files /dev/null and b/.gitbook/assets/0 (1).png differ diff --git a/.gitbook/assets/0 (2).png b/.gitbook/assets/0 (2).png new file mode 100644 index 0000000..f48d2c2 Binary files /dev/null and b/.gitbook/assets/0 (2).png differ diff --git a/.gitbook/assets/0 (3).png b/.gitbook/assets/0 (3).png new file mode 100644 index 0000000..f48d2c2 Binary files /dev/null and b/.gitbook/assets/0 (3).png differ diff --git a/.gitbook/assets/0 (4).png b/.gitbook/assets/0 (4).png new file mode 100644 index 0000000..f48d2c2 Binary files /dev/null and b/.gitbook/assets/0 (4).png differ diff --git a/.gitbook/assets/0 (5).png b/.gitbook/assets/0 (5).png new file mode 100644 index 0000000..f48d2c2 Binary files /dev/null and b/.gitbook/assets/0 (5).png differ diff --git a/.gitbook/assets/0.png b/.gitbook/assets/0.png new file mode 100644 index 0000000..56b8c98 Binary files /dev/null and b/.gitbook/assets/0.png differ diff --git a/.gitbook/assets/1 (1).png b/.gitbook/assets/1 (1).png new file mode 100644 index 0000000..e5066ab Binary files /dev/null and b/.gitbook/assets/1 (1).png differ diff --git a/.gitbook/assets/1.png b/.gitbook/assets/1.png new file mode 100644 index 0000000..e5066ab Binary files /dev/null and b/.gitbook/assets/1.png differ diff --git a/.gitbook/assets/2 (1).png b/.gitbook/assets/2 (1).png new file mode 100644 index 0000000..8d5ea5c Binary files /dev/null and b/.gitbook/assets/2 (1).png differ diff --git a/.gitbook/assets/2.png b/.gitbook/assets/2.png new file mode 100644 index 0000000..8d5ea5c Binary files /dev/null and b/.gitbook/assets/2.png differ diff --git a/.gitbook/assets/3.png b/.gitbook/assets/3.png new file mode 100644 index 0000000..c733af5 Binary files /dev/null and b/.gitbook/assets/3.png differ diff --git a/.gitbook/assets/Screenshot from 2021-02-10 19-02-05.png b/.gitbook/assets/Screenshot from 2021-02-10 19-02-05.png new file mode 100644 index 0000000..eb42817 Binary files /dev/null and b/.gitbook/assets/Screenshot from 2021-02-10 19-02-05.png differ diff --git a/.gitbook/assets/Screenshot from 2021-02-10 19-03-57.png b/.gitbook/assets/Screenshot from 2021-02-10 19-03-57.png new file mode 100644 index 0000000..06e6c17 Binary files /dev/null and b/.gitbook/assets/Screenshot from 2021-02-10 19-03-57.png differ diff --git a/.gitbook/assets/Screenshot from 2021-03-05 14-25-17.png b/.gitbook/assets/Screenshot from 2021-03-05 14-25-17.png new file mode 100644 index 0000000..29f6ea4 Binary files /dev/null and b/.gitbook/assets/Screenshot from 2021-03-05 14-25-17.png differ diff --git a/.gitbook/assets/Screenshot from 2021-03-05 14-26-09.png b/.gitbook/assets/Screenshot from 2021-03-05 14-26-09.png new file mode 100644 index 0000000..f7e82b1 Binary files /dev/null and b/.gitbook/assets/Screenshot from 2021-03-05 14-26-09.png differ diff --git a/.gitbook/assets/Screenshot from 2021-03-05 14-26-13.png b/.gitbook/assets/Screenshot from 2021-03-05 14-26-13.png new file mode 100644 index 0000000..a975c67 Binary files /dev/null and b/.gitbook/assets/Screenshot from 2021-03-05 14-26-13.png differ diff --git a/.gitbook/assets/Screenshot from 2021-06-02 13-56-25.png b/.gitbook/assets/Screenshot from 2021-06-02 13-56-25.png new file mode 100644 index 0000000..34a2761 Binary files /dev/null and b/.gitbook/assets/Screenshot from 2021-06-02 13-56-25.png differ diff --git a/.gitbook/assets/Screenshot from 2021-06-03 12-39-01.png b/.gitbook/assets/Screenshot from 2021-06-03 12-39-01.png new file mode 100644 index 0000000..780f6e7 Binary files /dev/null and b/.gitbook/assets/Screenshot from 2021-06-03 12-39-01.png differ diff --git a/.gitbook/assets/Screenshot from 2021-06-03 12-40-32.png b/.gitbook/assets/Screenshot from 2021-06-03 12-40-32.png new file mode 100644 index 0000000..1038454 Binary files /dev/null and b/.gitbook/assets/Screenshot from 2021-06-03 12-40-32.png differ diff --git a/.gitbook/assets/Screenshot from 2021-06-03 12-48-24.png b/.gitbook/assets/Screenshot from 2021-06-03 12-48-24.png new file mode 100644 index 0000000..eba7214 Binary files /dev/null and b/.gitbook/assets/Screenshot from 2021-06-03 12-48-24.png differ diff --git a/.gitbook/assets/Screenshot from 2021-06-03 12-50-42.png b/.gitbook/assets/Screenshot from 2021-06-03 12-50-42.png new file mode 100644 index 0000000..87aa0d0 Binary files /dev/null and b/.gitbook/assets/Screenshot from 2021-06-03 12-50-42.png differ diff --git a/.gitbook/assets/Screenshot from 2021-06-03 13-25-21.png b/.gitbook/assets/Screenshot from 2021-06-03 13-25-21.png new file mode 100644 index 0000000..53089d3 Binary files /dev/null and b/.gitbook/assets/Screenshot from 2021-06-03 13-25-21.png differ diff --git a/.gitbook/assets/Screenshot from 2021-06-03 13-29-03.png b/.gitbook/assets/Screenshot from 2021-06-03 13-29-03.png new file mode 100644 index 0000000..0695aea Binary files /dev/null and b/.gitbook/assets/Screenshot from 2021-06-03 13-29-03.png differ diff --git a/.gitbook/assets/candidates.PNG b/.gitbook/assets/candidates.PNG new file mode 100644 index 0000000..942212f Binary files /dev/null and b/.gitbook/assets/candidates.PNG differ diff --git a/.gitbook/assets/cere-extension.png b/.gitbook/assets/cere-extension.png new file mode 100644 index 0000000..ea0858a Binary files /dev/null and b/.gitbook/assets/cere-extension.png differ diff --git a/.gitbook/assets/currentcouncil.PNG b/.gitbook/assets/currentcouncil.PNG new file mode 100644 index 0000000..d7d2fc2 Binary files /dev/null and b/.gitbook/assets/currentcouncil.PNG differ diff --git a/.gitbook/assets/payoutall.png b/.gitbook/assets/payoutall.png new file mode 100644 index 0000000..aca1e6b Binary files /dev/null and b/.gitbook/assets/payoutall.png differ diff --git a/.gitbook/assets/submit council.PNG b/.gitbook/assets/submit council.PNG new file mode 100644 index 0000000..a99ccf4 Binary files /dev/null and b/.gitbook/assets/submit council.PNG differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..a325acf --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +--- +description: Welcome to Cere DDC Wiki! +--- + +# Introduction to Cere DDC + +Cere Decentralized Data Cloud is the world’s first blockchain-based storage solution that is optimized to capture interactions between users, (NFT) assets, and application which are individually signed and encrypted, along with potential value transfers, to be stored in a tamper-proof and time-capsuled data scheme. + +This guide covers the technical details of the blockchain behind DDC. For more information on Cere Network, visit [https://cere.network/](https://cere.network/). + +#### Cere Tools + +{% hint style="info" %} +[**Cere Explorer**](https://explorer.cere.network), **an app to manage accounts/transfers/governance/smart contracts/other.** +{% endhint %} + +{% hint style="info" %} +[**Cere Bridge**](https://bridge.cere.network)**, an app to transfer CERE tokens from Ethereum to Cere Mainnet.** +{% endhint %} diff --git a/SUMMARY.md b/SUMMARY.md new file mode 100644 index 0000000..3419eaf --- /dev/null +++ b/SUMMARY.md @@ -0,0 +1,51 @@ +# Table of contents + +* [Introduction to Cere DDC](README.md) + +## Mainnet + +* [Network details](mainnet/network-details.md) + +## Testnet + +* [Test Network details](testnet/network-details.md) + +## Blockchain Node + +* [Install and update](node/install-and-update/README.md) + * [Start a Node](node/install-and-update/start-a-node.md) + * [Become a Validator](node/install-and-update/become-a-validator.md) + * [Become a Full / Archive Node](node/install-and-update/become-a-full-archive-node.md) + * [Update a Validator Node](node/install-and-update/update-a-validator-node.md) + * [Install & Configure Network Time Protocol (NTP) Client](node/install-and-update/install-and-configure-network-time-protocol-ntp-client.md) + * [How to fix environment errors](node/install-and-update/how-to-fix-environment-errors.md) + * [Node logs](node/install-and-update/node-logs.md) + +*** + +* [Other](other/README.md) + * [Linux Best Practises](other/linux-best-practises.md) + * [Hardware Recommendations](other/hardware-recommendations.md) + * [Other Notes](other/other-notes.md) + +## DDC Smart Contracts + +* [Intro](ddc/intro.md) +* [How to add DDC Node to the Smart Contract](ddc/how-to-add-ddc-node-to-the-smart-contract.md) +* [How to add an Inspector to the Smart Contract](ddc/how-to-add-a-reporter-to-the-smart-contract.md) +* [How to configure DDC Inspectors](ddc/how-to-configure-reporter-ocw.md) + +## tools + +* [Cere Explorer](tools/cere-explorer/README.md) + * [Prepare a browser to work with Cere Explorer](tools/cere-explorer/prepare-a-browser-to-work-with-cere-explorer.md) + * [How to connect to your Node with Cere Explorer](tools/cere-explorer/how-to-connect-to-your-node-with-cere-explorer.md) + * [How to create an account by using Cere Explorer](tools/cere-explorer/how-to-create-an-account-by-using-cere-explorer.md) +* [Cere Bridge](tools/cere-bridge.md) + +## Learn + +* [Governance](learn/governance.md) +* [Staking/Slashing](learn/slashing.md) +* [Treasury](learn/treasury.md) +* [Council](learn/council.md) diff --git a/ddc/how-to-add-a-reporter-to-the-smart-contract.md b/ddc/how-to-add-a-reporter-to-the-smart-contract.md new file mode 100644 index 0000000..0383a3a --- /dev/null +++ b/ddc/how-to-add-a-reporter-to-the-smart-contract.md @@ -0,0 +1,27 @@ +--- +description: >- + This section is supposed to be used to describe the process on how to add a + reporter to the DDC Smart Contract +--- + +# How to add an Inspector to the Smart Contract + +### Prerequisites + +* You should be a Smart Contract Admin. +* You should have enough CERE tokens to pay fees. + +### Steps + +1. Open [Block Viewer](https://block-viewer.cere.network/?rpc=wss%3A%2F%2Frpc.testnet.dev.cere.network%3A9945#/staking): `Developer` -> `Contracts` +2. Find method: `addReporter` +3. Click on `exec` +4. Specify `reporter` + +![](<../.gitbook/assets/Screenshot from 2021-06-03 12-48-24.png>) + +5\. Click `Execute` then sign the tx and you should be able to see check if reported added using the `isReporter` function. Select the reporter you just added: + +![](<../.gitbook/assets/Screenshot from 2021-06-03 12-50-42.png>) + +Congrats! You should be able to see `true` in the response, if reported added successfully. diff --git a/ddc/how-to-add-ddc-node-to-the-smart-contract.md b/ddc/how-to-add-ddc-node-to-the-smart-contract.md new file mode 100644 index 0000000..1728ed5 --- /dev/null +++ b/ddc/how-to-add-ddc-node-to-the-smart-contract.md @@ -0,0 +1,31 @@ +--- +description: >- + This section is supposed to be used to describe the process on how to add a + new node to the DDC Smart Contract +--- + +# How to add DDC Node to the Smart Contract + +### Prerequisites + +* You should be a Smart Contract Admin. +* You should have enough CERE tokens to pay fees. + +### Steps + +1. Open [Block Viewer](https://block-viewer.cere.network/?rpc=wss%3A%2F%2Frpc.testnet.dev.cere.network%3A9945#/staking): `Developer` -> `Contracts` +2. Find method: `addDdcNode` +3. Click on `exec` +4. Specify parameters: + 1. `p2p_id` found in the logs of the DDN. + 2. `p2p_addr` similar to p2p\_id but also includes an IP address. + 3. `url` where the HTTP API of the node is reachable. + 4. `permissions` 1 for trusted nodes (e.g., run by Cere), 0 for untrusted nodes. + +![](<../.gitbook/assets/Screenshot from 2021-06-03 12-39-01.png>) + +5\. Click `Execute` then sign the tx and you should be able to see the newly added node in the `getAllDdcNodes` function: + +![](<../.gitbook/assets/Screenshot from 2021-06-03 12-40-32.png>) + +Congrats! You have just added a new DDC Node to the contract. diff --git a/ddc/how-to-configure-reporter-ocw.md b/ddc/how-to-configure-reporter-ocw.md new file mode 100644 index 0000000..4880994 --- /dev/null +++ b/ddc/how-to-configure-reporter-ocw.md @@ -0,0 +1,74 @@ +--- +description: >- + This section is supposed to be used to describe the process on how to + configure reporter (OCW) +--- + +# How to configure DDC Inspectors + +### Prerequisites + +* You have installed [subkey](https://github.com/paritytech/substrate/tree/master/bin/utils/subkey) util +* You have a DDC Smart Contract address. In our case: `5F7hDxFwMobL3mofGVUL4QwwZTmygwPE7T1ikPy5YT8Nizf8` +* You are [connected to a Node via Cere Block Viewer](https://cere-network.gitbook.io/cere-network/tools/block-viewer/how-to-connect-to-your-node-with-block-viewer) directly. + +### Steps + +By default reporter functionality already included in the Validator Node. This section described how to enable and configure the reporter. + +#### 1. Prepare reporter account + +Create a new account using `subkey` util using the command: `subkey generate --scheme sr25519`: + +``` +~$ subkey generate --scheme sr25519 +Secret phrase `ivory alpha language juice pyramid enforce kitchen cake galaxy ankle error aspect` is account: + Secret seed: 0xfdd8ddf960c0ebf8b6970728780cd8210b0494b50ceb8823025efff519e1f6dd + Public key (hex): 0xae4ef92049ef164f44b08da3f14e120a79cf6425ca5d8cdca655a4c7d6cf0978 + Account ID: 0xae4ef92049ef164f44b08da3f14e120a79cf6425ca5d8cdca655a4c7d6cf0978 + SS58 Address: 5G1Feba7v4dPBU4rVZxmooKQiHoY9JYibz8JNPMmgFzyPsGK + +``` + +Send some amount of native tokens to this account (in our case - `5G1Feba7v4dPBU4rVZxmooKQiHoY9JYibz8JNPMmgFzyPsGK`) to be able to pay for transactions. + +#### 2. Add a reporter to the Smart Contract + +* Open [Block Viewer](https://block-viewer.cere.network/#/explorer) +* Open `Developer` -> `Contracts` +* Select `DDC SC` -> `addInspector` +* Insert `Public key (hex)` to the `inspector` field +* Press `Execute` + +#### 3. Configure interval + +* Update the `ddc-metrics-offchain-worker::block_interval` in Developer -> RPC -> offchain - localStorageSet. The block number value should be in the Fixed Width Little Endian format. Examples: 5 - 0x05000000, 600 - 0x58020000, 10 - 0x0A000000. + +#### 4. Configure the Smart Contract address + +* Open [Block Viewer](https://block-viewer.cere.network/) which points to your Validator Node. +* Go to `Developer` -> `RPC calls` +* Select `offchain` -> `localStorageSet` and specify the Smart Contract address mentioned in prerequisites section: + * key: `ddc-metrics-offchain-worker::sc_address` + * value: `5F7hDxFwMobL3mofGVUL4QwwZTmygwPE7T1ikPy5YT8Nizf8` +* Click `Submit RPC call` + +![](<../.gitbook/assets/Screenshot from 2021-06-03 13-25-21.png>) + +You are done with the Smart Contract address configuration! + +#### 5. Configure your reporter account + +* Use the same section (`Developer` -> `RPC calls`) +* Select `author` -> `insertKey` +* Specify params: + * keyType: `ddc1` + * suri: \ (in our case - `ivory alpha language juice pyramid enforce kitchen cake galaxy ankle error aspect`) + * publicKey: \ (in our case - `0xae4ef92049ef164f44b08da3f14e120a79cf6425ca5d8cdca655a4c7d6cf0978`) +* Click `Submit RPC call` + +![](<../.gitbook/assets/Screenshot from 2021-06-03 13-29-03.png>) + +You are done with the reporter configuration! + +Congrats, you have just configured OCW for your Validator Node! Your reporter will be triggered after the next block generated! diff --git a/ddc/intro.md b/ddc/intro.md new file mode 100644 index 0000000..f26acc9 --- /dev/null +++ b/ddc/intro.md @@ -0,0 +1,11 @@ +# Intro + +DDC node is a core component of DDC that is responsible for storing and retrieving the data. It’s written in Go and consists of a large set of components and modules, which are shown in the high level architecture diagram below. + +DDC nodes operations are coordinated and rewarded through smart contracts running on the Cere test/main blockchains. + +This section covers the configuration of DDC Smart Contracts and DDC Inspector nodes. + +{% hint style="info" %} +**For more details on DDC Storage nodes, see the DDC book:** [**https://cerebellum-network.github.io/ddc-storage-node/**](https://cerebellum-network.github.io/ddc-storage-node/)**** +{% endhint %} diff --git a/learn/council.md b/learn/council.md new file mode 100644 index 0000000..7d0c4ea --- /dev/null +++ b/learn/council.md @@ -0,0 +1,31 @@ +# Council + +### Council + +Cere Network's Council serves as an elected body of network participants that are intended to represent the passive stakeholders of the greater Cere Network. The Council serves two primary tasks in the Cere Network governance process: proposing referenda and vetoing malicious or dangerous referenda. + +### Submitting Candidacy + +In order to join the Cere Network Council, the submission request requires a small amount of Cere Tokens to be bonded. The bond will be forfeited if the candidacy submission does not win or becomes a runner-up. If you are elected to the Council, the bond will remain kept. + +If you intend to run for a spot on the Council, it is a good idea to announce your intentions in one of Cere's public forums(Telegram, Twitter, etc.) prior to your submission, so that your supporters will know when to vote for you. + +### Submission + +Navigate to the Cere Network Council tab [here](https://explorer.cere.network/#/council). Click on the "Submit candidacy" button. + +![](<../.gitbook/assets/submit council.PNG>) + +After completing the transaction, you will see your account appear in the "Candidates" row. + +![](../.gitbook/assets/candidates.PNG) + +Once your submission is in, we recommend kicking off the voting process by giving yourself the first vote. Click on the "Vote" button to initiate the transaction. + +![](<../.gitbook/assets/submit council.PNG>) + +If you were selected to join the council during the voting period, you will have won the council election and your account will now display under the "Members" section. + +![](../.gitbook/assets/currentcouncil.PNG) + +Congratulations on being elected! Now you are able to participate by making motions or voting on proposals. diff --git a/learn/governance.md b/learn/governance.md new file mode 100644 index 0000000..63c2c63 --- /dev/null +++ b/learn/governance.md @@ -0,0 +1,119 @@ +# Governance + +The system by which entities are directed and controlled. It is concerned with structure and processes for decision making, accountability, control and behaviour at the top of an entity.\ + + +### Mechanism + +Public and Council can make changes to the network via referenda which will go through the referendum where all CERE holders, weighted by stake, make the decision.\ + + +### Referenda + +Referenda are simple, inclusive, stake-based voting schemes. For instance, Upgrading the number of validators from 600 to 700. They are discrete events with fixed voting periods. They are binary, the only option in voting is "aye" or "nay" or abstaining entirely. + +### Type + +There are several types of proposals: + +* Publicly submitted proposals; +* Proposals submitted by the council, either through a majority or unanimously; +* Proposals submitted as part of the enactment of a prior referendum; +* Emergency proposals submitted by the Technical Committee and approved by the Council. + +Enactment time — 28 days. + +Note: For emergency proposals, the enactment period will be shorter.\ + + +### Proposing a Referendum + +#### Public Referenda + +Who: Anyone can propose + +How: Depositing the minimum amount of tokens for a certain period (number of blocks). + +What happens Next: + +1. If someone agrees with the proposal, they may deposit the same amount of tokens to support it - this action is called seconding. +2. The referendum with the highest number of bonding will be selected for next voting cycle. +3. Only the number of tokens will be considered for moving to voting irrespective of the number of accounts contributed. + +Maximum of 100 public proposals in the proposal queue. + +#### Council Referenda + +Unanimous Council - All members of the council agree on a proposal + +Majority Council - Agreement from only a simple majority of council members only be one active referendum at any given time, except when there is also an emergency referendum in progress. + +#### Voting Timetable + +2 Queues + +Public referenda + +Council referenda + +The referendum to be voted upon alternates between the top proposal in the two queues. + +The "top" proposal is determined by the amount of stake bonded behind it + +#### Voting on a referendum + +To vote, a voter generally must lock their tokens up for at least the enactment delay period (28 days) beyond the end of the referendum. + +It is possible to vote without locking at all, but your vote is worth a small fraction of a normal vote, given your stake. + +#### Tallying + +approve - the number of aye votes against - the number of nay votes turnout - the total number of voting tokens (does not include conviction) electorate - the total number of CERE tokens issued in the network + +#### Super-Majority Approve + +![](<../.gitbook/assets/Screenshot from 2021-03-05 14-26-09.png>) + +#### Super-Majority Against + +![](<../.gitbook/assets/Screenshot from 2021-03-05 14-26-13.png>) + +#### Simple Majority + +Approve > Against + +### Submit public referenda + +#### How to submit a proposal for the Network? + +In order to submit a proposal: + +1. Go to the [Cere Explorer](https://explorer.cere.network/#/democracy): Governance -> Democracy +2. Click on Submit Pre-image and fill in the form. Let’s say you want to propose to increase the amount of validators: + +![](https://lh4.googleusercontent.com/\_1cArZLMCjvmsBQgsdzvSQiz3loqP66yoaJi8oMmd-tUBu1FoJJrqBdkjVhtC-UjAfhLA0YoGY6m4wGU5YKbzqCeX9dmy2mdAdP4\_XHVKNgJdwJRpMJrPSmNA-eQHWA766Z-jaAd) + +1. Copy preimage hash to the Clipboard +2. Click “Submit preimage”, then “Sign and Submit” +3. Click “Submit proposal” +4. Specify “preimage hash” and “locked balance”: + +![](https://lh3.googleusercontent.com/sov452bEOsT7zzHL8\_uI1w8Zo1TxY\_1BipIOI-Y\_\_gdDO8PRU2-g5geJAs\_vFB1ZzO62jOzDoMW7OgGYk8Z6Yv\_vLNbr0sGI9qGM\_vZ3cgLVg-sEQzeIQ4kW0kJzHPU5Wbr4rld0) + +1. Click “Submit proposal” button then “Sign and Submit” + +Now you should be able to see it in “proposals” section: + +![](https://lh4.googleusercontent.com/0cvr0kuFO\_4hypk8w2GLa9xBuJn8LABvUjp5yDGic1CuL8jBARznRvAWIyjHTmfXhMhPQl4qFfo7G4\_kQs-hAoAkjn-OGkoMvfk2l2zbYmg1YegL6QbspfHMy5xQ9lZRJOHXjw6Q) + +#### How to vote for the proposal? + +Wait until the end of each launch period for example for the current proposal you will need to wait about 22 days: + +![](https://lh3.googleusercontent.com/NBN9yEsYzJQNhI1AJBiFlk7o11\_Z35YXRL1sSXIRIpxl8Md1G\_7pREsF2LAbqjIa86XEHli0KIbTrycp\_WeLlT03mY21HmFk5elCC1O8DXLRB4BwbjjvsrL8kDWPOm0l6K\_H6Bgc) + +After this, the most seconded proposal will move to a referendum. After that others can vote for the changed param. + +#### How does the proposal get applied? + +Once all participants voted the change will be applied.\ diff --git a/learn/slashing.md b/learn/slashing.md new file mode 100644 index 0000000..633e9b3 --- /dev/null +++ b/learn/slashing.md @@ -0,0 +1,49 @@ +# Staking/Slashing + +### Staking + +Cere Network uses NPoS (Nominated Proof-of-Stake) as its mechanism for selecting the validator set. + +Nominators may back up to 16 validators as trusted validator candidates. + +Validators do most of the heavy lifting: they produce new block candidates in BABE, vote, and come to consensus in GRANDPA. Nominators, on the other hand, do not need to do anything once they have bonded their CERE. The experience of the nominator is similar to "set it and forget it," while the validator will be doing active service for the network by performing the critical operations. + +### Slashing + +Slashing is a mechanism built into proof of stake blockchain protocols to discourage validator misbehavior. Slashing is designed to incentivize node security, availability, and network participation. + +Slashing will happen if a validator misbehaves (e.g. goes offline, attacks the network, or runs modified software) in the network. They and their nominators will get slashed by losing a percentage of their bonded/staked CERE. Any slashed CERE will be added to the Treasury. + +Once a validator gets slashed, it goes into the state as an "unapplied slash". While unapplied, a governance proposal can be made to reverse it during this period. After the grace period, the slashes are applied. + +The following levels of offense are defined (for specific slash amounts, see the equations in the section below): + +* Level 1: isolated unresponsiveness, i.e. being offline for an entire epoch. No slashing, only chilling. +* Level 2: concurrent unresponsiveness or double-signing. Slashes a very small amount of the stake and chills. +* Level 3: misconducts unlikely to be accidental, but which do not harm the network's security to any large extent. Examples include concurrent equivocation or isolated cases of unjustified voting in GRANDPA. Slashes a moderately small amount of the stake and chills. +* Level 4: misconduct that poses serious security or monetary risk to the system, or mass collusion. Slashes all or most of the stake behind the validator and chills. + +#### GRANDPA Equivocation + +A validator signs two or more votes in the same round on different chains. + +#### BABE Equivocation + +A validator produces two or more blocks on the Relay Chain in the same time slot. + +#### Chilling + +Chilling is the act of removing a validator from the active validator set, also disqualifying them from the set of electable candidates in the next NPoS cycle. + +### Claiming rewards + +In order to be paid your staking rewards, someone must claim them for each validator that you nominate. Staking rewards are kept available for 84 eras, which is approximately 84 days. For more information on why this below. + +### Payouts + +Anyone can trigger a payout for any validator, as long as they are willing to pay the transaction fee. Someone must submit a transaction with a validator ID and an era index. Cere Network will automatically calculate that validator's reward, find the top 128 nominators for that era, and distribute the rewards pro-rata. + +If a payout is possible, you may trigger a payout by going to the [payout dashboard ](https://explorer.cere.network/#/staking/payout)and clicking the `payout-all` button and signing the transaction. + +![](../.gitbook/assets/payoutall.png) + diff --git a/learn/treasury.md b/learn/treasury.md new file mode 100644 index 0000000..9991c52 --- /dev/null +++ b/learn/treasury.md @@ -0,0 +1,24 @@ +# Treasury + +### Treasury + +Cere Network Treasury is a pool of funds derived from transaction fees, slashing, and staking inefficiencies. Cere Network Treasury conforms to a 1 day budgeting spend period which serves as a waiting period before any funds can be spent via Treasury proposals. Cere's Treasury is ultimately controlled by the Council, and how the funds are spent is up to the majority Council's judgment. + +### Budgeting Period + +Cere's default budgeting period is set to 24 days. This duration is subject to change via [governance ](governance.md)proposals. During the budgeting period, the funds held in the Treasury pool may be spent by submitting a spending proposal and will need to be approved by the Council. If the spending proposal is approved, the spending proposal then enters a spending queue. If the Treasury pool ends a budgeting period without spending all of its funds, it suffers a burn of a percentage of the pool's funds + +### Treasury Funding + +The sources for funding the Treasury consist of a list of events and actors participating in Cere Network: + +* Slashing: When any slashing event occurs, the amount is sent to the Treasury with some reward going to the entity that reported the validator to be slashed. The reward is taken from the total slash amount and varies per occurrence and number of reporters +* Transaction Fees: A portion of each block's transaction fees goes to the Treasury, with the remainder going to the block author. + +### Treasury Proposals + +The proposer has to deposit 5% of the requested disbursement amount as an anti-spam measure. This deposit is burned if the proposal is rejected, or refunded otherwise. The deposit fee percentage is subject to governance and may change over time. + +To minimize storage on-chain, proposals need not include contextual information. Because of this, our Treasury proposals will be announced on one of our community forums to inform the community and explain in detail the proposal. + +To create a proposal, you can navigate to the Cere Network Treasury dashboard [here](https://explorer.cere.network/#/treasury). From the dashboard, you can submit a proposal to a list of accounts known to Cere Network. Once a proposal has been submitted, you will need to send the proposal to the Council to perform a vote. At this point, a Council member can create a motion to accept or reject the Treasury proposal. It is possible that one motion to accept and another motion to reject are both created. The threshold for accepting a Treasury proposal is at least three-fifths of the Council. On the other hand, the threshold for rejecting a proposal is at least one-half of the Council. diff --git a/mainnet/network-details.md b/mainnet/network-details.md new file mode 100644 index 0000000..991fa1b --- /dev/null +++ b/mainnet/network-details.md @@ -0,0 +1,34 @@ +# Network details + +### Network description + +| | | +| -------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| **Name** | Cere Mainnet | +| **Decimals** | 10 | +| **Native Token** | CERE | +| **Full Node RPC** | [https://rpc.mainnet.cere.network:9934](https://rpc.mainnet.cere.network:9934) | +| **Full Node Websocket** | [wss://rpc.mainnet.cere.network:9945](wss://rpc.mainnet.cere.network:9945) | +| **Archive Node RPC** | [https://archive.mainnet.cere.network:9934](https://archive.mainnet.cere.network:9934) | +| **Archive Node Websocket** | [wss://archive.mainnet.cere.network:9945](wss://archive.mainnet.cere.network:9945) | +| **Cere Explorer** | [Link](https://explorer.cere.network/) | +| **Cere Stats** | [Link](https://stats.cere.network/) | +| **Custom Types** | [File](https://raw.githubusercontent.com/Cerebellum-Network/cerestats/dev-cere/backend/types/cere\_custom\_types.json) | + +### Bridge description + +| | | +| ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **CERE Token** | [Ethereum Mainnet](https://etherscan.io/address/0x2da719db753dfa10a62e140f436e1d67f2ddb0d6) | +| **Bridge Contract** | [Ethereum Mainnet](https://etherscan.io/address/0xCaF65AB2eC9B39403966991eb34B1e8B9E44C041) | +| **ERC20 Handler Contract** | [Ethereum Mainnet](https://etherscan.io/address/0x8fe028Eb002bbc3ec45c5dF8acfFf67eC95B6f88) | +| **CERE ERC20 -> CERE Bridge UI (**[**MetaMask**](https://metamask.io/) **is requiered)** | [Link](https://bridge.cere.network/) | +| **Relayer health check - Ethereum** |

Relayer-0

Relayer-1

Relayer-2

| +| **Deposit successful transaction example** | [Ethereum Mainnet](https://etherscan.io/tx/0x664b094d027833f9441dd6b3d35db9698b41b5d42fe86b894dc4a09df4829118) | +| **Deposit successful transaction example** | [Cere Mainnet](https://block-viewer.cere.network/?rpc=wss%3A%2F%2Farchive.mainnet.cere.network%3A9945#/explorer/query/0x52b85e1e5bd101b8b1f39949d0046a5c4ff298fbaf8704503122ea65b62135ed) | + +### DDC + +| | | +| --------------- | ----------------------------------- | +| **Web console** | [Link](https://ddc.cere.network/#/) | diff --git a/node/install-and-update/README.md b/node/install-and-update/README.md new file mode 100644 index 0000000..869ebb1 --- /dev/null +++ b/node/install-and-update/README.md @@ -0,0 +1,2 @@ +# Install and update + diff --git a/node/install-and-update/become-a-full-archive-node.md b/node/install-and-update/become-a-full-archive-node.md new file mode 100644 index 0000000..b8cfe3a --- /dev/null +++ b/node/install-and-update/become-a-full-archive-node.md @@ -0,0 +1,7 @@ +# Become a Full / Archive Node + +1. Wait until your local Node will be synced. Syncing should happen automatically after X minutes. + +![node-synced](https://staticassetsshare.s3-us-west-2.amazonaws.com/validator/node-synced.png) + +Congratulations! Your Full / Archive Node is ready for use! diff --git a/node/install-and-update/become-a-validator.md b/node/install-and-update/become-a-validator.md new file mode 100644 index 0000000..e9ec9aa --- /dev/null +++ b/node/install-and-update/become-a-validator.md @@ -0,0 +1,46 @@ +# Become a Validator + +From this section you will know how to become a Validator. + +1. Create a `Stash` account by following the [instructions](https://cere-network.gitbook.io/cere-network/tools/cere-explorer/how-to-create-an-account-by-using-cere-explorer). +2. Create a `Controller` account by following the [instructions](https://cere-network.gitbook.io/cere-network/tools/cere-explorer/how-to-create-an-account-by-using-cere-explorer). +3. **Testnets Only!** - **** Fund Stash and Controller accounts with native tokens by using [Cere FriendBot](https://laboratory.cere.network/#/friend-bot) (you can take accounts public keys in the [Account tab in the Cere Explorer ](https://explorer.cere.network/#/accounts)by clicking on the round icon left to the account name). +4. Wait until your local Node will be synced. Syncing should happen automatically after X minutes. +5. Add a Validator via [Cere Explorer](https://explorer.cere.network/) (check [here](https://cere-network.gitbook.io/cere-network/tools/cere-explorer/how-to-connect-to-your-node-with-cere-explorer) how to connect to your node). + 1. Generate `Session Key`. + 1. Go to `Developer` → `RPC calls.` + 2. Select `author` → `rotateKeys()` function. + 3. Click `Submit RPC call.` + 4. Store your `session key` for the later steps (double click on the response below and copy to clipboard). `session key` example can be found below: + + ``` + 0x11b76096f732a6d22bcfc0c1b5acfe871d8430e2d44a60765d6bb4f4db989ed354e2a0cc60489c4e5c850a2d83e778f9968e3cd3acba86f24f9ea522c95755101ec09626e5ec94c5a10ca83b4994fe580a6ab9f6f720f97858b905d84d794f072603b677467097c1209ebab19a14d285e6174004e4f1459c4f823bb5c8a05c0c + ``` + 2. Setup Validator + 1. Go to `Network` → `Staking` + 2. Select `Account Actions` tab and click `+ Validator` + 3. Bond your Tokens. Bond a maximum of 95% of your tokens so that you are still able to pay for transaction fees. + 4. Click `next.` + 5. Enter generated `Session Key` then you will have your account in the validators account list. + 6. Set `reward commission percentage` equal to `5` + 7. Press `Bond & Validate` + 8. Press `Sign and Submit` +6. **IGNORE if you completed #5, BETA!** - Add a Validator by using an automated script. + 1. Replace the [./scripts/validator/.env](https://github.com/Cerebellum-Network/nodes-installation-scripts/blob/master/scripts/validator/.env) with appropriate values. + + | Parameter | Description | + | ----------------------------- | ------------------------------------------------------------------ | + | PROVIDER | Websocket link for the local node | + | STASH\_ACCOUNT\_MNEMONIC | Stash account mnemonic | + | CONTROLLER\_ACCOUNT\_MNEMONIC | Controller account mnemonic | + | BOND\_VALUE | Staking value (Should be multiplied to 10^15) | + | REWARD\_COMMISSION | Percentage reward (0-100) that should be applied for the validator | + 2. Run the script. + + ``` + docker-compose --env-file ./scripts/validator/.env up add_validator + ``` + 3. Once it is finished, you should be able to see `Validator added successfully!` message. + 4. Clean up the values in [./scripts/validator/.env](https://github.com/Cerebellum-Network/nodes-installation-scripts/blob/master/scripts/validator/.env). + +Congratulations! Now your Validator is in a waiting state. diff --git a/node/install-and-update/how-to-fix-environment-errors.md b/node/install-and-update/how-to-fix-environment-errors.md new file mode 100644 index 0000000..ae52790 --- /dev/null +++ b/node/install-and-update/how-to-fix-environment-errors.md @@ -0,0 +1,15 @@ +# How to fix environment errors + +1. ✘ Please change `chain-data` folder permission to 777. + * Add permission to the `chain-data` folder by following the instructions in the `Start a Node` section [point #2](https://cere-network.gitbook.io/cere-network/node/install-and-update/start-a-node#start-a-node). +2. ✘ Please install NTP Time Server or reconfigure your NTP Time Server. + * Install NTP Time Server by following the [instructions](https://cere-network.gitbook.io/cere-network/node/install-and-update/install-and-configure-network-time-protocol-ntp-client). +3. ✘ Please install `lsof` or open your node port `9944`. + * Install `lsof` by following the commands: + + ``` + sudo apt-get update -y + sudo apt-get install -y lsof + ``` + * Check docker container opened ports by following the command:`docker ps` + * Recreate the docker container by following the instructions in the `Start a Node` section [point #6](https://cere-network.gitbook.io/cere-network/node/install-and-update/start-a-node#start-a-node). diff --git a/node/install-and-update/install-and-configure-network-time-protocol-ntp-client.md b/node/install-and-update/install-and-configure-network-time-protocol-ntp-client.md new file mode 100644 index 0000000..186e5f6 --- /dev/null +++ b/node/install-and-update/install-and-configure-network-time-protocol-ntp-client.md @@ -0,0 +1,30 @@ +# Install & Configure Network Time Protocol (NTP) Client + +In this guide you will learn how to: + +* Install NTP +* Configure NTP + +## Overview + +NTP is a networking protocol designed to synchronize the clocks of computers over a network. NTP allows you to synchronize the clocks of all the systems within the network. Currently, it is required that validators' local clocks stay reasonably in sync, so you should be running NTP or a similar service. You can check whether you have the NTP client by running: + +## Linux + +If you are using Ubuntu 18.04 / 19.04, NTP Client should be installed by default. + +``` +timedatectl +``` + +If NTP is installed and running, you should see System clock synchronized: `yes` (or a similar message). If you do not see it, you can install it by executing: + +``` +sudo apt-get install ntp +``` + +`ntpd` will be started automatically after install. You can query `ntpd` for status information to verify that everything is working: + +``` +sudo ntpq -p +``` diff --git a/node/install-and-update/node-logs.md b/node/install-and-update/node-logs.md new file mode 100644 index 0000000..1523ef5 --- /dev/null +++ b/node/install-and-update/node-logs.md @@ -0,0 +1,36 @@ +# Node logs + +**In this guide you will learn how to:** + +* How to check application logs +* How to change the log level +* How to collect logs + +## Check application logs + +You can check logs by running the following command (more `logs` command parameters can be found [here](https://docs.docker.com/compose/reference/logs/)): + +``` +docker-compose logs -f --tail=100 add_validation_node_custom +``` + +## Change log level + +By default, LOG\_LEVEL `debug` is enabled. To change it, please, update correspond variable in the [Network .env file](node-logs.md#check-application-logs). The following LOG\_LEVELS are supporting: + +1. error +2. warn +3. info +4. debug +5. trace + +## Collect logs + +In order to collect logs you can use the following command: + +* Collect application logs: \\ + + `docker-compose logs add_validation_node_custom > app_logs.txt` +* Collect system logs: \\ + + `dmesg > system_logs.txt` diff --git a/node/install-and-update/start-a-node.md b/node/install-and-update/start-a-node.md new file mode 100644 index 0000000..bdd443d --- /dev/null +++ b/node/install-and-update/start-a-node.md @@ -0,0 +1,69 @@ +# Start a Node + +## **Pre Requirements** + +1. [Install Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) +2. [Install Docker](https://docs.docker.com/get-docker/) +3. [Install Docker Compose 1.25.0+](https://docs.docker.com/compose/install/) +4. [Install & Configure Network Time Protocol (NTP) Client - Linux only](https://cere-network.gitbook.io/cere-network/node/install-and-update/install-and-configure-network-time-protocol-ntp-client) + +## **Start a Node** + +To run a Node on your host, please, follow the steps below. + +1. Clone the [repository](https://github.com/Cerebellum-Network/nodes-installation-scripts) and go to its folder: + + ``` + git clone https://github.com/Cerebellum-Network/nodes-installation-scripts.git + cd nodes-installation-scripts + ``` +2. Add permissions to the `chain-data` folder: + + ``` + chmod -R 777 ./chain-data + ``` +3. Open the following ports in your firewall so that inbound traffic from the Internet can reach your Node: + 1. Validator Node: + 1. `30333` - Specifies the port that your node will listen for p2p traffic on + 2. Full / Archive Node: + 1. `9933` - Specifies the port that your node will listen for incoming RPC traffic on + 2. `9944` - Specifies the port that your node will listen for incoming WebSocket traffic on + 3. `30333` - Specifies the port that your node will listen for p2p traffic on +4. Select config file depending on Network you are going to connect. + 1. For Testnet `CONFIG_FILE=./configs/.env.testnet`. + 2. For Mainnet `CONFIG_FILE=./configs/.env.mainnet`. +5. Specify `NODE_NAME` parameter in the config file. The value for the `NODE_NAME` will be used to distinguish nodes in the [Telemetry dashboard](https://telemetry.polkadot.io/#list/0x81443836a9a24caaa23f1241897d1235717535711d1d3fe24eae4fdc942c092c). +6. Run the command to start a Node. Since this moment your Node will run in the background. + 1. Validator Node: + + ``` + docker-compose --env-file ${CONFIG_FILE} up -d add_validation_node_custom + ``` + 2. Full Node: + + ``` + docker-compose --env-file ${CONFIG_FILE} up -d full_node + ``` + 3. Archive Node: + + ``` + docker-compose --env-file ${CONFIG_FILE} up -d archive_node + ``` +7. Run the command to confirm Node has been started successfully. + + ``` + docker-compose logs -f | grep "Local node identity is" + ``` + + You should have at least one line in the output. Below is an example: + + ``` + Mar 03 14:42:23.973 INFO Local node identity is: 12D3KooWLafVQ2XGQS8A3rdj9t8rX5UFcVGxtx8a9vgQsYJi7Rdz (legacy representation: 12D3KooWLafVQ2XGQS8A3rdj9t8rX5UFcVGxtx8a9vgQsYJi7Rdz) + ``` + + If you can not see the output in more than 2 minutes you should check node logs. Use the [instructions](https://cere-network.gitbook.io/cere-network/node/install-and-update/node-logs) to know more about logs and their set up. +8. Launch [Cere Explorer ](https://explorer.cere.network/)and [connect to your node](https://cere-network.gitbook.io/cere-network/tools/cere-explorer/how-to-connect-to-your-node-with-cere-explorer). You can check the Node's `syncing` status. To do this go to the `Network` -> `Explorer` -> `Node info`. It should be equal to `yes` or `no` (synced already). + +Congratulations! You've successfully started a Node on your host. \ +\ +Please, follow the "Become a Validator or Full / Archive Node" instructions to finish setting up. diff --git a/node/install-and-update/update-a-validator-node.md b/node/install-and-update/update-a-validator-node.md new file mode 100644 index 0000000..1dd3761 --- /dev/null +++ b/node/install-and-update/update-a-validator-node.md @@ -0,0 +1,54 @@ +# Update a Validator Node + +This manual is supposed to be used for upgrading your Validator Node or machine and keeping your Validator online. The process will take several hours, so make sure you understand the instructions first and plan accordingly. + +## Key components + +Validator A - current validator + +Validator B - new validator + +Machine A - a machine where Validator A is hosting + +Machine B - a machine where Validator B is hosting + +## Steps + +1\. Launch Validator B on Machine B by following the [instructions (1-6)](https://cere-network.gitbook.io/cere-network/node/install-and-update/start-a-node) and wait until it is synced. + +2\. Connect with the [Cere Explorer](https://explorer.cere.network/) to Validator B. + +3\. Select Tab `Developer` -> `RPC calls`. + +4\. Select `author` -> `rotateKeys`. + +5\. Press `Submit RPC call`. + +6\. Double click on it to save the rotation key to the clipboard. + +![](<../../.gitbook/assets/0 (1).png>) + +7\. Select Tab `Network` -> `Staking` -> `Account actions`. + +![](<../../.gitbook/assets/1 (1).png>) + +8\. Select `Validators`. + +9\. Select Validator with Controller/Stash accounts as in Validator A, press 3 dots -> `Change session keys`. + +10\. Insert previously generated rotation key. + +![](<../../.gitbook/assets/2 (1).png>) + +11\. Press `Set session key`. + +12\. **!Important** Wait until the message `Pre-sealed block for proposal at` **appears** in Validator B and **disappears** in Validator A logs. You can do it by running the following command in the Validator Nodes root directory:\ +****`docker-compose logs -f --tail=1000 | grep "Pre-sealed block for proposal at"` + +13\. Now you can safely stop Validator A using command: `docker-compose stop add_validator_node_custom` in order to update either the Validator A itself or Machine A. + +14\. Repeat steps 1-12 for Validator A on Machine A. + +15\. Now you can stop Validator B. + +16\. You’re done, the Validator A has been updated successfully. diff --git a/other/README.md b/other/README.md new file mode 100644 index 0000000..cc0f5a7 --- /dev/null +++ b/other/README.md @@ -0,0 +1,2 @@ +# Other + diff --git a/other/hardware-recommendations.md b/other/hardware-recommendations.md new file mode 100644 index 0000000..ce506fd --- /dev/null +++ b/other/hardware-recommendations.md @@ -0,0 +1,5 @@ +# Hardware Recommendations + +* **CPU** - Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz +* **Storage** - A NVMe solid state drive. Should be reasonably sized to deal with blockchain growth. Starting around 80GB - 160GB will be okay, but will need to be re-evaluated every six months. +* **Memory** - 2GB - 8GB. 2GB is really the minimum memory you should operate your validator with, anything less than this makes build times too inconvenient. For better performance you can bump it up to 4GB or 8GB, but anything more than that is probably overkill. In order to compile the binary yourself you will likely need \~8GB. diff --git a/other/linux-best-practises.md b/other/linux-best-practises.md new file mode 100644 index 0000000..a858a32 --- /dev/null +++ b/other/linux-best-practises.md @@ -0,0 +1,8 @@ +# Linux Best Practises + +* Never use the root user. +* Always update the security patches for your OS. +* Enable and set up a firewall. +* Never allow password-based SSH, only use key-based access. +* Disable non-essential SSH subsystems (banner, motd, scp, X11 forwarding) and harden your SSH configuration. +* Back up your storage regularly. diff --git a/other/other-notes.md b/other/other-notes.md new file mode 100644 index 0000000..1421130 --- /dev/null +++ b/other/other-notes.md @@ -0,0 +1,13 @@ +# Other Notes + +* Validators should only run the Polkadot binary, and they should not listen on any port other than the configured p2p port. +* Validators should run on bare-metal machines, as opposed to VMs. This will prevent some of the availability issues with cloud providers, along with potential attacks from other VMs on the same hardware. The provisioning of the validator machine should be automated and defined in code. This code should be kept in private version control, reviewed, audited, and tested. +* Session keys should be generated and provided in a secure way. +* Polkadot should be started at boot and restart if stopped for any reason (supervisor process). +* Polkadot should run as a non-root user. +* Must have infrastructure that protects the validator's signing keys so that an attacker cannot take control and commit slashable behavior. +* Must be high availability. + +Session keys used by a validator should always be isolated to just a single node. Replicating session keys across multiple nodes could lead to equivocation slashes, or soon to parachain validity slashes which can make you lose 100% of your staked funds. + +The good news is that 100% uptime of your validator is not really needed, as it has some buffer within eras in order to go offline for a little while and upgrade.\ diff --git a/testnet/network-details.md b/testnet/network-details.md new file mode 100644 index 0000000..b10ccfe --- /dev/null +++ b/testnet/network-details.md @@ -0,0 +1,33 @@ +# Test Network details + +### Network description + +| | | +| -------------------------- | -------------------------------------------------------------------------------------- | +| **Name** | Cere Testnet | +| **Decimals** | 10 | +| **Native Token** | CERE | +| **Full Node RPC** | [https://rpc.testnet.cere.network:9934](https://rpc.testnet.cere.network:9934) | +| **Full Node Websocket** | [wss://rpc.testnet.cere.network:9945](wss://rpc.testnet.cere.network:9945) | +| **Archive Node RPC** | [https://archive.testnet.cere.network:9934](https://archive.testnet.cere.network:9934) | +| **Archive Node Websocket** | [wss://archive.testnet.cere.network:9945](wss://archive.testnet.cere.network:9945) | +| **Cere Explorer** | [Link](https://explorer.cere.network/) | +| **Cere Faucet** | [Link](https://laboratory.cere.network/#/friend-bot) | + +### Bridge description + +| | | +| ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **CERE Token** | [Ethereum Goerli](https://goerli.etherscan.io/address/0x0b10e304088b2BA2B2acfD2f72573FAaD31a13A5) | +| **Bridge Contract** | [Ethereum Goerli](https://goerli.etherscan.io/address/0x4E297d17A3d945Ed96dBbD205317501e92d8D6E8) | +| **ERC20 Handler Contract** | [Ethereum Goerli](https://goerli.etherscan.io/address/0x92c1576845703089CF6c0788379ED81f75F45dd5) | +| **CERE ERC20 -> CERE Bridge UI (**[**MetaMask**](https://metamask.io/) **is requiered)** | [Link](https://bridge.stage.cere.network/) | +| **Relayer health check - Ethereum** |

Relayer-0

Relayer-1

Relayer-2

| +| **Deposit successful transaction example** | [Ethereum Goerli](https://goerli.etherscan.io/tx/0xd79970a0119db4143eb13f579e28979803fe4fdd6e1ce3ca16f24ea4d735332e) | +| **Deposit successful transaction example** | [Cere Testnet](https://block-viewer.cere.network/?rpc=wss%3A%2F%2Farchive.testnet.cere.network%3A9945#/explorer/query/0x5d300e8f4555372ac25d02d16c46dde929eae58b5a46ad7c9141c85ca18621ab) | + +### DDC + +| | | +| --------------- | ------------------------------------------------ | +| **Web console** | [Link](https://ddc.stage.cere.network/#/account) | diff --git a/tools/cere-bridge.md b/tools/cere-bridge.md new file mode 100644 index 0000000..d7cb5d0 --- /dev/null +++ b/tools/cere-bridge.md @@ -0,0 +1,3 @@ +# Cere Bridge + +Cere Bridge can be found [here](https://bridge.cere.network). diff --git a/tools/cere-explorer/README.md b/tools/cere-explorer/README.md new file mode 100644 index 0000000..4b4c45d --- /dev/null +++ b/tools/cere-explorer/README.md @@ -0,0 +1,3 @@ +# Cere Explorer + +Cere Explorer can be found [here](https://explorer.cere.network). diff --git a/tools/cere-explorer/how-to-connect-to-your-node-with-cere-explorer.md b/tools/cere-explorer/how-to-connect-to-your-node-with-cere-explorer.md new file mode 100644 index 0000000..916ff30 --- /dev/null +++ b/tools/cere-explorer/how-to-connect-to-your-node-with-cere-explorer.md @@ -0,0 +1,21 @@ +# How to connect to your Node with Cere Explorer + +### Your Node is on a remote host + +1. Login into your remote host by using the ssh reverse proxy and command: + + `ssh -L 9944:localhost:9944 remote-host` +2. Launch [Cere Explorer](https://explorer.cere.network/). +3. Select "Local Node" from the "Development" tab by clicking on the Networks selector in the top left corner. + + +4. Click on the "Switch" button to connect to your Local Node. + + ![](https://lh3.googleusercontent.com/M87zZk39ymTSuGkmsL7AfQN\_sjm2pm4ftETvENvpmbEu4a\_-nTM\_26nr6\_mw2opmsJePUmbumyZ6VbgJ6ZJkQtMBUuI6wgZyK5zt4KYJ1-KlTTLbTYedeJa9cHvShEINywq8ZaAM) +5. You are done. + +### Your Node is on a localhost + +1. Execute steps 2-4 from your Node is on a remote host [section](https://cere-network.gitbook.io/cere-network/tools/cere-explorer/how-to-connect-to-your-node-with-cere-explorer). +2. You are done. + diff --git a/tools/cere-explorer/how-to-create-an-account-by-using-cere-explorer.md b/tools/cere-explorer/how-to-create-an-account-by-using-cere-explorer.md new file mode 100644 index 0000000..59449f7 --- /dev/null +++ b/tools/cere-explorer/how-to-create-an-account-by-using-cere-explorer.md @@ -0,0 +1,30 @@ +# How to create an account by using Cere Explorer + +This section describes how you can create a new account using Block Viewer. + +* Open [Cere Explorer](https://explorer.cere.network/) +* Go to Accounts -> Accounts +* Click “Add Account” on the top right +* Fill in the form: + * Copy mnemonic + * Save it to somewhere to be able to restore your account later + * Select checkbox “I have saved my mnenomic see safely” + * Click “Next”: + +![](https://lh3.googleusercontent.com/ueJB0vfQZfWE1tLpESQTeXHKE\_jBakRseD-qKjhRLips0ksmp9L8vTrhojNznspBNrrI\_rnzFHj6JcDrdEYk2I8sxVA\_2ChS3C\_\_eamm\_AgBiVgbWotFcEJ\_o8qlloZ\_Xh5fKi8A) + +* Fill in the next step: + * Enter any name + * Enter password + * Repeat password + * Click “Next”: + +![](https://lh4.googleusercontent.com/Do8p8X9ixqJVXR34JHjMqACMLtC8LDBQC\_kzzhibqxZdmNUV6DfRAQVARMz1t-A8eeUiTmYeysR9B0yxCcX37ZkD1aJI\_NIXUz9HlM7Ls4hJNr7PhZphB\_4YiU1aF5QbJ4M1nxmH) + +* Click “Save”: + +![](https://lh3.googleusercontent.com/cK84NGuMZWBTLfjoeRWR5Tib7KnplH4hu-nbtVv-6en1fYG4gfVeKWhOHcIgpuZOYeL16wbBzDqzSXE3yw8xjXiIzkv9sJcDdIqzBu98aSBsEPDGtu28pse88U3ta7ZbN6mwozph) + +* After the account is created it is important to store the JSON file which the browser just downloaded. Using this file you will be able to restore your account in the future. + +Now you should be able to see your account in the [accounts section](https://explorer.cere.network/#/accounts). diff --git a/tools/cere-explorer/prepare-a-browser-to-work-with-cere-explorer.md b/tools/cere-explorer/prepare-a-browser-to-work-with-cere-explorer.md new file mode 100644 index 0000000..4cb6a0f --- /dev/null +++ b/tools/cere-explorer/prepare-a-browser-to-work-with-cere-explorer.md @@ -0,0 +1,19 @@ +# Prepare a browser to work with Cere Explorer + +In this section you will learn how to prepare a browser to work with Cere Explorer. + +## Google Chrome + +1. Nothing to do. + +## Brave + +1. Disable Trackers & ads blocking (Settings -> Get started -> Shields) to be able to connect to the local Node by websocket ws. + +## Firefox + +1. Nothing to do. + +## Safari + +1. Safari does not support connect to the local Node by websocket ws. At the same time, it can be used to connect to any Node by wss.