Skip to content

Sort methods during compilation#373

Merged
erikzhang merged 9 commits intoneo-project:masterfrom
shargon:ensure-verify-0
Dec 15, 2020
Merged

Sort methods during compilation#373
erikzhang merged 9 commits intoneo-project:masterfrom
shargon:ensure-verify-0

Conversation

@shargon
Copy link
Copy Markdown
Member

@shargon shargon commented Sep 24, 2020

  • Sorted Abi methods by name/offsets.

@shargon
Copy link
Copy Markdown
Member Author

shargon commented Oct 2, 2020

@erikzhang I think that this can be merged, even if another is the solution to the problem, it will be faster to obtain the standard methods if they are at the beginning of the method array.

@erikzhang
Copy link
Copy Markdown
Member

erikzhang commented Oct 4, 2020

This PR can solve the current problem. But it can only fix one method, and I am worried that there will be other special methods that need to be fixed in the future. So I don't think it should be merged, we should focus on neo-project/neo#1973.

@shargon
Copy link
Copy Markdown
Member Author

shargon commented Oct 4, 2020

Agree, but more than a fix it's about have some rules in Abi generation, sort by offset at least

@shargon
Copy link
Copy Markdown
Member Author

shargon commented Nov 14, 2020

@erikzhang Please don't think that it's a fix for neo-project/neo#1964 , now it's only a deterministic way to sort the methods during compilation.

@erikzhang
Copy link
Copy Markdown
Member

Tested?

@shargon
Copy link
Copy Markdown
Member Author

shargon commented Nov 20, 2020

@superboyiii could you test it?

@shargon
Copy link
Copy Markdown
Member Author

shargon commented Dec 10, 2020

Ping @superboyiii

@superboyiii
Copy link
Copy Markdown
Member

Ping @superboyiii

Sorry for late, I'll test it tommorrow.

@superboyiii
Copy link
Copy Markdown
Member

superboyiii commented Dec 14, 2020

@shargon @erikzhang It works well on mine. Method names and offsets are all sorted in asc. I think it's a good rule for abi generation.

{
    "methods":[
        {
            "name":"_initialize",
            "offset":"0",
            "safe":false,
            "parameters":[

            ],
            "returntype":"Void"
        },
        {
            "name":"balanceOf",
            "offset":"95",
            "safe":false,
            "parameters":[
                {
                    "name":"account",
                    "type":"Hash160"
                }
            ],
            "returntype":"Integer"
        },
        {
            "name":"decimals",
            "offset":"202",
            "safe":false,
            "parameters":[

            ],
            "returntype":"Integer"
        },
        {
            "name":"deploy",
            "offset":"224",
            "safe":false,
            "parameters":[

            ],
            "returntype":"Boolean"
        },
        {
            "name":"destroy",
            "offset":"411",
            "safe":false,
            "parameters":[

            ],
            "returntype":"Void"
        },
        {
            "name":"disablePayment",
            "offset":"510",
            "safe":false,
            "parameters":[

            ],
            "returntype":"Void"
        },
        {
            "name":"enablePayment",
            "offset":"584",
            "safe":false,
            "parameters":[

            ],
            "returntype":"Void"
        },
        {
            "name":"onPayment",
            "offset":"1092",
            "safe":false,
            "parameters":[
                {
                    "name":"from",
                    "type":"Hash160"
                },
                {
                    "name":"amount",
                    "type":"Integer"
                },
                {
                    "name":"data",
                    "type":"Any"
                }
            ],
            "returntype":"Void"
        },
        {
            "name":"symbol",
            "offset":"1475",
            "safe":false,
            "parameters":[

            ],
            "returntype":"String"
        },
        {
            "name":"totalSupply",
            "offset":"1481",
            "safe":false,
            "parameters":[

            ],
            "returntype":"Integer"
        },
        {
            "name":"transfer",
            "offset":"1487",
            "safe":false,
            "parameters":[
                {
                    "name":"from",
                    "type":"Hash160"
                },
                {
                    "name":"to",
                    "type":"Hash160"
                },
                {
                    "name":"amount",
                    "type":"Integer"
                },
                {
                    "name":"data",
                    "type":"Any"
                }
            ],
            "returntype":"Boolean"
        },
        {
            "name":"update",
            "offset":"1809",
            "safe":false,
            "parameters":[
                {
                    "name":"nefFile",
                    "type":"ByteArray"
                },
                {
                    "name":"manifest",
                    "type":"String"
                }
            ],
            "returntype":"Void"
        },
        {
            "name":"verify",
            "offset":"1909",
            "safe":false,
            "parameters":[

            ],
            "returntype":"Boolean"
        }
    ],
    "events":[
        {
            "name":"Transfer",
            "parameters":[
                {
                    "name":"arg1",
                    "type":"Hash160"
                },
                {
                    "name":"arg2",
                    "type":"Hash160"
                },
                {
                    "name":"arg3",
                    "type":"Integer"
                }
            ]
        }
    ]
}

@shargon
Copy link
Copy Markdown
Member Author

shargon commented Dec 14, 2020

Merge?

@superboyiii
Copy link
Copy Markdown
Member

@erikzhang Merge?

@erikzhang erikzhang merged commit b83ec54 into neo-project:master Dec 15, 2020
@shargon shargon deleted the ensure-verify-0 branch December 15, 2020 08:03
Jim8y pushed a commit that referenced this pull request Aug 3, 2025
Jim8y pushed a commit that referenced this pull request Aug 18, 2025
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.

3 participants