Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RON-313] docs(README): update overview and contributions #158

Merged
merged 53 commits into from
Nov 14, 2022
Merged
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
47fe1c6
feat(consortiumV2): add consortium v2 block config (#91)
linh-1 Aug 10, 2022
b2fa4a8
[RON-156] feat(consortiumV2): implement Engine interface for Consorti…
linh-1 Aug 11, 2022
1804181
[RON-156] feat(consortiumV2): implement Consortium v2 interface (#92)
linh-1 Aug 11, 2022
69eef57
Add systemcontracts and function to trigger systemcontracts at forked…
DNK90 Aug 11, 2022
11c94a2
[RON-161] feat: implement function to interacting with smart contract…
linh-1 Aug 12, 2022
7a4df0a
chore: update FinalizeAndAssemble method in Engine interface (#96)
linh-1 Aug 15, 2022
2c11cbb
[RON-165] Implement Snapshot methods (#98)
linh-1 Aug 16, 2022
6c36681
feat: implement Consortium v2 verify methods (#99)
linh-1 Aug 16, 2022
1c01b4f
feat: implement Prepare method (#100)
linh-1 Aug 17, 2022
8b79c77
[RON-169] feat: implement Finalize and FinalizeAndAssemble methods (#…
linh-1 Aug 17, 2022
2c80171
feat (dnk90): Add sample generated code of validators SC (#103)
DNK90 Aug 17, 2022
a488119
[DPoS] fix: call smart contract through backend instead of ethapi (#104)
linh-1 Aug 19, 2022
284a08d
Fix: add update validators to `finalize` method (#106)
DNK90 Aug 21, 2022
38e4cf7
fix: update validators generated code (#107)
DNK90 Aug 21, 2022
9c045ab
fix: Add missing signTx params when calling `consortium.Authorize` on…
DNK90 Aug 21, 2022
e5b4e18
Fix pointer issue validating end of v1 (#109)
DNK90 Aug 22, 2022
4a50253
feat: implement Seal method (#111)
linh-1 Aug 23, 2022
538cd07
[RON-202] feat: implement CalcDifficulty and Delay methods (#112)
linh-1 Aug 23, 2022
d629b9a
Chore: Add sign tx fn to contract integrator (#110)
DNK90 Aug 23, 2022
f4ceaae
fix: Missing recents list in snapshot while switching v1 to v2 (#113)
DNK90 Aug 25, 2022
bb4573c
fix: Implement `PoSA` interface methods to main Consortium (#114)
DNK90 Aug 25, 2022
77bfe54
nit: Remove redundant codes (#115)
DNK90 Aug 26, 2022
791752d
fix(genesis): remove system contract (#117)
linh-1 Sep 1, 2022
50b8035
feat: write unit tests for utils (#116)
linh-1 Sep 1, 2022
50ad714
fix: reorgs and incorrect nonce in consortium-v2 (#118)
DNK90 Sep 5, 2022
0eeea95
chore: check signer in turn in `Seal` function instead of use `signer…
DNK90 Sep 6, 2022
7df546e
feat: integrate smart contract (#120)
linh-1 Sep 8, 2022
12f331c
Run FinalizeAndAssemble only on validator node (#122)
minh-bq Sep 13, 2022
0e3bdff
fix: verify signer on v1 (#123)
linh-1 Sep 13, 2022
5bd6e4d
chore: fix missing signTxFn, clear outdated recents, check missing tx…
linh-1 Sep 16, 2022
9fcf043
Make copy of block header when passing it to FinalizeAndAssemble (#126)
minh-bq Sep 16, 2022
3730672
[RON-250] fix: backward compatible with v1 snapshot (#128)
linh-1 Sep 23, 2022
4101855
[RON-251] fix: unknown ancestor (#129)
linh-1 Sep 23, 2022
6f99ab1
Remove unused variables and functions (#130)
minh-bq Sep 23, 2022
3f1c3d6
Call GetValidators on context of specific block instead of latest blo…
minh-bq Sep 23, 2022
9fc303a
feat: Implement log precompiled contract (#134)
DNK90 Sep 29, 2022
b47da9b
fix: update smart contract ABI (#132)
linh-1 Sep 29, 2022
3af0957
fix: gas limit is not enough when call WrapUp (#135)
linh-1 Sep 29, 2022
25dbc17
fix: race condition while updating precompiles list (#136)
DNK90 Sep 29, 2022
8352824
Init precompile map before assigning elements (#137)
minh-bq Sep 29, 2022
0eea767
feat: Implement `sortValidators` precompiled contract (#138)
DNK90 Oct 3, 2022
89dde97
[RON-264] docs(contract): add code comments (#139)
linh-1 Oct 3, 2022
b4be6f2
fix: return error when failed to slash, wrap up (#133)
minh-bq Oct 3, 2022
73c5780
feat: Implement verifyHeaders precompiled contract which detects doub…
DNK90 Oct 7, 2022
e474e1e
[RON-274] docs(v2consortium): add code comments (#140)
linh-1 Oct 12, 2022
c140273
[RON-276] docs(consortium-main): add code comment, remove unused cons…
linh-1 Oct 12, 2022
5f1499c
Append RONIN_PARAMS in case non-standard network id (#150)
minh-bq Oct 13, 2022
5c1b212
[RON-299] fix: update sortSC precompiled requirements (#151)
linh-1 Oct 14, 2022
397d0d6
fix(entrypoint): failed to decode keystore key (#142)
linh-1 Oct 14, 2022
8ceabe7
chore: add staking contract to chainconfig log (#144)
minh-bq Oct 14, 2022
fea4017
docs(README): update overview and contributions
linh-1 Oct 19, 2022
7d7b6e1
Merge branch 'consortium-v2' into RON-313-update-readme
linh-1 Nov 8, 2022
832c742
chore: update README content
linh-1 Nov 14, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 58 additions & 45 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,15 @@
## Go Ronin

Official Golang implementation of the Ronin protocol.
Official Golang execution layer implementation of the Ronin protocol. It is a fork of Go Ethereum -
[https://github.com/ethereum/go-ethereum](https://github.com/ethereum/go-ethereum) and EVM compatible.

Ronin is a Byzantine Fault Tolerant proof of authority (POA) network operated by validators. Carefully selected, trusted validators are predefined at the bootstrap of the network. Later, new validators can be added or old validators can be removed if the decision is approved by the majority of currently active validators.
Ronin consensus use Proof of Staked Authority, a combination of dPoS and PoA, to increase the level of
decentralization and allows the token holders to join the network as validators

In the future, Ronin consensus will be migrated to dPOS to enable complete decentralization as well as nodes' freedom to join the network as validators/miners. dPoS is a more democratic way of choosing who verifies the next block, allowing a more diverse group of people to participate in the process since it’s based on earned reputation as a lawful staker and not overall wealth. Additionally, because there are a limited number of validators, DPoS allows the network to reach consensus more quickly.

Ronin starts its development based on go-ethereum fork. So you may see many toolings, binaries and also docs are based on Ethereum ones
Check out the [whitepaper]() for more information.

[![Discord](https://img.shields.io/badge/discord-join%20chat-blue.svg)](https://discord.com/invite/pjgPrrZJyZ)

## Building the source

Building `ronin` requires both a Go (version 1.17 or later) and a C compiler. You can install
them using your favourite package manager. Once the dependencies are installed, run

```shell
make ronin
```

or, to build the full suite of utilities:

```shell
make all
```

## Executables

The go-ethereum project comes with several wrappers/executables found in the `cmd`
Expand All @@ -48,6 +33,28 @@ Going through all the possible command line flags is out of scope here (please c
but we've enumerated a few common parameter combos to get you up to speed quickly
on how you can run your own `geth` instance.

### Requirements
The minimum recommended hardware specification for nodes connected to Mainnet is:
- CPU: Equivalent of 8 AWS vCPU
- RAM: 16GiB
- Storage: 1 TiB
- OS: Ubuntu 20.04 or macOS >= 12
- Network: Reliable IPv4 or IPv6 network connection, with an open public port

### Building the source
Building `ronin` requires both a Go (version 1.17 or later) and a C compiler. You can install
them using your favourite package manager. Once the dependencies are installed, run

```shell
make ronin
```

or, to build the full suite of utilities:

```shell
make all
```

### Full node on the main Ronin network

```shell
Expand Down Expand Up @@ -116,31 +123,37 @@ Ethereum nodes with exposed APIs! Further, all browser tabs can access locally
running web servers, so malicious web pages could try to subvert locally available
APIs!**

## Contribution

Thank you for considering to help out with the source code! We welcome contributions
from anyone on the internet, and are grateful for even the smallest of fixes!

If you'd like to contribute to go-ethereum, please fork, fix, commit and send a pull request
for the maintainers to review and merge into the main code base. If you wish to submit
more complex changes though, please check up with the core devs first on [our Discord Server](https://discord.com/invite/pjgPrrZJyZ)
to ensure those changes are in line with the general philosophy of the project and/or get
some early feedback which can make both your efforts much lighter as well as our review
and merge procedures quick and simple.

Please make sure your contributions adhere to our coding guidelines:

* Code must adhere to the official Go [formatting](https://golang.org/doc/effective_go.html#formatting)
guidelines (i.e. uses [gofmt](https://golang.org/cmd/gofmt/)).
* Code must be documented adhering to the official Go [commentary](https://golang.org/doc/effective_go.html#commentary)
guidelines.
* Pull requests need to be based on and opened against the `master` branch.
* Commit messages should be prefixed with the package(s) they modify.
* E.g. "eth, rpc: make trace configs optional"

Please see the [Developers' Guide](https://geth.ethereum.org/docs/developers/devguide)
for more details on configuring your environment, managing project dependencies, and
testing procedures.
## How to contribute

### Contribution guidelines
- Quality: Code in the Ronin project should meet the style guidelines, with sufficient test-cases, descriptive commit
messages, evidence that the contribution does not break any compatibility commitments or cause adverse feature
interactions, and evidence of high-quality peer-review.
- Size: The Ronin project's culture is one of small pull-requests, regularly submitted. The larger a pull-request,
the more likely it is that you will be asked to resubmit as a series of self-contained and individually reviewable
smaller PRs.
- Maintainability: If the feature will require ongoing maintenance (eg support for a particular branch of database),
we nay ask you to accept responsibility for maintaining this feature
- Commit message: Commit messages of Ronin project follows [https://www.conventionalcommits.org/en/v1.0.0/](https://www.conventionalcommits.org/en/v1.0.0/)

### Submit an issue
- Create a new issue
- Comment on the issue (if you'd like to be assigned to it) - that way our team can assign the issue to you
- If you do not have a specific contribution in mind, you can also browse the issues labelled as `help wanted`
- Issues that additionally have the `good first issue` label are considered ideal for first-timers

### Submit your PR
- After your changes are committed to your GitHub fork, submit a pull request (PR) to the `master` branch of the
axieinfinity/ronin repo
- In your PR description, reference the issue it resolves (see [linking a pull request to an issue using a keyword](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword))
- ex: `[FIXES #123] feat: update out of date content`

### Wait for review
- The team reviews every PR
- Acceptable PRs will be approved & merged into the `master` branch

### Release
- You can [view the history of release](https://github.com/axieinfinity/ronin/releases), which include PR highlights

## License

Expand Down