IP Library Granted Patent US 11,681,509
Granted Patent B2
US 11,681,509 · App. 17/676,155 · Granted Jun 20, 2023

Smart contract processing method and system, computer device, and readable storage medium

Inventors: Weiwei Qiu (Hangzhou, CN); Wei Li (Hangzhou, CN); Liang Cai (Hangzhou, CN); Shuai Zhang (Hangzhou, CN); Dingwen Zhang (Hangzhou, CN)
Assignee: HANGZHOU QULIAN TECHNOLOGY CO., LTD.
G06F8/425G06F11/3409
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,681,509
App. No.
17/676,155
Granted
Jun 20, 2023
Kind
B2
Abstract

The present disclosure relates to a smart contract processing method and a system, and a readable storage medium. By segmenting a function requiring performance analysis, establishing a symbol calculation model and calculating a GAS consumption formula, and performing further optimization, a GAS value consumed by the execution of a program containing a polynomial cycle can be automatically calculated, or a GAS value consumed by the execution of a program containing a non-linear cycle can be calculated with minimal human assistance, so as to reflect the performance thereof.

Claims (84)

1. A smart contract processing method, comprising the following steps:

acquiring a smart contract, segmenting a performance analyzing function of the smart contract, so as to extract a complete program segment;

establishing a symbol calculation model according to the program segment; and

acquiring a GAS consumption formula according to the symbol calculation model, simplifying and outputting same.

2. The smart contract processing method of claim 1 , wherein the segmenting the performance analyzing function of the smart contract, so as to extract the complete program segment comprises the following steps:

performing a syntax analysis of the smart contract and establishing a syntax tree;

creating a Solidity system dependency diagram according to the syntax tree; and

segmenting the Solidity system dependency diagram using a segmenting algorithm to extract the complete program segment.

3. The smart contract processing method of claim 1 , wherein the establishing a symbol calculation model according to the program segment comprises:

converting the program segment into an execution code program for an EVM according to a compilation principle of a Solidity compiler;

converting the execution code program into a symbol calculation expression for GAS accumulation according to the GAS consumed by the execution code program and a GAS size comparison table, and generating a cycle invariant; and

generating the cycle invariant automatically for a case that the execution code program contains a polynomial cycle, and manually assisting in adding a cycle invariant for a case that the execution code program contains a non-linear cycle.

4. The smart contract processing method of claim 3 , wherein the acquiring the GAS consumption formula according to the symbol calculation model, simplifying and outputting same comprises:

for a case that the execution code program contains a cycle, expressing a cycle assignment statement as a system of first order constant coefficient difference equations for a program variable with respect to a number of cycles, obtaining a closed form solution of the system of first order constant coefficient difference equations, substituting the closed form solution into a cycle condition, and obtaining an expression for the calculation of cycle GAS consumption with respect to the number of cycles;

for a case that the execution code program contains logical control, converting a logical control statement into a homogeneous polynomial containing symbols of relevant variables as a GAS consumption expression; and

accumulating in turn all GAS consumption expressions in all program segments according to a symbol calculation method to acquire a final GAS consumption formula, and simplifying and outputting the GAS consumption formula.

5. The smart contract processing method of claim 4 , wherein the symbol calculation method comprises the following steps:

inputting a polynomial cycle program P, a number m of program variables, and an upper bound U on a number of power of polynomial invariants;

initializing LoopInv to be empty;

representing the polynomial cycle program P by a polynomial variation system T, wherein T consists of V, L, Y, l0 and O, V represents a set of variables, L represents a set of finite positions, Y represents a set of state variations, l0 represents an initial position, and O represents an initial condition;

acquiring a set S of sample points according to the polynomial variation system T;

calculating, by means of a BM algorithm, a Grobner basis I(S)=<p1, p2, . . . , ps> of the set S of sample points with elimination ideal under a subdivision dictionary order, and calculating the lowest number of all polynomials p1, p2, . . . , ps in I(S) with pi=0 as a candidate invariant of the polynomial cycle program P, wherein i=1, 2, . . . , s;

verifying the candidate invariant: when pi(V)|pi(V′) is set up, assigning the LoopInv to LoopInv{circumflex over ( )}pi, wherein V′ represents the set of variables after the variation; and

repeating the step of verifying the candidate invariant, iterating over values of i until i>s, and generating a cycle invariant of the polynomial cycle program P according to the LoopInv.

6. A smart contract processing system, comprising:

means for acquiring a smart contract, segmenting a performance analyzing function of the smart contract, so as to extract a complete program segment;

means for establishing a symbol calculation model according to the program segment; and

means for acquiring a GAS consumption formula according to the symbol calculation model, simplifying and outputting same.

7. A computer device, comprising a processor and a memory that stores a computer program, the computer program being executed by the processor to implement the steps of the smart contract processing method of claim 1 .

8. A readable storage medium having stored a computer program, wherein the computer program is executed by a processor to implement the steps of the smart contract processing method of claim 1 .

9. A static analysis method for performance of a Solidity smart contract, comprising the following steps:

(1) inputting a Solidity smart contract, and segmenting a performance analyzing function of the Solidity smart contract, so as to extract a complete program segment;

(2) establishing a symbol calculation model according to the complete program segment in step (1); and

(3) calculating a GAS consumption formula according to the symbol calculation model in step (2), and outputting a simplified GAS formula.

10. The static analysis method for performance of the Solidity smart contract of claim 9 , wherein the step (1) further comprises the following sub-steps:

(1.1) performing a syntax analysis of the input Solidity smart contract and establishing a syntax tree;

(1.2) creating a Solidity system dependency diagram according to the syntax tree; and

(1.3) segmenting the Solidity system dependency diagram using a segmenting algorithm to extract the complete program segment.

11. The static analysis method for performance of the Solidity smart contract of claim 9 , wherein the step (2) is specified as follows:

(2.1) converting the complete program segment into an execution code (or an assembly instruction) program for an EVM according to a compilation principle of a Solidity compiler; and

(2.2) converting the execution code program into a symbol calculation expression for GAS accumulation according to a GAS size comparison table consumed by the execution code program, and generating a cycle invariant; generating the cycle invariant automatically for a case that the execution code program contains a polynomial cycle, and manually assisting in adding a cycle invariant for a case that the execution code program contains a non-linear cycle.

12. The static analysis method for performance of the Solidity smart contract of claim 11 , wherein the step (3) is specified as follows:

(3.1) for a case that the execution code program contains a cycle, expressing a cycle assignment statement as a system of first order constant coefficient difference equations for a program variable with respect to a number of cycles, obtaining a closed form solution of the system of first order constant coefficient difference equations, substituting the closed form solution into a cycle condition, and obtaining an expression for the calculation of cycle GAS consumption with respect to the number of cycles; for a case that the execution code program contains logical control, converting a logical control statement into a homogeneous polynomial containing symbols of relevant variables as a GAS consumption expression; and

(3.2) accumulating in turn all GAS consumption expressions in all program segments according to a symbol calculation method to acquire a final GAS consumption formula, and outputting a simplified GAS formula.

13. The static analysis method for performance of the Solidity smart contract of claim 12 , wherein the symbol calculation method is specified as follows:

(4.1) inputting a polynomial cycle program P, a number m of program variables, and an upper bound U on a number of power of polynomial invariants;

(4.2) initializing LoopInv to be empty;

(4.3) representing the polynomial cycle program P by a polynomial variation system T, wherein T consists of V, L, Y, l0 and O, V represents a set of variables, L represents a set of finite positions, Y represents a set of state variations, l0 represents an initial position, and O represents an initial condition;

(4.4) acquiring a set S of sample points according to the polynomial cycle program P in step (4.3);

(4.5) calculating, by means of a BM algorithm, a Grobner basis I(S)=<p1, p2, . . . , ps> of the set S of sample points with elimination ideal under a subdivision dictionary order, and calculating the lowest number of all polynomials p1, p2, . . . , ps in I(S) with pi=0 as a candidate invariant of the polynomial cycle program P, wherein i=1, 2, . . . , s;

(4.6) verifying the candidate invariant: when pi(V)|pi(V′) is set up, assigning the LoopInv to LoopInv{circumflex over ( )}pi, wherein V′ represents the set of variables after the variation; and

(4.7) repeating the step (4.6) until i>s, and generating a cycle invariant of the polynomial cycle program P.

14. The computer device of claim 7 , wherein the segmenting the performance analyzing function of the smart contract, so as to extract the complete program segment comprises the following steps:

performing a syntax analysis of the smart contract and establishing a syntax tree;

creating a Solidity system dependency diagram according to the syntax tree; and

segmenting the Solidity system dependency diagram using a segmenting algorithm to extract the complete program segment.

15. The computer device of claim 7 , wherein the establishing a symbol calculation model according to the program segment comprises:

converting the program segment into an execution code program for an EVM according to a compilation principle of a Solidity compiler;

converting the execution code program into a symbol calculation expression for GAS accumulation according to the GAS consumed by the execution code program and a GAS size comparison table, and generating a cycle invariant; and

generating the cycle invariant automatically for a case that the execution code program contains a polynomial cycle, and manually assisting in adding a cycle invariant for a case that the execution code program contains a non-linear cycle.

16. The computer device of claim 15 , wherein the acquiring the GAS consumption formula according to the symbol calculation model, simplifying and outputting same comprises:

for a case that the execution code program contains a cycle, expressing a cycle assignment statement as a system of first order constant coefficient difference equations for a program variable with respect to a number of cycles, obtaining a closed form solution of the system of first order constant coefficient difference equations, substituting the closed form solution into a cycle condition, and obtaining an expression for the calculation of cycle GAS consumption with respect to the number of cycles;

for a case that the execution code program contains logical control, converting a logical control statement into a homogeneous polynomial containing symbols of relevant variables as a GAS consumption expression; and

accumulating in turn all GAS consumption expressions in all program segments according to a symbol calculation method to acquire a final GAS consumption formula, and simplifying and outputting the GAS consumption formula.

17. The computer device of claim 16 , wherein the symbol calculation method comprises the following steps:

inputting a polynomial cycle program P, a number m of program variables, and an upper bound U on a number of power of polynomial invariants;

initializing LoopInv to be empty;

representing the polynomial cycle program P by a polynomial variation system T, wherein T consists of V, L, Y, l0 and O, V represents a set of variables, L represents a set of finite positions, Y represents a set of state variations, l0 represents an initial position, and O represents an initial condition;

acquiring a set S of sample points according to the polynomial variation system T;

calculating, by means of a BM algorithm, a Grobner basis I(S)=<p1, p2, . . . , ps> of the set S of sample points with elimination ideal under a subdivision dictionary order, and calculating the lowest number of all polynomials p1, p2, . . . , ps in I(S) with pi=0 as a candidate invariant of the polynomial cycle program P, wherein i=1, 2, . . . , s;

verifying the candidate invariant: when pi(V)|pi(V′) is set up, assigning the LoopInv to LoopInv{circumflex over ( )}pi, wherein V′ represents the set of variables after the variation; and

repeating the step of verifying the candidate invariant, iterating over values of i until i>s, and generating a cycle invariant of the polynomial cycle program P according to the LoopInv.

18. The readable storage medium of claim 8 , wherein the segmenting the performance analyzing function of the smart contract, so as to extract the complete program segment comprises the following steps:

performing a syntax analysis of the smart contract and establishing a syntax tree;

creating a Solidity system dependency diagram according to the syntax tree; and

segmenting the Solidity system dependency diagram using a segmenting algorithm to extract the complete program segment.

19. The readable storage medium of claim 8 , wherein the establishing a symbol calculation model according to the program segment comprises:

converting the program segment into an execution code program for an EVM according to a compilation principle of a Solidity compiler;

converting the execution code program into a symbol calculation expression for GAS accumulation according to the GAS consumed by the execution code program and a GAS size comparison table, and generating a cycle invariant; and

generating the cycle invariant automatically for a case that the execution code program contains a polynomial cycle, and manually assisting in adding a cycle invariant for a case that the execution code program contains a non-linear cycle.

20. The readable storage medium of claim 19 , wherein the acquiring the GAS consumption formula according to the symbol calculation model, simplifying and outputting same comprises:

for a case that the execution code program contains a cycle, expressing a cycle assignment statement as a system of first order constant coefficient difference equations for a program variable with respect to a number of cycles, obtaining a closed form solution of the system of first order constant coefficient difference equations, substituting the closed form solution into a cycle condition, and obtaining an expression for the calculation of cycle GAS consumption with respect to the number of cycles;

for a case that the execution code program contains logical control, converting a logical control statement into a homogeneous polynomial containing symbols of relevant variables as a GAS consumption expression; and

accumulating in turn all GAS consumption expressions in all program segments according to a symbol calculation method to acquire a final GAS consumption formula, and simplifying and outputting the GAS consumption formula.

Assignments (2)
CHANGE OF NAME Recorded Aug 26, 2025
From: HANGZHOU QULIAN TECHNOLOGY CO., LTD.
To: HANGZHOU HYPERCHAIN TECHNOLOGY CO., LTD.
Reel/Frame 072125/0775 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2022
From: QIU, WEIWEI; LI, WEI; CAI, LIANG; ZHANG, SHUAI; ZHANG, DINGWEN
To: HANGZHOU QULIAN TECHNOLOGY CO., LTD.
Reel/Frame 059054/0110 →
Priority Claims (1)
CN 201910772369.7 · Aug 21, 2019 · national
Continuity (2)
Continuation PCTCN2020110367 · Aug 21, 2020
Related Publication 20220171607A1 · Jun 2, 2022