Skip to content

Turing-incomplete tx mempool verification on Neo 3 #789

@igormcoelho

Description

@igormcoelho

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 fees during tx transmission (only for contract execution, that could happen some time after block is actually relayed), and network fee could 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 as network 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 fee would continue to be a transmission + tx processing fee, while system fee would be the Turing-complete execution cost of an operation (with loops, dynamic invoke and everything else). network fee would affect the capability of a tx to be relayed, and system fee the capability of a contract execution to finish in a good state (non FAULT).

Metadata

Metadata

Assignees

No one assigned

    Labels

    ConsensusModule - Changes that affect the consensus protocol or internal verification logicDiscussionInitial issue state - proposed but not yet acceptedEnhancementType - Changes that may affect performance, usability or add new features to existing modules.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions