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

Add EffectiveVoterTurnout #1762

Merged
merged 3 commits into from
Jul 14, 2020
Merged

Add EffectiveVoterTurnout #1762

merged 3 commits into from
Jul 14, 2020

Conversation

erikzhang
Copy link
Member

No description provided.

@erikzhang erikzhang added this to the NEO 3.0 milestone Jul 12, 2020
@erikzhang erikzhang mentioned this pull request Jul 12, 2020
@erikzhang
Copy link
Member Author

@neo-project/ngd-shanghai Test.

Copy link
Member

@vncoelho vncoelho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This gives more weight based on those who effective voted, right?

@@ -10,8 +10,8 @@ public class ProtocolSettings
public uint Magic { get; }
public byte AddressVersion { get; }
public string[] StandbyCommittee { get; }
public byte MaxCommitteeMembersCount { get; }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Who currently can edit these values MaxCommitteeMembersCount and MaxValidatorsCount?
They are set by default, right, on the protocol?
Perhaps we need also the Committee to vote for these values onchain, at least.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No one can edit these values. They are hard-coded.

@erikzhang erikzhang merged commit d5b962c into master Jul 14, 2020
@erikzhang erikzhang deleted the EffectiveVoterTurnout branch July 14, 2020 12:29
@cloud8little
Copy link
Contributor

cloud8little commented Jul 16, 2020

Positive Scenarios
precondition:

protocol.json
{
  "ProtocolConfiguration": {
    "Magic": 111111,
    "MillisecondsPerBlock": 15000,
    "StandbyValidators": [
      "026a59b03f981a5dfded185472f4f19409cd229b5cfd11721e70f2b1d16079376a",
      "02c9d037722c4d0ca3037c589c387d45f13d00e489f974781d44793242ed8c1341"
    ],
    "ValidatorsCount": 1,
    "SeedList": [
    ]
  }
}
  1. start CN, initial asset: 100,000,000 NEO; 30,000,000 GAS in multisignature address. get committee return the two public keys in protocol.json.

  2. Single account vote for a candidate: register an account and prepare another account, transfer 100 neo, vote for the candidate. number of votes is 100.

  3. Multiple accounts vote for a candidate: register an account to be candidate, and prepare two account, transfer 100/200 neo separately, vote for the candidate. number of votes is 100+200=300.
    29fc492263ea45e31742b0b9c78c8f6

  4. NEO change of the vote sender account: register an account to be candidate, and prepare two account A,B; transfer to A and B100/200 neo separately, vote for the candidate; then transfer from B to C 100 neo, number of votes is 200.
    484d1e7d3c03c0821b1d529ee754ed9

  5. Change votes from one candidate to another candidate(CD1->CD2). Two candidates, CD1, A vote for 100; and B vote for CD2 200 votes, then account A vote for CD2; votes of CD1 is 0 now, votes of CD2 is 300 now.
    d5c8a9f2b5f4acbc08608a8fd22b04b

  6. When total votes of the candidates >= 20,000,000; the candidate with the highest votes become consensus. committee members are the new consensus public key and the candidate pub-key with secondary votes.

  7. When total votes of the candidates >= 20,000,000 and there are two same highest votes; the candidate with smaller pubkey become consensus. and two pub-key become committee members.

  8. When total votes of the candidates >= 20,000,000 and there are two same highest votes; the candidate with smaller pubkey become consensus, and then decrease total votes so that total votes < 20,000,000; then committee member become the two public keys in protocol.json.

  9. unregister an account, and not change its sender neo balance. when register back, the votes is the same as before.

Negative Scenarios

  1. no "ValidatorsCount" field in protocol.json
  2. value of ValidatorsCount > length(StandbyValidators)

shargon added a commit that referenced this pull request Jul 22, 2020
* Allow call from native contract (#1700)

* Fix MethodCallback (#1723)

* Fix #1714 (#1715)

* Add base64 SYSCALLs (#1717)

* Neo.VM.3.0.0-CI00230 (#1725)

* Allow to iterate buffer (#1726)

* Buffer iterator

* Rename

* Remove using

Co-authored-by: Erik Zhang <erik@neo.org>

* Update StorageContext.cs (#1728)

StorageContext needs to be public so it can be accessed by Neo Debugger

Co-authored-by: Erik Zhang <erik@neo.org>

* Fix return value check (#1730)

Co-authored-by: Shargon <shargon@gmail.com>

* Fix ContractEventDescriptor (#1733)

* fix enumerator (#1744)

Co-authored-by: Tommo-L <luchuan@neo.org>

* Change json fields to all lower case for consistency (#1736)

* Replace DataCache.Find by DataCache.Seek (#1740)

* replace DataCache.Find by DataCache.Seek

* fix order

* optimize

* Update ByteArrayComparer.cs

* Update ByteArrayComparer.cs

* Update DataCache.cs

* fix comments

* fix comments

* fix comments

* Update DataCache.cs

* Update DataCache.cs

* Reorder methods

Co-authored-by: Tommo-L <luchuan@neo.org>
Co-authored-by: erikzhang <erik@neo.org>
Co-authored-by: Shargon <shargon@gmail.com>

* Add MaxVerificationGas (#1745)

Co-authored-by: Shargon <shargon@gmail.com>

* Create KeyBuilder (#1748)

* Speed up the initialization of ApplicationEngine. (#1749)

* Change nef checksum to double SHA256 (#1751)

* Change to double SHA256

* Clean code

* Revert change

* Clean code

* Fix checksum

* Update NefFile.cs

* Fix compile

* Clean code

Clean code
Fix checksum
Update NefFile.cs
Fix compile

* Optimize

* Optimize

* Fix

Co-authored-by: erikzhang <erik@neo.org>

* Check witnesses on isStandard (#1754)

* Check witness on isStandard

* Add IsDeployed

* Add IsPayable

* Fix UT

* format

* Add coverage

* Remove IsPayable, IsDeployed

* Move NEP10 to manifest (#1729)

* NEP10 abi

* To lower case

* Move to Manifest

* Clean code

* Update ContractManifest.cs

* Update ContractManifest.cs

* Fix native contracts

Co-authored-by: Erik Zhang <erik@neo.org>

* Capture fault Exception (#1761)

* Capture faultException

* Update Wallet error

* Remove flag check

* Clean code

* Sender from signers (#1752)

* Sender from signers

* Remove co-

* Move signers outside attributes

* Fix UT and remove Signers class

* Fix UT

* Add FeeOnly scope

* Remove orderBy

* Remove _signersCache

* Fix Signers

* Fix WitnessScope

* Fix Sender

* Update TransactionAttributeType.cs

* Update Wallet.cs

* Fix Wallet

* Rename

* Update Wallet.cs

* Update Wallet.cs

* Partial UT fix

* More UT fixes

* Fix Sender's WitnessScope

* Fix Wallet

* Fix UT

* Explicit FeeOnly for DeployNativeContracts

* Same order as serialization

* Test FeeOnly

* dotnet format

* format

Co-authored-by: Erik Zhang <erik@neo.org>

* IApplicationEngineProvider (#1758)

* Remove the lock from SendersFeeMonitor and rename it to TransactionVerificationContext (#1756)

* Add EffectiveVoterTurnout (#1762)

* Remove AllowedTriggers from SYSCALLs (#1755)

* fix validatorscount (#1770)

Co-authored-by: Tommo-L <luchuan@neo.org>

* impl SeekInternal

Co-authored-by: Erik Zhang <erik@neo.org>
Co-authored-by: Shargon <shargon@gmail.com>
Co-authored-by: Harry Pierson <harrypierson@hotmail.com>
Co-authored-by: Luchuan <luchuan@ngd.neo.org>
Co-authored-by: Tommo-L <luchuan@neo.org>
Co-authored-by: joeqian <qianzhuo@ngd.neo.org>
shargon added a commit that referenced this pull request Jul 23, 2020
* Allow call from native contract (#1700)

* Fix MethodCallback (#1723)

* Fix #1714 (#1715)

* Add base64 SYSCALLs (#1717)

* Neo.VM.3.0.0-CI00230 (#1725)

* Allow to iterate buffer (#1726)

* Buffer iterator

* Rename

* Remove using

Co-authored-by: Erik Zhang <erik@neo.org>

* Update StorageContext.cs (#1728)

StorageContext needs to be public so it can be accessed by Neo Debugger

Co-authored-by: Erik Zhang <erik@neo.org>

* Fix return value check (#1730)

Co-authored-by: Shargon <shargon@gmail.com>

* Fix ContractEventDescriptor (#1733)

* fix enumerator (#1744)

Co-authored-by: Tommo-L <luchuan@neo.org>

* Change json fields to all lower case for consistency (#1736)

* Replace DataCache.Find by DataCache.Seek (#1740)

* replace DataCache.Find by DataCache.Seek

* fix order

* optimize

* Update ByteArrayComparer.cs

* Update ByteArrayComparer.cs

* Update DataCache.cs

* fix comments

* fix comments

* fix comments

* Update DataCache.cs

* Update DataCache.cs

* Reorder methods

Co-authored-by: Tommo-L <luchuan@neo.org>
Co-authored-by: erikzhang <erik@neo.org>
Co-authored-by: Shargon <shargon@gmail.com>

* Add MaxVerificationGas (#1745)

Co-authored-by: Shargon <shargon@gmail.com>

* Create KeyBuilder (#1748)

* Speed up the initialization of ApplicationEngine. (#1749)

* Change nef checksum to double SHA256 (#1751)

* Change to double SHA256

* Clean code

* Revert change

* Clean code

* Fix checksum

* Update NefFile.cs

* Fix compile

* Clean code

Clean code
Fix checksum
Update NefFile.cs
Fix compile

* Optimize

* Optimize

* Fix

Co-authored-by: erikzhang <erik@neo.org>

* Check witnesses on isStandard (#1754)

* Check witness on isStandard

* Add IsDeployed

* Add IsPayable

* Fix UT

* format

* Add coverage

* Remove IsPayable, IsDeployed

* Move NEP10 to manifest (#1729)

* NEP10 abi

* To lower case

* Move to Manifest

* Clean code

* Update ContractManifest.cs

* Update ContractManifest.cs

* Fix native contracts

Co-authored-by: Erik Zhang <erik@neo.org>

* Capture fault Exception (#1761)

* Capture faultException

* Update Wallet error

* Remove flag check

* Clean code

* Sender from signers (#1752)

* Sender from signers

* Remove co-

* Move signers outside attributes

* Fix UT and remove Signers class

* Fix UT

* Add FeeOnly scope

* Remove orderBy

* Remove _signersCache

* Fix Signers

* Fix WitnessScope

* Fix Sender

* Update TransactionAttributeType.cs

* Update Wallet.cs

* Fix Wallet

* Rename

* Update Wallet.cs

* Update Wallet.cs

* Partial UT fix

* More UT fixes

* Fix Sender's WitnessScope

* Fix Wallet

* Fix UT

* Explicit FeeOnly for DeployNativeContracts

* Same order as serialization

* Test FeeOnly

* dotnet format

* format

Co-authored-by: Erik Zhang <erik@neo.org>

* IApplicationEngineProvider (#1758)

* Remove the lock from SendersFeeMonitor and rename it to TransactionVerificationContext (#1756)

* Add EffectiveVoterTurnout (#1762)

* Remove AllowedTriggers from SYSCALLs (#1755)

* fix validatorscount (#1770)

Co-authored-by: Tommo-L <luchuan@neo.org>

* workflows: use checkout action v2 (#1775)

* Update git workflow

* Update .github/workflows/main.yml

Co-authored-by: Erik Zhang <erik@neo.org>

Co-authored-by: Erik Zhang <erik@neo.org>

* Add cache to native contract executions V2 (#1766)

* cache v2

* More optimizations

* Policy contract optimization

* Remove interporable variable

* Two more

* Add Set

* Optimizations

* Optimize

Co-authored-by: erikzhang <erik@neo.org>

* Optimize attributes (#1774)

* Add length before compression data (#1768)

* Add length before compression

* Optimize

* Fix UT

* Add UT

* Add UT

Co-authored-by: erikzhang <erik@neo.org>

* Fix VerifyWitnesses (#1776)

* Ensure non predictable peers (#1739)

* Plugins from List to array

* Move false to init

* Fix UT

* Refactor

* Add Exception Message For CreateContract (#1787)

* Add Exception Message When Create Contract

* Add Exception Message

* Code optimization

* add UT

Co-authored-by: Shargon <shargon@gmail.com>
Co-authored-by: Qiao Jin <43407364+Qiao-Jin@users.noreply.github.com>

Co-authored-by: Erik Zhang <erik@neo.org>
Co-authored-by: Shargon <shargon@gmail.com>
Co-authored-by: Harry Pierson <harrypierson@hotmail.com>
Co-authored-by: Luchuan <luchuan@ngd.neo.org>
Co-authored-by: Tommo-L <luchuan@neo.org>
Co-authored-by: joeqian <qianzhuo@ngd.neo.org>
Co-authored-by: cloud8little <34291844+cloud8little@users.noreply.github.com>
Co-authored-by: Qiao Jin <43407364+Qiao-Jin@users.noreply.github.com>
roman-khimov added a commit to nspcc-dev/neo-go that referenced this pull request Aug 10, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants