-
Notifications
You must be signed in to change notification settings - Fork 0
(WIP) chore: initial whitepaper structure #55
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
base: main
Are you sure you want to change the base?
Conversation
|
What about writing a yellow paper instead that outlines the current state of the Gno.land blockchain at its beta launch state? This has a few benefits:
I believe Ethereum came up with the concept and it's been very useful. |
Signed-off-by: moul <[email protected]>
| | Auditability | Decompiler | Decompiler | Decompiler | Direct | | ||
| | State model | Manual | Manual | Linear | Auto-persistent| | ||
| | Safety model | Manual | Sandbox | Resources | Realm isolation| | ||
| | Determinism | Partial | Partial | Strong | Strong | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why partial?
| | Determinism | Partial | Partial | Strong | Strong | |
Signed-off-by: moul <[email protected]>
Signed-off-by: moul <[email protected]>
Signed-off-by: moul <[email protected]>
| ## 3.1 The Bytecode Problem | ||
|
|
||
| Ethereum stores compiled bytecode: | ||
|
|
||
| ``` | ||
| Deployed: 0x608060405234801561001057600080fd5b50... | ||
| ``` | ||
|
|
||
| Interpreting this requires decompilation or external source verification. | ||
|
|
||
| Gno stores source code directly: | ||
|
|
||
| ```go | ||
| func Transfer(to std.Address, amount int64) { | ||
| caller := std.PreviousRealm().Address() | ||
| balances[caller] -= amount | ||
| balances[to] += amount | ||
| } | ||
| ``` | ||
|
|
||
| Auditing requires only the ability to read Go. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| ## 3.1 The Bytecode Problem | |
| Ethereum stores compiled bytecode: | |
| ``` | |
| Deployed: 0x608060405234801561001057600080fd5b50... | |
| ``` | |
| Interpreting this requires decompilation or external source verification. | |
| Gno stores source code directly: | |
| ```go | |
| func Transfer(to std.Address, amount int64) { | |
| caller := std.PreviousRealm().Address() | |
| balances[caller] -= amount | |
| balances[to] += amount | |
| } | |
| ``` | |
| Auditing requires only the ability to read Go. | |
| ## 3.1 Source Transparency | |
| Gno stores source code directly: | |
| ```go | |
| package token | |
| var balances = map[address]int64 | |
| func Transfer(cur realm, to address, amount int64) { | |
| caller := runtime.PreviousRealm().Address() | |
| balances[caller] -= amount | |
| balances[to] += amount | |
| } | |
| Auditing requires only the ability to read Go. |
The goal of this PR is to do a temperature check on how we want to structure the Gno.land whitepaper.
The technical parts, especially Gno, GnoVM, Realm specifications, TM2, etc., should be filled in by the core engineers who have deep knowledge in each section, and they should be cited in the whitepaper for their contributions. cc @jaekwon @moul @thehowl @ltzmaxwell @zivkovicmilos @mvertes @piux2 @omarsy @notJoon, and more.
@jaekwon should be the chief author of this whitepaper, and I'm initializing the discussion by opening this PR.
I'd love to hear your opinions on how we should form the whitepaper.