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

Chain config for beta 5 network #1507

Merged
merged 5 commits into from
Nov 23, 2023
Merged

Chain config for beta 5 network #1507

merged 5 commits into from
Nov 23, 2023

Conversation

xgreenx
Copy link
Collaborator

@xgreenx xgreenx commented Nov 23, 2023

The block gas limit for 1 second of production remains 30M. Based on the result from the sanity check it is a good value to fit 1/3 from block production time. The noop opcode takes ~12ms for 1M -> for 30M it should be around ~360ms. Most opcodes have the same execution time, or maybe less(only several have higher execution time in worst scenarios).

The max gas per script and predicate was increased from 10M to 30M because all transactions became more expensive. With the 63 gas per byte, the 30M limit allows the deployment of contracts up to 465 KB. The max_storage_slots was increased because we've started to charge separately for the state of the contract, and the limit is defined mainly by the gas limit. The new_storage_per_byte is manually set to be the same as gas_per_byte for now.

The default coinbase contract has ContractId "0x7777777777777777777777777777777777777777777777777777777777777777". The contract is created with command:

fuel-core generate-fee-contract 94318e6e453f30e85bf6088f7161d44e57b86a6af0c955d22b353f91b2465f5e

Where 94318e6e453f30e85bf6088f7161d44e57b86a6af0c955d22b353f91b2465f5e is 7th address generated from the beta 5 seed phrase by forc-wallet account new command.

The size of the transaction and opcodes that modify storage are the most expensive.

Sanity check results for 1M block gas limit:

block target estimation/alu/add opcode
                        time:   [9.6945 ms 9.6991 ms 9.7036 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) low mild
block target estimation/alu/addi opcode
                        time:   [9.2619 ms 9.2654 ms 9.2688 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) low mild
  1 (1.00%) high mild
block target estimation/alu/and opcode
                        time:   [9.6389 ms 9.6469 ms 9.6558 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) high mild
  1 (1.00%) high severe
block target estimation/alu/andi opcode
                        time:   [9.6831 ms 9.6876 ms 9.6922 ms]
block target estimation/alu/div opcode
                        time:   [10.389 ms 10.406 ms 10.423 ms]
block target estimation/alu/divi opcode
                        time:   [10.077 ms 10.083 ms 10.090 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
block target estimation/alu/eq opcode
                        time:   [9.4103 ms 9.4166 ms 9.4230 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild
block target estimation/alu/exp opcode
                        time:   [10.847 ms 10.855 ms 10.863 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) low mild
  1 (1.00%) high mild
block target estimation/alu/expi opcode
                        time:   [10.491 ms 10.505 ms 10.519 ms]
block target estimation/alu/gt opcode
                        time:   [9.3366 ms 9.3413 ms 9.3460 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) low mild
block target estimation/alu/lt opcode
                        time:   [9.5865 ms 9.5916 ms 9.5967 ms]
block target estimation/alu/mlog opcode
                        time:   [11.258 ms 11.266 ms 11.274 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild
block target estimation/alu/mod opcode
                        time:   [10.231 ms 10.235 ms 10.240 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) low mild
  1 (1.00%) high severe
block target estimation/alu/modi opcode
                        time:   [9.9911 ms 9.9950 ms 9.9990 ms]
block target estimation/alu/move opcode
                        time:   [8.9027 ms 8.9063 ms 8.9100 ms]
Found 3 outliers among 100 measurements (3.00%)
  1 (1.00%) low mild
  2 (2.00%) high mild
block target estimation/alu/movi opcode
                        time:   [9.1850 ms 9.1891 ms 9.1933 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/alu/mroo opcode
                        time:   [11.194 ms 11.198 ms 11.202 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
block target estimation/alu/mul opcode
                        time:   [9.6178 ms 9.6262 ms 9.6346 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/alu/muli opcode
                        time:   [9.3876 ms 9.3920 ms 9.3964 ms]
Found 4 outliers among 100 measurements (4.00%)
  3 (3.00%) low mild
  1 (1.00%) high mild
block target estimation/alu/mldv opcode
                        time:   [7.8830 ms 7.8859 ms 7.8889 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild
block target estimation/alu/noop opcode
                        time:   [11.567 ms 11.571 ms 11.575 ms]
block target estimation/alu/not opcode
                        time:   [9.0525 ms 9.0575 ms 9.0626 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/alu/or opcode
                        time:   [9.3047 ms 9.3099 ms 9.3151 ms]
block target estimation/alu/ori opcode
                        time:   [9.3479 ms 9.3529 ms 9.3579 ms]
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild
block target estimation/alu/sll opcode
                        time:   [9.4795 ms 9.4855 ms 9.4915 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/alu/slli opcode
                        time:   [9.3000 ms 9.3066 ms 9.3131 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) low mild
block target estimation/alu/srl opcode
                        time:   [9.5507 ms 9.5572 ms 9.5636 ms]
block target estimation/alu/srli opcode
                        time:   [9.6669 ms 9.6724 ms 9.6778 ms]
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) low mild
  3 (3.00%) high mild
block target estimation/alu/sub opcode
                        time:   [9.4321 ms 9.4363 ms 9.4412 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
block target estimation/alu/subi opcode
                        time:   [9.4125 ms 9.4158 ms 9.4191 ms]
block target estimation/alu/xor opcode
                        time:   [9.6297 ms 9.6351 ms 9.6406 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) low mild
  1 (1.00%) high mild
block target estimation/alu/xori opcode
                        time:   [9.2958 ms 9.3020 ms 9.3081 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) low mild
block target estimation/alu/wdcm opcode
                        time:   [9.8170 ms 9.8212 ms 9.8254 ms]
Found 3 outliers among 100 measurements (3.00%)
  2 (2.00%) low mild
  1 (1.00%) high mild
block target estimation/alu/wdop opcode
                        time:   [11.550 ms 11.559 ms 11.569 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/alu/wdml opcode
                        time:   [11.453 ms 11.464 ms 11.475 ms]
block target estimation/alu/wddv opcode
                        time:   [11.902 ms 11.906 ms 11.910 ms]
Found 4 outliers among 100 measurements (4.00%)
  3 (3.00%) high mild
  1 (1.00%) high severe
block target estimation/alu/wdmd opcode
                        time:   [12.972 ms 12.974 ms 12.978 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild
block target estimation/alu/wdam opcode
                        time:   [13.101 ms 13.106 ms 13.111 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/alu/wdmm opcode
                        time:   [12.809 ms 12.812 ms 12.816 ms]
Found 4 outliers among 100 measurements (4.00%)
  2 (2.00%) low mild
  1 (1.00%) high mild
  1 (1.00%) high severe
block target estimation/alu/wqcm opcode
                        time:   [10.604 ms 10.614 ms 10.624 ms]
block target estimation/alu/wqop opcode
                        time:   [11.614 ms 11.621 ms 11.627 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
block target estimation/alu/wqml opcode
                        time:   [11.319 ms 11.328 ms 11.337 ms]
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) low mild
  3 (3.00%) high mild
block target estimation/alu/wqdv opcode
                        time:   [11.409 ms 11.414 ms 11.420 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild
block target estimation/alu/wqmd opcode
                        time:   [12.758 ms 12.760 ms 12.762 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/alu/wdmm opcode
                        time:   [12.809 ms 12.812 ms 12.816 ms]
Found 4 outliers among 100 measurements (4.00%)
  2 (2.00%) low mild
  1 (1.00%) high mild
  1 (1.00%) high severe
block target estimation/alu/wqcm opcode
                        time:   [10.604 ms 10.614 ms 10.624 ms]
block target estimation/alu/wqop opcode
                        time:   [11.614 ms 11.621 ms 11.627 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
block target estimation/alu/wqml opcode
                        time:   [11.319 ms 11.328 ms 11.337 ms]
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) low mild
  3 (3.00%) high mild
block target estimation/alu/wqdv opcode
                        time:   [11.409 ms 11.414 ms 11.420 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild
block target estimation/alu/wqmd opcode
                        time:   [12.758 ms 12.760 ms 12.762 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/alu/wqam opcode
                        time:   [12.641 ms 12.648 ms 12.656 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/alu/wqmm opcode
                        time:   [19.251 ms 19.257 ms 19.263 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild
block target estimation/contract/bal contract
                        time:   [14.725 ms 14.733 ms 14.740 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) low mild
  1 (1.00%) high mild
block target estimation/contract/bal script
                        time:   [14.612 ms 14.624 ms 14.637 ms]
block target estimation/contract/bhei
                        time:   [9.3087 ms 9.3283 ms 9.3565 ms]
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) high mild
  3 (3.00%) high severe
block target estimation/contract/bhsh
                        time:   [11.444 ms 11.466 ms 11.496 ms]
Found 4 outliers among 100 measurements (4.00%)
  2 (2.00%) high mild
  2 (2.00%) high severe
block target estimation/contract/burn
                        time:   [11.051 ms 11.054 ms 11.058 ms]
Found 6 outliers among 100 measurements (6.00%)
  1 (1.00%) low mild
  4 (4.00%) high mild
  1 (1.00%) high severe
block target estimation/contract/call 1
                        time:   [10.877 ms 10.882 ms 10.887 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
block target estimation/contract/call 10
                        time:   [10.866 ms 10.873 ms 10.881 ms]
Found 1 outliers among 100 measurements (1.00%)
block target estimation/contract/call 1000
                        time:   [10.524 ms 10.528 ms 10.532 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) high mild
  1 (1.00%) high severe
block target estimation/contract/call 10000
                        time:   [9.9281 ms 9.9310 ms 9.9341 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/contract/call 19753
                        time:   [9.3603 ms 9.3626 ms 9.3648 ms]
block target estimation/contract/call 29629
                        time:   [9.4653 ms 9.4672 ms 9.4690 ms]
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) low mild
  3 (3.00%) high mild
block target estimation/contract/call 44444
                        time:   [9.3232 ms 9.3262 ms 9.3301 ms]
Found 3 outliers among 100 measurements (3.00%)
  2 (2.00%) high mild
  1 (1.00%) high severe
block target estimation/contract/call 66666
                        time:   [9.0877 ms 9.0896 ms 9.0916 ms]
Found 4 outliers among 100 measurements (4.00%)
  4 (4.00%) high mild
block target estimation/contract/call 100000
                        time:   [9.2118 ms 9.2141 ms 9.2166 ms]
Found 10 outliers among 100 measurements (10.00%)
  8 (8.00%) high mild
  2 (2.00%) high severe
block target estimation/contract/cb
                        time:   [11.252 ms 11.266 ms 11.280 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) low mild
block target estimation/contract/ccp 1
                        time:   [9.4254 ms 9.4299 ms 9.4343 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) low mild
  1 (1.00%) high mild
block target estimation/contract/ccp 10
                        time:   [9.6353 ms 9.6391 ms 9.6428 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) low mild
  1 (1.00%) high mild
block target estimation/contract/ccp 100
                        time:   [7.9365 ms 7.9431 ms 7.9493 ms]
Found 7 outliers among 100 measurements (7.00%)
  2 (2.00%) low severe
  4 (4.00%) low mild
  1 (1.00%) high mild
block target estimation/contract/ccp 1000
                        time:   [3.5176 ms 3.5186 ms 3.5195 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/contract/ccp 10000
                        time:   [2.8955 ms 2.9051 ms 2.9144 ms]
block target estimation/contract/ccp 19753
                        time:   [2.5702 ms 2.5768 ms 2.5833 ms]
block target estimation/contract/ccp 29629
                        time:   [2.4370 ms 2.4416 ms 2.4462 ms]
block target estimation/contract/ccp 44444
                        time:   [2.3448 ms 2.3482 ms 2.3517 ms]
block target estimation/contract/ccp 66666
                        time:   [2.4630 ms 2.4655 ms 2.4681 ms]
Found 6 outliers among 100 measurements (6.00%)
  6 (6.00%) high mild
block target estimation/contract/ccp 100000
                        time:   [2.9114 ms 2.9153 ms 2.9191 ms]
block target estimation/contract/croo
                        time:   [10.958 ms 10.963 ms 10.967 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild
block target estimation/contract/csiz 1
                        time:   [8.8856 ms 8.8929 ms 8.9005 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/contract/csiz 10
                        time:   [9.2256 ms 9.2309 ms 9.2363 ms]
block target estimation/contract/csiz 100
                        time:   [9.0832 ms 9.0890 ms 9.0949 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/contract/csiz 1000
                        time:   [7.6927 ms 7.7003 ms 7.7081 ms]
block target estimation/contract/csiz 10000
                        time:   [10.468 ms 10.507 ms 10.551 ms]
Found 15 outliers among 100 measurements (15.00%)
  1 (1.00%) low mild
  14 (14.00%) high severe
block target estimation/contract/csiz 19753
                        time:   [9.5810 ms 9.6128 ms 9.6463 ms]
block target estimation/contract/csiz 29629
                        time:   [9.2937 ms 9.3124 ms 9.3325 ms]
Found 21 outliers among 100 measurements (21.00%)
  1 (1.00%) high mild
  20 (20.00%) high severe
block target estimation/contract/csiz 44444
                        time:   [9.1104 ms 9.1239 ms 9.1380 ms]
block target estimation/contract/csiz 66666
                        time:   [9.0073 ms 9.0163 ms 9.0260 ms]
Found 23 outliers among 100 measurements (23.00%)
  2 (2.00%) low mild
  1 (1.00%) high mild
  20 (20.00%) high severe
block target estimation/contract/csiz 100000
                        time:   [8.9444 ms 8.9516 ms 8.9592 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/contract/ldc 1
                        time:   [12.500 ms 12.504 ms 12.508 ms]
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild
block target estimation/contract/ldc 10
                        time:   [13.152 ms 13.169 ms 13.187 ms]
block target estimation/contract/ldc 100
                        time:   [12.879 ms 12.900 ms 12.922 ms]
block target estimation/contract/ldc 1000
                        time:   [11.714 ms 11.768 ms 11.829 ms]
Found 17 outliers among 100 measurements (17.00%)
  4 (4.00%) high mild
  13 (13.00%) high severe
block target estimation/contract/ldc 10000
                        time:   [14.086 ms 14.127 ms 14.167 ms]
block target estimation/contract/ldc 19753
                        time:   [13.023 ms 13.062 ms 13.103 ms]
Found 1 outliers among 100 measurements (1.00%)
block target estimation/contract/ldc 29629
                        time:   [12.611 ms 12.640 ms 12.671 ms]
Found 23 outliers among 100 measurements (23.00%)
  15 (15.00%) low mild
  4 (4.00%) high mild
  4 (4.00%) high severe
block target estimation/contract/ldc 44444
                        time:   [12.535 ms 12.564 ms 12.596 ms]
Found 10 outliers among 100 measurements (10.00%)
  3 (3.00%) low mild
  4 (4.00%) high mild
  3 (3.00%) high severe
block target estimation/contract/ldc 66666
                        time:   [12.854 ms 12.924 ms 13.003 ms]
Found 7 outliers among 100 measurements (7.00%)
  7 (7.00%) high severe
block target estimation/contract/ldc 100000
                        time:   [14.968 ms 15.027 ms 15.096 ms]
Found 9 outliers among 100 measurements (9.00%)
  4 (4.00%) high mild
  5 (5.00%) high severe
block target estimation/contract/log
                        time:   [5.8421 ms 5.8447 ms 5.8478 ms]
Found 12 outliers among 100 measurements (12.00%)
  5 (5.00%) low mild
  5 (5.00%) high mild
  2 (2.00%) high severe
block target estimation/contract/logd 1
^[                        time:   [4.6927 ms 4.6959 ms 4.6995 ms]
Found 21 outliers among 100 measurements (21.00%)
  1 (1.00%) high mild
  20 (20.00%) high severe
block target estimation/contract/logd 10
                        time:   [4.7148 ms 4.7380 ms 4.7810 ms]
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) high mild
  3 (3.00%) high severe
block target estimation/contract/logd 100
                        time:   [4.9908 ms 4.9969 ms 5.0034 ms]
Found 4 outliers among 100 measurements (4.00%)
  4 (4.00%) high mild
block target estimation/contract/logd 1000
                        time:   [7.9364 ms 7.9498 ms 7.9644 ms]
Found 10 outliers among 100 measurements (10.00%)
  8 (8.00%) high mild
  2 (2.00%) high severe
block target estimation/contract/logd 10000
                        time:   [13.200 ms 13.262 ms 13.327 ms]
Found 9 outliers among 100 measurements (9.00%)
  8 (8.00%) high mild
  1 (1.00%) high severe
block target estimation/contract/logd 19753
                        time:   [14.013 ms 14.080 ms 14.155 ms]
Found 9 outliers among 100 measurements (9.00%)
  6 (6.00%) high mild
  3 (3.00%) high severe
block target estimation/contract/logd 29629
                        time:   [14.407 ms 14.466 ms 14.532 ms]
Found 14 outliers among 100 measurements (14.00%)
block target estimation/contract/logd 44444
                        time:   [14.551 ms 14.618 ms 14.693 ms]
Found 8 outliers among 100 measurements (8.00%)
  5 (5.00%) high mild
  3 (3.00%) high severe
block target estimation/contract/logd 66666
                        time:   [14.929 ms 15.015 ms 15.106 ms]
Found 8 outliers among 100 measurements (8.00%)
  7 (7.00%) high mild
  1 (1.00%) high severe
block target estimation/contract/logd 100000
                        time:   [14.578 ms 14.664 ms 14.755 ms]
Found 13 outliers among 100 measurements (13.00%)
  12 (12.00%) high mild
  1 (1.00%) high severe
block target estimation/contract/mint
                        time:   [10.663 ms 10.711 ms 10.767 ms]
Found 19 outliers among 100 measurements (19.00%)
  7 (7.00%) high mild
  12 (12.00%) high severe
block target estimation/contract/ret contract
                        time:   [10.880 ms 10.885 ms 10.891 ms]
Found 5 outliers among 100 measurements (5.00%)
  2 (2.00%) high mild
  3 (3.00%) high severe
block target estimation/contract/retd contract 1
                        time:   [10.695 ms 10.701 ms 10.707 ms]
Found 4 outliers among 100 measurements (4.00%)
  3 (3.00%) high mild
  1 (1.00%) high severe
block target estimation/contract/retd contract 10
                        time:   [10.914 ms 10.921 ms 10.930 ms]
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) high mild
  3 (3.00%) high severe
block target estimation/contract/retd contract 100
                        time:   [10.942 ms 10.947 ms 10.953 ms]
Found 3 outliers among 100 measurements (3.00%)
  2 (2.00%) high mild
  1 (1.00%) high severe
block target estimation/contract/retd contract 1000
                        time:   [10.800 ms 10.806 ms 10.813 ms]
Found 3 outliers among 100 measurements (3.00%)
  2 (2.00%) high mild
  1 (1.00%) high severe
block target estimation/contract/retd contract 10000
                        time:   [11.573 ms 11.580 ms 11.587 ms]
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild
block target estimation/contract/retd contract 19753
                        time:   [12.039 ms 12.060 ms 12.084 ms]
Found 14 outliers among 100 measurements (14.00%)
  5 (5.00%) high mild
  9 (9.00%) high severe
block target estimation/contract/retd contract 29629
                        time:   [12.412 ms 12.426 ms 12.441 ms]
Found 6 outliers among 100 measurements (6.00%)
  1 (1.00%) high mild
  5 (5.00%) high severe
block target estimation/contract/retd contract 44444
                        time:   [12.774 ms 12.795 ms 12.821 ms]
Found 6 outliers among 100 measurements (6.00%)
  1 (1.00%) high mild
  5 (5.00%) high severe
block target estimation/contract/retd contract 66666
                        time:   [13.540 ms 13.578 ms 13.620 ms]
Found 14 outliers among 100 measurements (14.00%)
  14 (14.00%) high severe
block target estimation/contract/retd contract 100000
                        time:   [13.845 ms 13.928 ms 14.064 ms]
Found 12 outliers among 100 measurements (12.00%)
  3 (3.00%) high mild
  9 (9.00%) high severe
block target estimation/contract/smo 1
                        time:   [4.0557 ms 4.0588 ms 4.0622 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) high mild
  1 (1.00%) high severe
block target estimation/contract/smo 10
                        time:   [4.0559 ms 4.0577 ms 4.0600 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
block target estimation/contract/smo 100
                        time:   [4.0820 ms 4.0846 ms 4.0878 ms]
Found 5 outliers among 100 measurements (5.00%)
  3 (3.00%) high mild
  2 (2.00%) high severe
block target estimation/contract/smo 1000
                        time:   [4.2952 ms 4.2985 ms 4.3022 ms]
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) high mild
  3 (3.00%) high severe
block target estimation/contract/smo 10000
                        time:   [5.4749 ms 5.4791 ms 5.4838 ms]
Found 11 outliers among 100 measurements (11.00%)
  7 (7.00%) high mild
  4 (4.00%) high severe
block target estimation/contract/smo 19753
                        time:   [6.7946 ms 6.8023 ms 6.8104 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild
block target estimation/contract/smo 29629
                        time:   [7.8377 ms 7.8477 ms 7.8587 ms]
Found 10 outliers among 100 measurements (10.00%)
  5 (5.00%) high mild
  5 (5.00%) high severe
block target estimation/contract/smo 44444
                        time:   [9.3712 ms 9.3769 ms 9.3832 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) high mild
  1 (1.00%) high severe
block target estimation/contract/smo 66666
                        time:   [10.317 ms 10.330 ms 10.344 ms]
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) high mild
  3 (3.00%) high severe
block target estimation/contract/smo 100000
                        time:   [12.632 ms 12.656 ms 12.683 ms]
Found 14 outliers among 100 measurements (14.00%)
  6 (6.00%) high mild
  8 (8.00%) high severe
block target estimation/contract/scwq
                        time:   [9.6125 ms 9.6174 ms 9.6225 ms]
Found 5 outliers among 100 measurements (5.00%)
  4 (4.00%) high mild
  1 (1.00%) high severe
block target estimation/contract/srw
                        time:   [14.407 ms 14.419 ms 14.432 ms]
Found 3 outliers among 100 measurements (3.00%)
  2 (2.00%) high mild
  1 (1.00%) high severe
block target estimation/contract/srwq
                        time:   [10.444 ms 10.459 ms 10.474 ms]
block target estimation/contract/sww
                        time:   [14.331 ms 14.350 ms 14.371 ms]
Found 7 outliers among 100 measurements (7.00%)
  5 (5.00%) high mild
  2 (2.00%) high severe
block target estimation/contract/swwq
                        time:   [9.9269 ms 9.9506 ms 9.9751 ms]
block target estimation/contract/time
                        time:   [18.068 ms 18.139 ms 18.211 ms]
block target estimation/contract/tr
                        time:   [11.496 ms 11.504 ms 11.514 ms]
Found 6 outliers among 100 measurements (6.00%)
  4 (4.00%) high mild
  2 (2.00%) high severe
block target estimation/crypto/eck1 opcode valid
                        time:   [13.152 ms 13.174 ms 13.217 ms]
Found 6 outliers among 100 measurements (6.00%)
  5 (5.00%) high mild
  1 (1.00%) high severe
block target estimation/crypto/eck1 opcode invalid
                        time:   [12.769 ms 12.771 ms 12.773 ms]
block target estimation/crypto/ecr1 opcode
                        time:   [12.824 ms 12.828 ms 12.831 ms]
Found 10 outliers among 100 measurements (10.00%)
  6 (6.00%) high mild
  4 (4.00%) high severe
block target estimation/crypto/ed19 opcode
                        time:   [12.547 ms 12.557 ms 12.567 ms]
block target estimation/crypto/s256 opcode 1
                        time:   [8.4254 ms 8.4271 ms 8.4289 ms]
Found 3 outliers among 100 measurements (3.00%)
  2 (2.00%) high mild
  1 (1.00%) high severe
block target estimation/crypto/s256 opcode 10
                        time:   [8.0225 ms 8.0236 ms 8.0246 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) low mild
block target estimation/crypto/s256 opcode 100
                        time:   [8.9452 ms 8.9465 ms 8.9477 ms]
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) low mild
  2 (2.00%) high mild
  1 (1.00%) high severe
block target estimation/crypto/s256 opcode 1000
                        time:   [13.293 ms 13.294 ms 13.296 ms]
Found 4 outliers among 100 measurements (4.00%)
  2 (2.00%) high mild
  2 (2.00%) high severe
block target estimation/crypto/s256 opcode 10000
                        time:   [14.147 ms 14.148 ms 14.150 ms]
Found 6 outliers among 100 measurements (6.00%)
  6 (6.00%) high mild
block target estimation/crypto/s256 opcode 19753
                        time:   [14.330 ms 14.332 ms 14.333 ms]
block target estimation/crypto/s256 opcode 29629
                        time:   [14.301 ms 14.310 ms 14.319 ms]
block target estimation/crypto/s256 opcode 44444
                        time:   [14.075 ms 14.084 ms 14.094 ms]
Found 15 outliers among 100 measurements (15.00%)
  5 (5.00%) high mild
  10 (10.00%) high severe
block target estimation/crypto/s256 opcode 66666
                        time:   [14.058 ms 14.059 ms 14.061 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/crypto/s256 opcode 100000
                        time:   [13.725 ms 13.726 ms 13.727 ms]
Found 4 outliers among 100 measurements (4.00%)
  3 (3.00%) high mild
  1 (1.00%) high severe
block target estimation/crypto/k256 opcode 1
                        time:   [2.5765 ms 2.5773 ms 2.5781 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/crypto/k256 opcode 10
                        time:   [2.5023 ms 2.5035 ms 2.5049 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
block target estimation/crypto/k256 opcode 100
                        time:   [2.3500 ms 2.3509 ms 2.3519 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
block target estimation/crypto/k256 opcode 1000
                        time:   [7.1711 ms 7.1719 ms 7.1727 ms]
block target estimation/crypto/k256 opcode 10000
                        time:   [10.831 ms 10.832 ms 10.833 ms]
Found 3 outliers among 100 measurements (3.00%)
  2 (2.00%) high mild
  1 (1.00%) high severe
block target estimation/crypto/k256 opcode 19753
                        time:   [11.256 ms 11.259 ms 11.263 ms]
Found 12 outliers among 100 measurements (12.00%)
  9 (9.00%) high mild
  3 (3.00%) high severe
block target estimation/crypto/k256 opcode 29629
                        time:   [11.439 ms 11.446 ms 11.454 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/crypto/k256 opcode 44444
                        time:   [11.339 ms 11.342 ms 11.349 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) high mild
  1 (1.00%) high severe
block target estimation/crypto/k256 opcode 66666
                        time:   [11.263 ms 11.264 ms 11.265 ms]
Found 5 outliers among 100 measurements (5.00%)
  3 (3.00%) high mild
  2 (2.00%) high severe
block target estimation/crypto/k256 opcode 100000
                        time:   [11.267 ms 11.269 ms 11.270 ms]
block target estimation/flow/jmp opcode
                        time:   [8.9692 ms 8.9732 ms 8.9776 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high severe
block target estimation/flow/ji opcode
                        time:   [9.1226 ms 9.1274 ms 9.1322 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/flow/jne opcode
                        time:   [9.7172 ms 9.7191 ms 9.7210 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/flow/jnei opcode
                        time:   [10.104 ms 10.107 ms 10.112 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
block target estimation/flow/jnzi opcode
                        time:   [9.6479 ms 9.6538 ms 9.6595 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) low mild
block target estimation/flow/jmpb opcode
                        time:   [11.934 ms 11.936 ms 11.938 ms]
block target estimation/flow/jmpf opcode
                        time:   [9.7299 ms 9.7346 ms 9.7392 ms]
block target estimation/flow/jnzb opcode true
                        time:   [11.848 ms 11.856 ms 11.864 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/flow/jnzb opcode false
                        time:   [9.3918 ms 9.3952 ms 9.3987 ms]
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild
block target estimation/flow/jnzf opcode true
                        time:   [9.9209 ms 9.9265 ms 9.9325 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
block target estimation/flow/jnzf opcode false
                        time:   [9.5127 ms 9.5160 ms 9.5193 ms]
block target estimation/flow/jneb opcode not equal
                        time:   [12.017 ms 12.019 ms 12.022 ms]
block target estimation/flow/jneb opcode equal
                        time:   [9.5211 ms 9.5248 ms 9.5287 ms]
Found 5 outliers among 100 measurements (5.00%)
  4 (4.00%) high mild
  1 (1.00%) high severe
block target estimation/flow/jnef opcode not equal
                        time:   [10.129 ms 10.140 ms 10.151 ms]
block target estimation/flow/jnef opcode equal
                        time:   [9.8118 ms 9.8208 ms 9.8304 ms]
Found 3 outliers among 100 measurements (3.00%)
  2 (2.00%) high mild
  1 (1.00%) high severe
block target estimation/memory/aloc opcode
                        time:   [11.770 ms 11.774 ms 11.777 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/memory/cfe opcode
                        time:   [9.1840 ms 9.1864 ms 9.1891 ms]
Found 7 outliers among 100 measurements (7.00%)
  1 (1.00%) high mild
  6 (6.00%) high severe
block target estimation/memory/cfei opcode
                        time:   [9.3726 ms 9.3772 ms 9.3817 ms]
block target estimation/memory/cfs opcode
                        time:   [9.0976 ms 9.1015 ms 9.1056 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild
block target estimation/memory/cfsi opcode
                        time:   [9.2230 ms 9.2273 ms 9.2315 ms]
block target estimation/memory/lb opcode
                        time:   [9.8459 ms 9.8505 ms 9.8551 ms]
block target estimation/memory/lw opcode
                        time:   [9.6474 ms 9.6530 ms 9.6586 ms]
block target estimation/memory/mcl opcode 1
                        time:   [9.3634 ms 9.3697 ms 9.3760 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/memory/mcl opcode 10
                        time:   [9.3658 ms 9.3717 ms 9.3781 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
block target estimation/memory/mcl opcode 100
                        time:   [9.5097 ms 9.5158 ms 9.5220 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/memory/mcl opcode 1000
                        time:   [8.8797 ms 8.8867 ms 8.8937 ms]
block target estimation/memory/mcl opcode 10000
                        time:   [4.4818 ms 4.4983 ms 4.5168 ms]
Found 14 outliers among 100 measurements (14.00%)
  14 (14.00%) high severe
block target estimation/memory/mcl opcode 19753
                        time:   [3.8409 ms 3.8494 ms 3.8587 ms]
Found 21 outliers among 100 measurements (21.00%)
  21 (21.00%) high severe
block target estimation/memory/mcl opcode 29629
                        time:   [4.1930 ms 4.2085 ms 4.2242 ms]
Found 4 outliers among 100 measurements (4.00%)
  2 (2.00%) low mild
  2 (2.00%) high mild
block target estimation/memory/mcl opcode 44444
                        time:   [16.682 ms 16.710 ms 16.736 ms]
Found 7 outliers among 100 measurements (7.00%)
  2 (2.00%) low severe
  4 (4.00%) low mild
  1 (1.00%) high mild
block target estimation/memory/mcl opcode 66666
                        time:   [17.236 ms 17.254 ms 17.272 ms]
block target estimation/memory/mcl opcode 100000
                        time:   [17.302 ms 17.317 ms 17.332 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) low mild
block target estimation/memory/mcli opcode 1
                        time:   [9.7608 ms 9.7680 ms 9.7755 ms]
Found 7 outliers among 100 measurements (7.00%)
  7 (7.00%) high mild
block target estimation/memory/mcli opcode 10
                        time:   [9.7623 ms 9.7687 ms 9.7750 ms]
block target estimation/memory/mcli opcode 100
                        time:   [9.9050 ms 9.9104 ms 9.9158 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) low mild
block target estimation/memory/mcli opcode 1000
                        time:   [9.1599 ms 9.1643 ms 9.1687 ms]
Found 2 outliers among 100 measurements (2.00%)
block target estimation/memory/mcli opcode 10000
                        time:   [4.5411 ms 4.5592 ms 4.5793 ms]
Found 19 outliers among 100 measurements (19.00%)
  19 (19.00%) high severe
block target estimation/memory/mcli opcode 19753
                        time:   [3.8650 ms 3.8722 ms 3.8804 ms]
Found 13 outliers among 100 measurements (13.00%)
  13 (13.00%) high severe
block target estimation/memory/mcli opcode 29629
                        time:   [4.2024 ms 4.2190 ms 4.2360 ms]
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) low mild
  3 (3.00%) high mild
block target estimation/memory/mcli opcode 44444
                        time:   [16.658 ms 16.682 ms 16.706 ms]
Found 5 outliers among 100 measurements (5.00%)
  5 (5.00%) low mild
block target estimation/memory/mcli opcode 66666
                        time:   [17.086 ms 17.109 ms 17.131 ms]
block target estimation/memory/mcli opcode 100000
                        time:   [17.161 ms 17.184 ms 17.204 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) low severe
  1 (1.00%) low mild
block target estimation/memory/mcp opcode 1
                        time:   [10.747 ms 10.753 ms 10.759 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
block target estimation/memory/mcp opcode 10
                        time:   [13.700 ms 13.796 ms 13.888 ms]
block target estimation/memory/mcp opcode 100
                        time:   [10.823 ms 10.827 ms 10.831 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/memory/mcp opcode 1000
                        time:   [9.3348 ms 9.3424 ms 9.3496 ms]
Found 20 outliers among 100 measurements (20.00%)
  7 (7.00%) low severe
  13 (13.00%) low mild
block target estimation/memory/mcp opcode 10000
                        time:   [4.8455 ms 4.8584 ms 4.8724 ms]
Found 19 outliers among 100 measurements (19.00%)
  1 (1.00%) high mild
  18 (18.00%) high severe
block target estimation/memory/mcp opcode 19753
                        time:   [7.9587 ms 8.0265 ms 8.0958 ms]
block target estimation/memory/mcp opcode 29629
                        time:   [12.008 ms 12.062 ms 12.117 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/memory/mcp opcode 44444
                        time:   [13.496 ms 13.530 ms 13.565 ms]
Found 4 outliers among 100 measurements (4.00%)
  2 (2.00%) low mild
  2 (2.00%) high mild
block target estimation/memory/mcp opcode 66666
                        time:   [13.804 ms 13.832 ms 13.862 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/memory/mcp opcode 100000
                        time:   [14.387 ms 14.403 ms 14.418 ms]
block target estimation/memory/mcpi opcode 1
                        time:   [6.1408 ms 6.1435 ms 6.1461 ms]
block target estimation/memory/mcpi opcode 10
                        time:   [6.0755 ms 6.0782 ms 6.0809 ms]
block target estimation/memory/mcpi opcode 100
                        time:   [6.1801 ms 6.1830 ms 6.1858 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild
block target estimation/memory/mcpi opcode 1000
                        time:   [6.5631 ms 6.5680 ms 6.5730 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) low mild
  1 (1.00%) high mild
block target estimation/memory/meq opcode 1
                        time:   [3.8795 ms 3.8817 ms 3.8840 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/memory/meq opcode 10
                        time:   [3.8807 ms 3.8826 ms 3.8847 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) low mild
  1 (1.00%) high mild
block target estimation/memory/meq opcode 100
                        time:   [4.0896 ms 4.0973 ms 4.1053 ms]
block target estimation/memory/meq opcode 1000
                        time:   [4.6467 ms 4.6492 ms 4.6518 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/memory/meq opcode 10000
                        time:   [6.6958 ms 6.6987 ms 6.7017 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/memory/meq opcode 19753
                        time:   [8.0908 ms 8.0932 ms 8.0959 ms]
Found 3 outliers among 100 measurements (3.00%)
  1 (1.00%) low mild
  1 (1.00%) high mild
  1 (1.00%) high severe
block target estimation/memory/meq opcode 29629
                        time:   [8.6435 ms 8.6452 ms 8.6469 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/memory/meq opcode 44444
                        time:   [9.2329 ms 9.2343 ms 9.2356 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild
block target estimation/memory/meq opcode 66666
                        time:   [9.8002 ms 9.8039 ms 9.8079 ms]
Found 6 outliers among 100 measurements (6.00%)
  5 (5.00%) high mild
  1 (1.00%) high severe
block target estimation/memory/meq opcode 100000
                        time:   [9.8857 ms 9.8873 ms 9.8889 ms]
Found 5 outliers among 100 measurements (5.00%)
  4 (4.00%) high mild
  1 (1.00%) high severe
block target estimation/memory/poph opcode
                        time:   [11.540 ms 11.544 ms 11.548 ms]
Found 1 outliers among 100 measurements (1.00%)
block target estimation/memory/popl opcode
                        time:   [11.421 ms 11.427 ms 11.432 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/memory/pshh opcode
                        time:   [23.152 ms 23.207 ms 23.265 ms]
Found 5 outliers among 100 measurements (5.00%)
  5 (5.00%) high mild
block target estimation/memory/pshl opcode
                        time:   [23.349 ms 23.420 ms 23.495 ms]
Found 5 outliers among 100 measurements (5.00%)
  4 (4.00%) high mild
  1 (1.00%) high severe
block target estimation/memory/sb opcode
                        time:   [10.116 ms 10.121 ms 10.125 ms]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild
block target estimation/memory/sw opcode
                        time:   [9.8993 ms 9.9080 ms 9.9194 ms]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) high mild
  1 (1.00%) high severe
block target estimation/other/flag
                        time:   [11.780 ms 11.786 ms 11.791 ms]
block target estimation/other/gm
                        time:   [3.6017 ms 3.6035 ms 3.6053 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
block target estimation/other/gtf
                        time:   [26.514 ms 26.558 ms 26.613 ms]
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) low mild
  3 (3.00%) high severe

@xgreenx xgreenx requested a review from a team November 23, 2023 00:53
@xgreenx xgreenx self-assigned this Nov 23, 2023
Dentosal
Dentosal previously approved these changes Nov 23, 2023
Copy link
Member

@Dentosal Dentosal left a comment

Choose a reason for hiding this comment

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

Hoping for another review as well, but looks ok to me

Copy link
Contributor

@bvrooman bvrooman left a comment

Choose a reason for hiding this comment

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

Lgtm

@xgreenx xgreenx merged commit 8f6a517 into master Nov 23, 2023
30 checks passed
@xgreenx xgreenx deleted the feature/beta-5-chain-config branch November 23, 2023 17:03
bvrooman pushed a commit that referenced this pull request Nov 24, 2023
## Version 0.21.0

This release focuses on preparing `fuel-core` for the mainnet
environment.
- Most of the changes improved the security and stability of the node.
- The gas model was reworked to cover all aspects of execution.
- The benchmarking system was significantly enhanced, covering worst
scenarios.
- A new set of benchmarks was added to track the accuracy of gas prices.
- Optimized heavy operations and removed/replaced exploitable
functionality.

Besides that, there are more concrete changes:
- Unified naming conventions for all CLI arguments. Added dependencies
between related fields to avoid misconfiguration in case of missing
arguments. Added `--debug` flag that enables additional functionality
like a debugger.
- Improved telemetry to cover the internal work of services and added
support for the Pyroscope, allowing it to generate real-time flamegraphs
to track performance.
- Improved stability of the P2P layer and adjusted the updating of
reputation. The speed of block synchronization was significantly
increased.
- The node is more stable and resilient. Improved DoS resistance and
resource management. Fixed critical bugs during state transition.
- Reworked the `Mint` transaction to accumulate the fee from block
production inside the contract defined by the block producer.

FuelVM received a lot of safety and stability improvements:
- The audit helped identify some bugs and errors that have been
successfully fixed.
- Updated the gas price model to charge for resources used during the
transaction lifecycle.
- Added `no_std` and 32 bit system support. This opens doors for fraud
proving in the future.
- Removed the `ChainId` from the `PredicateId` calculation, allowing the
use of predicates cross-chain.
- Improvements in the performance of some storage-related opcodes.
- Support the `ECAL` instruction that allows adding custom functionality
to the VM. It can be used to create unique rollups or advanced indexers
in the future.
- Support of [transaction
policies](https://github.com/FuelLabs/fuel-vm/blob/master/CHANGELOG.md#version-0420)
provides additional safety for the user.
It also allows the implementation of a multi-dimensional price model in
the future, making the transaction execution cheaper and allowing more
transactions that don't affect storage.
- Refactored errors, returning more detailed errors to the user,
simplifying debugging.

### Added

- [#1503](#1503): Add `gtf`
opcode sanity check.
- [#1502](#1502): Added price
benchmark for `vm_initialization`.
- [#1501](#1501): Add a CLI
command for generating a fee collection contract.
- [#1492](#1492): Support
backward iteration in the RocksDB. It allows backward queries that were
not allowed before.
- [#1490](#1490): Add push and
pop benchmarks.
- [#1485](#1485): Prepare rc
release of fuel core v0.21
- [#1476](#1453): Add the
majority of the "other" benchmarks for contract opcodes.
- [#1473](#1473): Expose
fuel-core version as a constant
- [#1469](#1469): Added
support of bloom filter for RocksDB tables and increased the block
cache.
- [#1465](#1465): Improvements
for keygen cli and crates
- [#1642](#1462): Added
benchmark to measure the performance of contract state and contract ID
calculation; use for gas costing.
- [#1457](#1457): Fixing
incorrect measurement for fast(µs) opcodes.
- [#1456](#1456): Added
flushing of the RocksDB during a graceful shutdown.
- [#1456](#1456): Added more
logs to track the service lifecycle.
- [#1453](#1453): Add the
majority of the "sanity" benchmarks for contract opcodes.
- [#1452](#1452): Added
benchmark to measure the performance of contract root calculation when
utilizing the maximum contract size; used for gas costing of contract
root during predicate owner validation.
- [#1449](#1449): Fix coin
pagination in e2e test client.
- [#1447](#1447): Add timeout
for continuous e2e tests
- [#1444](#1444): Add "sanity"
benchmarks for memory opcodes.
- [#1437](#1437): Add some
transaction throughput tests for basic transfers.
- [#1436](#1436): Add a github
action to continuously test beta-4.
- [#1433](#1433): Add "sanity"
benchmarks for flow opcodes.
- [#1432](#1432): Add a new
`--api-request-timeout` argument to control TTL for GraphQL requests.
- [#1430](#1430): Add "sanity"
benchmarks for crypto opcodes.
- [#1426](#1426) Split keygen
into a create and a binary.
- [#1419](#1419): Add
additional "sanity" benchmarks for arithmetic op code instructions.
- [#1411](#1411): Added WASM
and `no_std` compatibility.
- [#1405](#1405): Use correct
names for service metrics.
- [#1400](#1400): Add releasy
beta to fuel-core so that new commits to fuel-core master triggers
fuels-rs.
- [#1371](#1371): Add new
client function for querying the `MessageStatus` for a specific message
(by `Nonce`).
- [#1356](#1356): Add peer
reputation reporting to heartbeat code.
- [#1355](#1355): Added new
metrics related to block importing, such as tps, sync delays etc.
- [#1339](#1339): Adds
`baseAssetId` to `FeeParameters` in the GraphQL API.
- [#1331](#1331): Add peer
reputation reporting to block import code.
- [#1324](#1324): Added
pyroscope profiling to fuel-core, intended to be used by a secondary
docker image that has debug symbols enabled.
- [#1309](#1309): Add
documentation for running debug builds with CLion and Visual Studio
Code.
- [#1308](#1308): Add support
for loading .env files when compiling with the `env` feature. This
allows users to conveniently supply CLI arguments in a secure and
IDE-agnostic way.
- [#1304](#1304): Implemented
`submit_and_await_commit_with_receipts` method for `FuelClient`.
- [#1286](#1286): Include
readable names for test cases where missing.
- [#1274](#1274): Added tests
to benchmark block synchronization.
- [#1263](#1263): Add gas
benchmarks for `ED19` and `ECR1` instructions.

### Changed

- [#1512](#1512): Internally
simplify merkle_contract_state_range.
- [#1507](#1507): Updated
chain configuration to be ready for beta 5 network. It includes opcode
prices from the latest benchmark and contract for the block producer.
- [#1477](#1477): Upgraded the
Rust version used in CI and containers to 1.73.0. Also includes
associated Clippy changes.
- [#1469](#1469): Replaced
usage of `MemoryTransactionView` by `Checkpoint` database in the
benchmarks.
- [#1468](#1468): Bumped
version of the `fuel-vm` to `v0.40.0`. It brings some breaking changes
into consensus parameters API because of changes in the underlying
types.
- [#1466](#1466): Handling
overflows during arithmetic operations.
- [#1460](#1460): Change
tracking branch from main to master for releasy tests.
- [#1454](#1454): Update gas
benchmarks for opcodes that append receipts.
- [#1440](#1440): Don't report
reserved nodes that send invalid transactions.
- [#1439](#1439): Reduced
memory BMT consumption during creation of the header.
- [#1434](#1434): Continue
gossiping transactions to reserved peers regardless of gossiping
reputation score.
- [#1408](#1408): Update gas
benchmarks for storage opcodes to use a pre-populated database to get
more accurate worst-case costs.
- [#1399](#1399): The Relayer
now queries Ethereum for its latest finalized block instead of using a
configurable "finalization period" to presume finality.
- [#1397](#1397): Improved
keygen. Created a crate to be included from forc plugins and upgraded
internal library to drop requirement of protoc to build
- [#1395](#1395): Add
DependentCost benchmarks for `k256`, `s256` and `mcpi` instructions.
- [#1393](#1393): Increase
heartbeat timeout from `2` to `60` seconds, as suggested in [this
issue](#1330).
- [#1392](#1392): Fixed an
overflow in `message_proof`.
- [#1390](#1390): Up the
`ethers` version to `2` to fix an issue with `tungstenite`.
- [#1383](#1383): Disallow
usage of `log` crate internally in favor of `tracing` crate.
- [#1380](#1380): Add
preliminary, hard-coded config values for heartbeat peer reputation,
removing `todo`.
- [#1377](#1377): Remove
`DiscoveryEvent` and use `KademliaEvent` directly in
`DiscoveryBehavior`.
- [#1366](#1366): Improve
caching during docker builds in CI by replacing gha
- [#1358](#1358): Upgraded the
Rust version used in CI to 1.72.0. Also includes associated Clippy
changes.
- [#1349](#1349): Updated
peer-to-peer transactions API to support multiple blocks in a single
request, and updated block synchronization to request multiple blocks
based on the configured range of headers.
- [#1342](#1342): Add error
handling for P2P requests to return `None` to requester and log error.
- [#1318](#1318): Modified
block synchronization to use asynchronous task execution when retrieving
block headers.
- [#1314](#1314): Removed
`types::ConsensusParameters` in favour of `fuel_tx:ConsensusParameters`.
- [#1302](#1302): Removed the
usage of flake and building of the bridge contract ABI.
It simplifies the maintenance and updating of the events, requiring only
putting the event definition into the codebase of the relayer.
- [#1293](#1293):
Parallelized the `estimate_predicates` endpoint to utilize all available
threads.
- [#1270](#1270): Modify the
way block headers are retrieved from peers to be done in batches.

#### Breaking
- [#1506](#1506): Added
validation of the coin's fields during block production and validation.
Before, it was possible to submit a transaction that didn't match the
coin's values in the database, allowing printing/using unavailable
assets.
- [#1491](#1491): Removed
unused request and response variants from the Gossipsub implementation,
as well as related definitions and tests. Specifically, this removes
gossiping of `ConsensusVote` and `NewBlock` events.
- [#1472](#1472): Upgraded
`fuel-vm` to `v0.42.0`. It introduces transaction policies that changes
layout of the transaction. FOr more information check the
[v0.42.0](FuelLabs/fuel-vm#635) release.
- [#1470](#1470): Divide
`DependentCost` into "light" and "heavy" operations.
- [#1464](#1464): Avoid
possible truncation of higher bits. It may invalidate the code that
truncated higher bits causing different behavior on 32-bit vs. 64-bit
systems. The change affects some endpoints that now require lesser
integers.
- [#1432](#1432): All
subscriptions and requests have a TTL now. So each subscription
lifecycle is limited in time. If the subscription is closed because of
TTL, it means that you subscribed after your transaction had been
dropped by the network.
- [#1407](#1407): The
recipient is a `ContractId` instead of `Address`. The block producer
should deploy its contract to receive the transaction fee. The collected
fee is zero until the recipient contract is set.
- [#1407](#1407): The `Mint`
transaction is reworked with new fields to support the account-base
model. It affects serialization and deserialization of the transaction
and also affects GraphQL schema.
- [#1407](#1407): The `Mint`
transaction is the last transaction in the block instead of the first.
- [#1374](#1374): Renamed
`base_chain_height` to `da_height` and return current relayer height
instead of latest Fuel block height.
- [#1367](#1367): Update to
the latest version of fuel-vm.
- [#1363](#1363): Change
message_proof api to take `nonce` instead of `message_id`
- [#1355](#1355): Removed the
`metrics` feature flag from the fuel-core crate, and metrics are now
included by default.
- [#1339](#1339): Added a new
required field called `base_asset_id` to the `FeeParameters` definition
in `ConsensusParameters`, as well as default values for `base_asset_id`
in the `beta` and `dev` chain specifications.
- [#1322](#1322):
The `debug` flag is added to the CLI. The flag should be used for local
development only. Enabling debug mode:
      - Allows GraphQL Endpoints to arbitrarily advance blocks.
      - Enables debugger GraphQL Endpoints.
      - Allows setting `utxo_validation` to `false`.
- [#1318](#1318): Removed the
`--sync-max-header-batch-requests` CLI argument, and renamed
`--sync-max-get-txns` to `--sync-block-stream-buffer-size` to better
represent the current behavior in the import.
- [#1290](#1290): Standardize
CLI args to use `-` instead of `_`.
- [#1279](#1279): Added a new
CLI flag to enable the Relayer service `--enable-relayer`, and disabled
the Relayer service by default. When supplying the `--enable-relayer`
flag, the `--relayer` argument becomes mandatory, and omitting it is an
error. Similarly, providing a `--relayer` argument without the
`--enable-relayer` flag is an error. Lastly, providing the `--keypair`
or `--network` arguments will also produce an error if the
`--enable-p2p` flag is not set.
- [#1262](#1262): The
`ConsensusParameters` aggregates all configuration data related to the
consensus. It contains many fields that are segregated by the usage. The
API of some functions was affected to use lesser types instead the whole
`ConsensusParameters`. It is a huge breaking change requiring
repetitively monotonically updating all places that use the
`ConsensusParameters`. But during updating, consider that maybe you can
use lesser types. Usage of them may simplify signatures of methods and
make them more user-friendly and transparent.

### Removed

#### Breaking
- [#1484](#1484): Removed
`--network` CLI argument. Now the name of the network is fetched form
chain configuration.
- [#1399](#1399): Removed
`relayer-da-finalization` parameter from the relayer CLI.
- [#1338](#1338): Updated
GraphQL client to use `DependentCost` for `k256`, `mcpi`, `s256`,
`scwq`, `swwq` opcodes.
- [#1322](#1322): The
`manual_blocks_enabled` flag is removed from the CLI. The analog is a
`debug` flag.

## What's Changed
* Added changelog in the same way as we did for `fuel-vm` by @xgreenx in
#1287
* Decompose consensus params struct by @MitchTurner in
#1262
* Replace all instances of `_` in CLI `long` arguments with `-` by
@MitchTurner in #1290
* [rpc] Parallelise estimate_predicates endpoint by @YusongWang in
#1293
* Add readable test names to test cases by @MitchTurner in
#1286
* ED19 and ECR1 benchmarks by @Dentosal in
#1263
* feat: Add `enable-relayer` flag to `fuel-core` CLI by @bvrooman in
#1279
* Small nits found during deploying and benchmarking by @xgreenx in
#1303
* Implemented `submit_and_await_commit_with_receipts` method by @xgreenx
in #1304
* Removed the usage of flake and building of the bridge contract ABI by
@xgreenx in #1302
* Download range of headers during syncing by @MitchTurner in
#1270
* feat: Enable .env file loading using `env` feature by @bvrooman in
#1308
* chore: Remove types::ConsensusParameters by @bvrooman in
#1314
* docs: Debugging instructions using IDEs by @bvrooman in
#1309
* test: Block Import benchmarks and test helpers by @bvrooman in
#1274
* Fix audit CI for `webpki` by @xgreenx in
#1319
* chore: Single buffer block sync by @bvrooman in
#1318
* Run unit tests without default features only for specific crates by
@xgreenx in #1321
* Added support for `debug` CLI flag. by @xgreenx in
#1322
* Report Peers that give bad Block Info by @MitchTurner in
#1331
* Pyroscope profiling by @Voxelot in
#1324
* Add error handling for P2P requests to return `None` to requester and
log error by @MitchTurner in
#1342
* Importer Metrics by @Voxelot in
#1355
* chore: Upgrade to Rust 1.72.0 in CI by @bvrooman in
#1358
* chore: Upgrade `fuel-vm` to 0.37.0 by @bvrooman in
#1338
* docs: remove stale schema by @calldelegation in
#1362
* Replace message_id with nonce in `MessageProof` query by @MitchTurner
in #1363
* feat: Configurable base asset by @bvrooman in
#1339
* avoid gha caching for docker builds by @Voxelot in
#1366
* Add tracking for peer heartbeats by @MitchTurner in
#1356
* docs: fix broken link in README by @PaulRBerg in
#1357
* Use right level of error for `.env` file and duplicated service by
@xgreenx in #1372
* Add query and handling for `MessageStatus` by @MitchTurner in
#1371
* Renamed `base_chain_height` to `da_height` and return current relayer
height instead of latest Fuel block height by @xgreenx in
#1374
* Remove `DiscoveryEvent` and use `KademliaEvent` instead by
@MitchTurner in #1377
* Remove todo from code and provide some preliminary peer review config
values by @MitchTurner in
#1380
* Clippy lint to disallow logging crate macros in favor of tracing by
@Dentosal in #1383
* fuel-vm nostd update by @Dentosal in
#1367
* Up the `ethers` version to `2` to fix an issue with `tungstenite` by
@xgreenx in #1390
* Increase heartbeat timeout to one minute by @Dentosal in
#1393
* feat: batch transactions import by @bvrooman in
#1349
* Fix an interger overflow in message_proof when looking beyond genesis
by @Dentosal in #1392
* Improve keygen by @cr-fuel in
#1397
* Benchmark {k256, s256, mcpi} opcodes using DependentCost by @Dentosal
in #1395
* Use correct names for service metrics by @xgreenx in
#1405
* feat: Retrieve finalized blocks from Ethereum by @bvrooman in
#1399
* Updated CI to run `cargo update` weekly by @xgreenx in
#1415
* CI `cargo update` weekly by @xgreenx in
#1416
* Weekly `cargo update` by @github-actions in
#1417
* Fix typos by @GoodDaisy in
#1424
* feat: Support no_std and WASM compilation for `fuel-core` crates by
@bvrooman in #1411
* Create sanity benchmark checks for all the arithmetic op codes by
@MitchTurner in #1419
* Update benchmarking and collecting for `scwq`, `swwq` and `srwq`
opcodes by @xgreenx in #1427
* Account-base fee collection by @xgreenx in
#1407
* Rollback modification of the chain specification by @xgreenx in
#1429
* Tx subscription cleanup (#1422) by @xgreenx in
#1432
* Mark reserved peers as explicit for gossipsub to avoid reputation
decreasing (#1423) by @xgreenx in
#1434
* Weekly `cargo update` by @github-actions in
#1438
* ci: add beta releasy to fuel-core by @kayagokalp in
#1400
* setup a cron job to test beta-4 continuously by @Voxelot in
#1436
* chore: Use MerkleRootCalculator when only BMT root is needed by
@bvrooman in #1439
* Crypto op code sanity checks by @MitchTurner in
#1430
* Update gas benchmarks for some storage opcodes by @Dentosal in
#1408
* Split keygen into a create and a binary by @cr-fuel in
#1426
* Basic Transfer TPS Benchmarking by @Voxelot in
#1437
* "flow" op code sanity benchmarks by @MitchTurner in
#1433
* Applying `#1435` to `master` by @xgreenx in
#1440
* "memory" opcode sanity checks by @MitchTurner in
#1444
* Add timeout to E2E test by @Voxelot in
#1447
* fix owns_coins to properly paginate by @Voxelot in
#1449
* Fixing incorrect measurement for fast(µs) opcodes by @xgreenx in
#1457
* Call `flush` during end of the `FuelService` by @xgreenx in
#1456
* chore: fix releasy test tracking branch from `main` to `master` by
@kayagokalp in #1460
* Weekly `cargo update` by @github-actions in
#1461
* `DB::repair` breaks the table for checkpoints by @xgreenx in
#1463
* Avoid possible truncation of higher bits by @xgreenx in
#1464
* Bumping `fuel-vm` to `v0.40.0` by @xgreenx in
#1468
* Improvements for keygen cli and crates by @cr-fuel in
#1465
* Handling overflows during arithmetic operations by @xgreenx in
#1466
* test: Add contract code root benchmark by @bvrooman in
#1452
* test: Add state root and contract id benchmarks by @bvrooman in
#1462
* Avoid storage caching in benchmarks by @xgreenx in
#1469
* Weekly `cargo update` by @github-actions in
#1471
* Expose fuel-core version as a constant by @Br1ght0ne in
#1473
* Upgrade ed25519_dalek 1.0.1 -> 2.0.0 by @Dentosal in
#1475
* chore: Upgrade Rust 1.73 by @bvrooman in
#1477
* Decrease number of iterations for sequential benchmarks by @xgreenx in
#1480
* Add mldv bench by @Dentosal in
#1481
* feat: Separate light and heavy gas costs (core) by @bvrooman in
#1483
* chore: Remove `network` parameter from CLI by @bvrooman in
#1484
* Transaction policies support by @xgreenx in
#1472
* stage release candidate for beta-5 by @Voxelot in
#1485
* setup docker auth for binary publishing by @Voxelot in
#1488
* Fix macos binary publishing by @xgreenx in
#1489
* Add documentation for our calculation of a _reasonable_ gas fee for
storage by @MitchTurner in
#1478
* "contract" op code sanity checks by @MitchTurner in
#1453
* "other" op code sanity check by @MitchTurner in
#1476
* Add push and pop benches by @MitchTurner in
#1490
* chore: Remove unused gossipsub items by @bvrooman in
#1491
* Adjusting of the prices benchmarks after sanity check benchmarks by
@xgreenx in #1494
* Weekly `cargo update` by @github-actions in
#1498
* Update benches that are affected by receipts by @Dentosal in
#1454
* Support backward iteration in the RocksDB by @xgreenx in
#1492
* Added validation of the coin's fields during block production and
validation by @xgreenx in
#1506
* Added price benchmark for `vm_initialization` by @xgreenx in
#1502
* Sanity-check `gtf` opcode by @MitchTurner in
#1503
* Tool for generating fee collection contract by @Voxelot in
#1501
* Chain config for beta 5 network by @xgreenx in
#1507
* Remove usage of iter_all_filtered from merkle_contract_state_range by
@Dentosal in #1512

## New Contributors
* @YusongWang made their first contribution in
#1293
* @calldelegation made their first contribution in
#1362
* @PaulRBerg made their first contribution in
#1357
* @cr-fuel made their first contribution in
#1397
* @github-actions made their first contribution in
#1417
* @GoodDaisy made their first contribution in
#1424

**Full Changelog**:
v0.20.8...v0.21.0

---------

Co-authored-by: Brandon Vrooman <[email protected]>
crypto523 added a commit to crypto523/fuel-core that referenced this pull request Oct 7, 2024
## Version 0.21.0

This release focuses on preparing `fuel-core` for the mainnet
environment.
- Most of the changes improved the security and stability of the node.
- The gas model was reworked to cover all aspects of execution.
- The benchmarking system was significantly enhanced, covering worst
scenarios.
- A new set of benchmarks was added to track the accuracy of gas prices.
- Optimized heavy operations and removed/replaced exploitable
functionality.

Besides that, there are more concrete changes:
- Unified naming conventions for all CLI arguments. Added dependencies
between related fields to avoid misconfiguration in case of missing
arguments. Added `--debug` flag that enables additional functionality
like a debugger.
- Improved telemetry to cover the internal work of services and added
support for the Pyroscope, allowing it to generate real-time flamegraphs
to track performance.
- Improved stability of the P2P layer and adjusted the updating of
reputation. The speed of block synchronization was significantly
increased.
- The node is more stable and resilient. Improved DoS resistance and
resource management. Fixed critical bugs during state transition.
- Reworked the `Mint` transaction to accumulate the fee from block
production inside the contract defined by the block producer.

FuelVM received a lot of safety and stability improvements:
- The audit helped identify some bugs and errors that have been
successfully fixed.
- Updated the gas price model to charge for resources used during the
transaction lifecycle.
- Added `no_std` and 32 bit system support. This opens doors for fraud
proving in the future.
- Removed the `ChainId` from the `PredicateId` calculation, allowing the
use of predicates cross-chain.
- Improvements in the performance of some storage-related opcodes.
- Support the `ECAL` instruction that allows adding custom functionality
to the VM. It can be used to create unique rollups or advanced indexers
in the future.
- Support of [transaction
policies](https://github.com/FuelLabs/fuel-vm/blob/master/CHANGELOG.md#version-0420)
provides additional safety for the user.
It also allows the implementation of a multi-dimensional price model in
the future, making the transaction execution cheaper and allowing more
transactions that don't affect storage.
- Refactored errors, returning more detailed errors to the user,
simplifying debugging.

### Added

- [#1503](FuelLabs/fuel-core#1503): Add `gtf`
opcode sanity check.
- [#1502](FuelLabs/fuel-core#1502): Added price
benchmark for `vm_initialization`.
- [#1501](FuelLabs/fuel-core#1501): Add a CLI
command for generating a fee collection contract.
- [#1492](FuelLabs/fuel-core#1492): Support
backward iteration in the RocksDB. It allows backward queries that were
not allowed before.
- [#1490](FuelLabs/fuel-core#1490): Add push and
pop benchmarks.
- [#1485](FuelLabs/fuel-core#1485): Prepare rc
release of fuel core v0.21
- [#1476](FuelLabs/fuel-core#1453): Add the
majority of the "other" benchmarks for contract opcodes.
- [#1473](FuelLabs/fuel-core#1473): Expose
fuel-core version as a constant
- [#1469](FuelLabs/fuel-core#1469): Added
support of bloom filter for RocksDB tables and increased the block
cache.
- [#1465](FuelLabs/fuel-core#1465): Improvements
for keygen cli and crates
- [#1642](FuelLabs/fuel-core#1462): Added
benchmark to measure the performance of contract state and contract ID
calculation; use for gas costing.
- [#1457](FuelLabs/fuel-core#1457): Fixing
incorrect measurement for fast(µs) opcodes.
- [#1456](FuelLabs/fuel-core#1456): Added
flushing of the RocksDB during a graceful shutdown.
- [#1456](FuelLabs/fuel-core#1456): Added more
logs to track the service lifecycle.
- [#1453](FuelLabs/fuel-core#1453): Add the
majority of the "sanity" benchmarks for contract opcodes.
- [#1452](FuelLabs/fuel-core#1452): Added
benchmark to measure the performance of contract root calculation when
utilizing the maximum contract size; used for gas costing of contract
root during predicate owner validation.
- [#1449](FuelLabs/fuel-core#1449): Fix coin
pagination in e2e test client.
- [#1447](FuelLabs/fuel-core#1447): Add timeout
for continuous e2e tests
- [#1444](FuelLabs/fuel-core#1444): Add "sanity"
benchmarks for memory opcodes.
- [#1437](FuelLabs/fuel-core#1437): Add some
transaction throughput tests for basic transfers.
- [#1436](FuelLabs/fuel-core#1436): Add a github
action to continuously test beta-4.
- [#1433](FuelLabs/fuel-core#1433): Add "sanity"
benchmarks for flow opcodes.
- [#1432](FuelLabs/fuel-core#1432): Add a new
`--api-request-timeout` argument to control TTL for GraphQL requests.
- [#1430](FuelLabs/fuel-core#1430): Add "sanity"
benchmarks for crypto opcodes.
- [#1426](FuelLabs/fuel-core#1426) Split keygen
into a create and a binary.
- [#1419](FuelLabs/fuel-core#1419): Add
additional "sanity" benchmarks for arithmetic op code instructions.
- [#1411](FuelLabs/fuel-core#1411): Added WASM
and `no_std` compatibility.
- [#1405](FuelLabs/fuel-core#1405): Use correct
names for service metrics.
- [#1400](FuelLabs/fuel-core#1400): Add releasy
beta to fuel-core so that new commits to fuel-core master triggers
fuels-rs.
- [#1371](FuelLabs/fuel-core#1371): Add new
client function for querying the `MessageStatus` for a specific message
(by `Nonce`).
- [#1356](FuelLabs/fuel-core#1356): Add peer
reputation reporting to heartbeat code.
- [#1355](FuelLabs/fuel-core#1355): Added new
metrics related to block importing, such as tps, sync delays etc.
- [#1339](FuelLabs/fuel-core#1339): Adds
`baseAssetId` to `FeeParameters` in the GraphQL API.
- [#1331](FuelLabs/fuel-core#1331): Add peer
reputation reporting to block import code.
- [#1324](FuelLabs/fuel-core#1324): Added
pyroscope profiling to fuel-core, intended to be used by a secondary
docker image that has debug symbols enabled.
- [#1309](FuelLabs/fuel-core#1309): Add
documentation for running debug builds with CLion and Visual Studio
Code.
- [#1308](FuelLabs/fuel-core#1308): Add support
for loading .env files when compiling with the `env` feature. This
allows users to conveniently supply CLI arguments in a secure and
IDE-agnostic way.
- [#1304](FuelLabs/fuel-core#1304): Implemented
`submit_and_await_commit_with_receipts` method for `FuelClient`.
- [#1286](FuelLabs/fuel-core#1286): Include
readable names for test cases where missing.
- [#1274](FuelLabs/fuel-core#1274): Added tests
to benchmark block synchronization.
- [#1263](FuelLabs/fuel-core#1263): Add gas
benchmarks for `ED19` and `ECR1` instructions.

### Changed

- [#1512](FuelLabs/fuel-core#1512): Internally
simplify merkle_contract_state_range.
- [#1507](FuelLabs/fuel-core#1507): Updated
chain configuration to be ready for beta 5 network. It includes opcode
prices from the latest benchmark and contract for the block producer.
- [#1477](FuelLabs/fuel-core#1477): Upgraded the
Rust version used in CI and containers to 1.73.0. Also includes
associated Clippy changes.
- [#1469](FuelLabs/fuel-core#1469): Replaced
usage of `MemoryTransactionView` by `Checkpoint` database in the
benchmarks.
- [#1468](FuelLabs/fuel-core#1468): Bumped
version of the `fuel-vm` to `v0.40.0`. It brings some breaking changes
into consensus parameters API because of changes in the underlying
types.
- [#1466](FuelLabs/fuel-core#1466): Handling
overflows during arithmetic operations.
- [#1460](FuelLabs/fuel-core#1460): Change
tracking branch from main to master for releasy tests.
- [#1454](FuelLabs/fuel-core#1454): Update gas
benchmarks for opcodes that append receipts.
- [#1440](FuelLabs/fuel-core#1440): Don't report
reserved nodes that send invalid transactions.
- [#1439](FuelLabs/fuel-core#1439): Reduced
memory BMT consumption during creation of the header.
- [#1434](FuelLabs/fuel-core#1434): Continue
gossiping transactions to reserved peers regardless of gossiping
reputation score.
- [#1408](FuelLabs/fuel-core#1408): Update gas
benchmarks for storage opcodes to use a pre-populated database to get
more accurate worst-case costs.
- [#1399](FuelLabs/fuel-core#1399): The Relayer
now queries Ethereum for its latest finalized block instead of using a
configurable "finalization period" to presume finality.
- [#1397](FuelLabs/fuel-core#1397): Improved
keygen. Created a crate to be included from forc plugins and upgraded
internal library to drop requirement of protoc to build
- [#1395](FuelLabs/fuel-core#1395): Add
DependentCost benchmarks for `k256`, `s256` and `mcpi` instructions.
- [#1393](FuelLabs/fuel-core#1393): Increase
heartbeat timeout from `2` to `60` seconds, as suggested in [this
issue](FuelLabs/fuel-core#1330).
- [#1392](FuelLabs/fuel-core#1392): Fixed an
overflow in `message_proof`.
- [#1390](FuelLabs/fuel-core#1390): Up the
`ethers` version to `2` to fix an issue with `tungstenite`.
- [#1383](FuelLabs/fuel-core#1383): Disallow
usage of `log` crate internally in favor of `tracing` crate.
- [#1380](FuelLabs/fuel-core#1380): Add
preliminary, hard-coded config values for heartbeat peer reputation,
removing `todo`.
- [#1377](FuelLabs/fuel-core#1377): Remove
`DiscoveryEvent` and use `KademliaEvent` directly in
`DiscoveryBehavior`.
- [#1366](FuelLabs/fuel-core#1366): Improve
caching during docker builds in CI by replacing gha
- [#1358](FuelLabs/fuel-core#1358): Upgraded the
Rust version used in CI to 1.72.0. Also includes associated Clippy
changes.
- [#1349](FuelLabs/fuel-core#1349): Updated
peer-to-peer transactions API to support multiple blocks in a single
request, and updated block synchronization to request multiple blocks
based on the configured range of headers.
- [#1342](FuelLabs/fuel-core#1342): Add error
handling for P2P requests to return `None` to requester and log error.
- [#1318](FuelLabs/fuel-core#1318): Modified
block synchronization to use asynchronous task execution when retrieving
block headers.
- [#1314](FuelLabs/fuel-core#1314): Removed
`types::ConsensusParameters` in favour of `fuel_tx:ConsensusParameters`.
- [#1302](FuelLabs/fuel-core#1302): Removed the
usage of flake and building of the bridge contract ABI.
It simplifies the maintenance and updating of the events, requiring only
putting the event definition into the codebase of the relayer.
- [#1293](FuelLabs/fuel-core#1293):
Parallelized the `estimate_predicates` endpoint to utilize all available
threads.
- [#1270](FuelLabs/fuel-core#1270): Modify the
way block headers are retrieved from peers to be done in batches.

#### Breaking
- [#1506](FuelLabs/fuel-core#1506): Added
validation of the coin's fields during block production and validation.
Before, it was possible to submit a transaction that didn't match the
coin's values in the database, allowing printing/using unavailable
assets.
- [#1491](FuelLabs/fuel-core#1491): Removed
unused request and response variants from the Gossipsub implementation,
as well as related definitions and tests. Specifically, this removes
gossiping of `ConsensusVote` and `NewBlock` events.
- [#1472](FuelLabs/fuel-core#1472): Upgraded
`fuel-vm` to `v0.42.0`. It introduces transaction policies that changes
layout of the transaction. FOr more information check the
[v0.42.0](FuelLabs/fuel-vm#635) release.
- [#1470](FuelLabs/fuel-core#1470): Divide
`DependentCost` into "light" and "heavy" operations.
- [#1464](FuelLabs/fuel-core#1464): Avoid
possible truncation of higher bits. It may invalidate the code that
truncated higher bits causing different behavior on 32-bit vs. 64-bit
systems. The change affects some endpoints that now require lesser
integers.
- [#1432](FuelLabs/fuel-core#1432): All
subscriptions and requests have a TTL now. So each subscription
lifecycle is limited in time. If the subscription is closed because of
TTL, it means that you subscribed after your transaction had been
dropped by the network.
- [#1407](FuelLabs/fuel-core#1407): The
recipient is a `ContractId` instead of `Address`. The block producer
should deploy its contract to receive the transaction fee. The collected
fee is zero until the recipient contract is set.
- [#1407](FuelLabs/fuel-core#1407): The `Mint`
transaction is reworked with new fields to support the account-base
model. It affects serialization and deserialization of the transaction
and also affects GraphQL schema.
- [#1407](FuelLabs/fuel-core#1407): The `Mint`
transaction is the last transaction in the block instead of the first.
- [#1374](FuelLabs/fuel-core#1374): Renamed
`base_chain_height` to `da_height` and return current relayer height
instead of latest Fuel block height.
- [#1367](FuelLabs/fuel-core#1367): Update to
the latest version of fuel-vm.
- [#1363](FuelLabs/fuel-core#1363): Change
message_proof api to take `nonce` instead of `message_id`
- [#1355](FuelLabs/fuel-core#1355): Removed the
`metrics` feature flag from the fuel-core crate, and metrics are now
included by default.
- [#1339](FuelLabs/fuel-core#1339): Added a new
required field called `base_asset_id` to the `FeeParameters` definition
in `ConsensusParameters`, as well as default values for `base_asset_id`
in the `beta` and `dev` chain specifications.
- [#1322](FuelLabs/fuel-core#1322):
The `debug` flag is added to the CLI. The flag should be used for local
development only. Enabling debug mode:
      - Allows GraphQL Endpoints to arbitrarily advance blocks.
      - Enables debugger GraphQL Endpoints.
      - Allows setting `utxo_validation` to `false`.
- [#1318](FuelLabs/fuel-core#1318): Removed the
`--sync-max-header-batch-requests` CLI argument, and renamed
`--sync-max-get-txns` to `--sync-block-stream-buffer-size` to better
represent the current behavior in the import.
- [#1290](FuelLabs/fuel-core#1290): Standardize
CLI args to use `-` instead of `_`.
- [#1279](FuelLabs/fuel-core#1279): Added a new
CLI flag to enable the Relayer service `--enable-relayer`, and disabled
the Relayer service by default. When supplying the `--enable-relayer`
flag, the `--relayer` argument becomes mandatory, and omitting it is an
error. Similarly, providing a `--relayer` argument without the
`--enable-relayer` flag is an error. Lastly, providing the `--keypair`
or `--network` arguments will also produce an error if the
`--enable-p2p` flag is not set.
- [#1262](FuelLabs/fuel-core#1262): The
`ConsensusParameters` aggregates all configuration data related to the
consensus. It contains many fields that are segregated by the usage. The
API of some functions was affected to use lesser types instead the whole
`ConsensusParameters`. It is a huge breaking change requiring
repetitively monotonically updating all places that use the
`ConsensusParameters`. But during updating, consider that maybe you can
use lesser types. Usage of them may simplify signatures of methods and
make them more user-friendly and transparent.

### Removed

#### Breaking
- [#1484](FuelLabs/fuel-core#1484): Removed
`--network` CLI argument. Now the name of the network is fetched form
chain configuration.
- [#1399](FuelLabs/fuel-core#1399): Removed
`relayer-da-finalization` parameter from the relayer CLI.
- [#1338](FuelLabs/fuel-core#1338): Updated
GraphQL client to use `DependentCost` for `k256`, `mcpi`, `s256`,
`scwq`, `swwq` opcodes.
- [#1322](FuelLabs/fuel-core#1322): The
`manual_blocks_enabled` flag is removed from the CLI. The analog is a
`debug` flag.

## What's Changed
* Added changelog in the same way as we did for `fuel-vm` by @xgreenx in
FuelLabs/fuel-core#1287
* Decompose consensus params struct by @MitchTurner in
FuelLabs/fuel-core#1262
* Replace all instances of `_` in CLI `long` arguments with `-` by
@MitchTurner in FuelLabs/fuel-core#1290
* [rpc] Parallelise estimate_predicates endpoint by @YusongWang in
FuelLabs/fuel-core#1293
* Add readable test names to test cases by @MitchTurner in
FuelLabs/fuel-core#1286
* ED19 and ECR1 benchmarks by @Dentosal in
FuelLabs/fuel-core#1263
* feat: Add `enable-relayer` flag to `fuel-core` CLI by @bvrooman in
FuelLabs/fuel-core#1279
* Small nits found during deploying and benchmarking by @xgreenx in
FuelLabs/fuel-core#1303
* Implemented `submit_and_await_commit_with_receipts` method by @xgreenx
in FuelLabs/fuel-core#1304
* Removed the usage of flake and building of the bridge contract ABI by
@xgreenx in FuelLabs/fuel-core#1302
* Download range of headers during syncing by @MitchTurner in
FuelLabs/fuel-core#1270
* feat: Enable .env file loading using `env` feature by @bvrooman in
FuelLabs/fuel-core#1308
* chore: Remove types::ConsensusParameters by @bvrooman in
FuelLabs/fuel-core#1314
* docs: Debugging instructions using IDEs by @bvrooman in
FuelLabs/fuel-core#1309
* test: Block Import benchmarks and test helpers by @bvrooman in
FuelLabs/fuel-core#1274
* Fix audit CI for `webpki` by @xgreenx in
FuelLabs/fuel-core#1319
* chore: Single buffer block sync by @bvrooman in
FuelLabs/fuel-core#1318
* Run unit tests without default features only for specific crates by
@xgreenx in FuelLabs/fuel-core#1321
* Added support for `debug` CLI flag. by @xgreenx in
FuelLabs/fuel-core#1322
* Report Peers that give bad Block Info by @MitchTurner in
FuelLabs/fuel-core#1331
* Pyroscope profiling by @Voxelot in
FuelLabs/fuel-core#1324
* Add error handling for P2P requests to return `None` to requester and
log error by @MitchTurner in
FuelLabs/fuel-core#1342
* Importer Metrics by @Voxelot in
FuelLabs/fuel-core#1355
* chore: Upgrade to Rust 1.72.0 in CI by @bvrooman in
FuelLabs/fuel-core#1358
* chore: Upgrade `fuel-vm` to 0.37.0 by @bvrooman in
FuelLabs/fuel-core#1338
* docs: remove stale schema by @calldelegation in
FuelLabs/fuel-core#1362
* Replace message_id with nonce in `MessageProof` query by @MitchTurner
in FuelLabs/fuel-core#1363
* feat: Configurable base asset by @bvrooman in
FuelLabs/fuel-core#1339
* avoid gha caching for docker builds by @Voxelot in
FuelLabs/fuel-core#1366
* Add tracking for peer heartbeats by @MitchTurner in
FuelLabs/fuel-core#1356
* docs: fix broken link in README by @PaulRBerg in
FuelLabs/fuel-core#1357
* Use right level of error for `.env` file and duplicated service by
@xgreenx in FuelLabs/fuel-core#1372
* Add query and handling for `MessageStatus` by @MitchTurner in
FuelLabs/fuel-core#1371
* Renamed `base_chain_height` to `da_height` and return current relayer
height instead of latest Fuel block height by @xgreenx in
FuelLabs/fuel-core#1374
* Remove `DiscoveryEvent` and use `KademliaEvent` instead by
@MitchTurner in FuelLabs/fuel-core#1377
* Remove todo from code and provide some preliminary peer review config
values by @MitchTurner in
FuelLabs/fuel-core#1380
* Clippy lint to disallow logging crate macros in favor of tracing by
@Dentosal in FuelLabs/fuel-core#1383
* fuel-vm nostd update by @Dentosal in
FuelLabs/fuel-core#1367
* Up the `ethers` version to `2` to fix an issue with `tungstenite` by
@xgreenx in FuelLabs/fuel-core#1390
* Increase heartbeat timeout to one minute by @Dentosal in
FuelLabs/fuel-core#1393
* feat: batch transactions import by @bvrooman in
FuelLabs/fuel-core#1349
* Fix an interger overflow in message_proof when looking beyond genesis
by @Dentosal in FuelLabs/fuel-core#1392
* Improve keygen by @cr-fuel in
FuelLabs/fuel-core#1397
* Benchmark {k256, s256, mcpi} opcodes using DependentCost by @Dentosal
in FuelLabs/fuel-core#1395
* Use correct names for service metrics by @xgreenx in
FuelLabs/fuel-core#1405
* feat: Retrieve finalized blocks from Ethereum by @bvrooman in
FuelLabs/fuel-core#1399
* Updated CI to run `cargo update` weekly by @xgreenx in
FuelLabs/fuel-core#1415
* CI `cargo update` weekly by @xgreenx in
FuelLabs/fuel-core#1416
* Weekly `cargo update` by @github-actions in
FuelLabs/fuel-core#1417
* Fix typos by @GoodDaisy in
FuelLabs/fuel-core#1424
* feat: Support no_std and WASM compilation for `fuel-core` crates by
@bvrooman in FuelLabs/fuel-core#1411
* Create sanity benchmark checks for all the arithmetic op codes by
@MitchTurner in FuelLabs/fuel-core#1419
* Update benchmarking and collecting for `scwq`, `swwq` and `srwq`
opcodes by @xgreenx in FuelLabs/fuel-core#1427
* Account-base fee collection by @xgreenx in
FuelLabs/fuel-core#1407
* Rollback modification of the chain specification by @xgreenx in
FuelLabs/fuel-core#1429
* Tx subscription cleanup (#1422) by @xgreenx in
FuelLabs/fuel-core#1432
* Mark reserved peers as explicit for gossipsub to avoid reputation
decreasing (#1423) by @xgreenx in
FuelLabs/fuel-core#1434
* Weekly `cargo update` by @github-actions in
FuelLabs/fuel-core#1438
* ci: add beta releasy to fuel-core by @kayagokalp in
FuelLabs/fuel-core#1400
* setup a cron job to test beta-4 continuously by @Voxelot in
FuelLabs/fuel-core#1436
* chore: Use MerkleRootCalculator when only BMT root is needed by
@bvrooman in FuelLabs/fuel-core#1439
* Crypto op code sanity checks by @MitchTurner in
FuelLabs/fuel-core#1430
* Update gas benchmarks for some storage opcodes by @Dentosal in
FuelLabs/fuel-core#1408
* Split keygen into a create and a binary by @cr-fuel in
FuelLabs/fuel-core#1426
* Basic Transfer TPS Benchmarking by @Voxelot in
FuelLabs/fuel-core#1437
* "flow" op code sanity benchmarks by @MitchTurner in
FuelLabs/fuel-core#1433
* Applying `#1435` to `master` by @xgreenx in
FuelLabs/fuel-core#1440
* "memory" opcode sanity checks by @MitchTurner in
FuelLabs/fuel-core#1444
* Add timeout to E2E test by @Voxelot in
FuelLabs/fuel-core#1447
* fix owns_coins to properly paginate by @Voxelot in
FuelLabs/fuel-core#1449
* Fixing incorrect measurement for fast(µs) opcodes by @xgreenx in
FuelLabs/fuel-core#1457
* Call `flush` during end of the `FuelService` by @xgreenx in
FuelLabs/fuel-core#1456
* chore: fix releasy test tracking branch from `main` to `master` by
@kayagokalp in FuelLabs/fuel-core#1460
* Weekly `cargo update` by @github-actions in
FuelLabs/fuel-core#1461
* `DB::repair` breaks the table for checkpoints by @xgreenx in
FuelLabs/fuel-core#1463
* Avoid possible truncation of higher bits by @xgreenx in
FuelLabs/fuel-core#1464
* Bumping `fuel-vm` to `v0.40.0` by @xgreenx in
FuelLabs/fuel-core#1468
* Improvements for keygen cli and crates by @cr-fuel in
FuelLabs/fuel-core#1465
* Handling overflows during arithmetic operations by @xgreenx in
FuelLabs/fuel-core#1466
* test: Add contract code root benchmark by @bvrooman in
FuelLabs/fuel-core#1452
* test: Add state root and contract id benchmarks by @bvrooman in
FuelLabs/fuel-core#1462
* Avoid storage caching in benchmarks by @xgreenx in
FuelLabs/fuel-core#1469
* Weekly `cargo update` by @github-actions in
FuelLabs/fuel-core#1471
* Expose fuel-core version as a constant by @Br1ght0ne in
FuelLabs/fuel-core#1473
* Upgrade ed25519_dalek 1.0.1 -> 2.0.0 by @Dentosal in
FuelLabs/fuel-core#1475
* chore: Upgrade Rust 1.73 by @bvrooman in
FuelLabs/fuel-core#1477
* Decrease number of iterations for sequential benchmarks by @xgreenx in
FuelLabs/fuel-core#1480
* Add mldv bench by @Dentosal in
FuelLabs/fuel-core#1481
* feat: Separate light and heavy gas costs (core) by @bvrooman in
FuelLabs/fuel-core#1483
* chore: Remove `network` parameter from CLI by @bvrooman in
FuelLabs/fuel-core#1484
* Transaction policies support by @xgreenx in
FuelLabs/fuel-core#1472
* stage release candidate for beta-5 by @Voxelot in
FuelLabs/fuel-core#1485
* setup docker auth for binary publishing by @Voxelot in
FuelLabs/fuel-core#1488
* Fix macos binary publishing by @xgreenx in
FuelLabs/fuel-core#1489
* Add documentation for our calculation of a _reasonable_ gas fee for
storage by @MitchTurner in
FuelLabs/fuel-core#1478
* "contract" op code sanity checks by @MitchTurner in
FuelLabs/fuel-core#1453
* "other" op code sanity check by @MitchTurner in
FuelLabs/fuel-core#1476
* Add push and pop benches by @MitchTurner in
FuelLabs/fuel-core#1490
* chore: Remove unused gossipsub items by @bvrooman in
FuelLabs/fuel-core#1491
* Adjusting of the prices benchmarks after sanity check benchmarks by
@xgreenx in FuelLabs/fuel-core#1494
* Weekly `cargo update` by @github-actions in
FuelLabs/fuel-core#1498
* Update benches that are affected by receipts by @Dentosal in
FuelLabs/fuel-core#1454
* Support backward iteration in the RocksDB by @xgreenx in
FuelLabs/fuel-core#1492
* Added validation of the coin's fields during block production and
validation by @xgreenx in
FuelLabs/fuel-core#1506
* Added price benchmark for `vm_initialization` by @xgreenx in
FuelLabs/fuel-core#1502
* Sanity-check `gtf` opcode by @MitchTurner in
FuelLabs/fuel-core#1503
* Tool for generating fee collection contract by @Voxelot in
FuelLabs/fuel-core#1501
* Chain config for beta 5 network by @xgreenx in
FuelLabs/fuel-core#1507
* Remove usage of iter_all_filtered from merkle_contract_state_range by
@Dentosal in FuelLabs/fuel-core#1512

## New Contributors
* @YusongWang made their first contribution in
FuelLabs/fuel-core#1293
* @calldelegation made their first contribution in
FuelLabs/fuel-core#1362
* @PaulRBerg made their first contribution in
FuelLabs/fuel-core#1357
* @cr-fuel made their first contribution in
FuelLabs/fuel-core#1397
* @github-actions made their first contribution in
FuelLabs/fuel-core#1417
* @GoodDaisy made their first contribution in
FuelLabs/fuel-core#1424

**Full Changelog**:
FuelLabs/fuel-core@v0.20.8...v0.21.0

---------

Co-authored-by: Brandon Vrooman <[email protected]>
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