-
Notifications
You must be signed in to change notification settings - Fork 1k
Turing-incomplete tx mempool verification on Neo 3 #789
Copy link
Copy link
Closed
Labels
ConsensusModule - Changes that affect the consensus protocol or internal verification logicModule - Changes that affect the consensus protocol or internal verification logicDiscussionInitial issue state - proposed but not yet acceptedInitial issue state - proposed but not yet acceptedEnhancementType - Changes that may affect performance, usability or add new features to existing modules.Type - Changes that may affect performance, usability or add new features to existing modules.
Metadata
Metadata
Assignees
Labels
ConsensusModule - Changes that affect the consensus protocol or internal verification logicModule - Changes that affect the consensus protocol or internal verification logicDiscussionInitial issue state - proposed but not yet acceptedInitial issue state - proposed but not yet acceptedEnhancementType - Changes that may affect performance, usability or add new features to existing modules.Type - Changes that may affect performance, usability or add new features to existing modules.
As discussed here #784, I strongly argue that it would be better to have tx verification as turing-incomplete on Neo 3.0. This limitation would allow us to avoid the concept of
system feesduring tx transmission (only for contract execution, that could happen some time after block is actually relayed), andnetwork feecould deterministically calculate and incorporate some other costs that affect tx verification, such as expensive elliptic curve verification, hashings, etc (currently, only tx size is considered). These new costs would be shipped asnetwork fees, to compensate Consensus Nodes operations. It could be designed in such a way that very basic address types, such as singlesig could continue to be fee, but any other operation types would require a very small network fee for tx transmission (such as multisig).So,
network feewould continue to be a transmission + tx processing fee, whilesystem feewould be the Turing-complete execution cost of an operation (with loops, dynamic invoke and everything else).network feewould affect the capability of a tx to be relayed, andsystem feethe capability of a contract execution to finish in a good state (nonFAULT).