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

Hardfork 4 #362

Merged
merged 290 commits into from
Oct 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
290 commits
Select commit Hold shift + click to select a range
5b6c0a4
fix xpcall
kroggen Jul 19, 2023
4ba4b75
add contracts for tests [skip ci]
kroggen Jul 28, 2023
3fc02f9
Merge branch 'develop' into fix/pcall-event
kroggen Aug 10, 2023
5b7e775
override pcall and xpcall on V4
kroggen Aug 10, 2023
d237efb
NORMAL and TRANSFER txns should not call a contract
kroggen Aug 10, 2023
636dd30
initial changes for V4 hardfork
kroggen Aug 2, 2023
ec0ffd0
fix some tests on hardfork_test.go [skip ci]
kroggen Aug 2, 2023
44cb2db
config - fix hardfork test error
rabbitprincess Aug 3, 2023
a049631
use LuaJIT with fix memory gas for V4
kroggen Aug 10, 2023
be5dca3
add some integration tests for V4
kroggen Aug 10, 2023
9bd4c2a
emit error
kroggen Aug 11, 2023
5fa8298
handle TRANSFER txns with contracts
kroggen Aug 11, 2023
35397a0
fix newline
kroggen Aug 11, 2023
e196a1c
integration tests: adjust gas for V4
kroggen Aug 11, 2023
6523350
vm_dummy tests: adjust gas for V4
kroggen Aug 11, 2023
1ba67c0
vm_dummy tests: add TestGasPerFunction for V4
kroggen Aug 11, 2023
4364f7e
fix gas computation for memory on V4
kroggen Aug 11, 2023
2161367
fix gas-per-function values for V4
kroggen Aug 11, 2023
9d77516
Merge branch 'develop' into topic/hardfork-v4
kroggen Sep 5, 2023
f2bf927
add comment on run_tests.sh [skip ci]
kroggen Sep 6, 2023
3718b71
Merge branch 'topic/hardfork-v4' into fix/pcall-event
kroggen Sep 6, 2023
fbaf809
add and update tests for pcall/xpcall
kroggen Sep 6, 2023
50a4d1f
Merge branch 'topic/hardfork-v4' into topic/normal-txn-do-not-call-co…
kroggen Sep 6, 2023
f4e7bb6
Merge branch 'topic/hardfork-v4' into feature/system.resolve
kroggen Sep 6, 2023
582d059
Merge branch 'topic/hardfork-v4' into fix/bignum-octal-format
kroggen Sep 6, 2023
3f9ce62
Merge branch 'topic/hardfork-v4' into feature/toaddress+topubkey
kroggen Sep 6, 2023
047ce80
load name_service module only on V4
kroggen Sep 6, 2023
1bad2bc
load new functions only on V4
kroggen Sep 6, 2023
d759d83
update tests for name_service
kroggen Sep 6, 2023
1cb1785
add test for bignum octal, hex and binary
kroggen Sep 8, 2023
0a16b5c
compile deployed code to bytecode on V4
kroggen Sep 27, 2023
ff9cf3c
aergocli: deploy as plain code
kroggen Sep 27, 2023
e5c3d54
add bignum.ispositive()
kroggen Sep 27, 2023
309000c
add tests
kroggen Sep 28, 2023
5fbcc40
add system.version()
kroggen Sep 28, 2023
a895381
Merge branch 'develop' into fix/pcall-event
kroggen Oct 4, 2023
d2ac961
update integration tests with new method
kroggen Oct 4, 2023
ea66e27
Merge branch 'develop' into feature/system.resolve
kroggen Oct 4, 2023
78574a0
update integration tests with new method
kroggen Oct 4, 2023
781e73c
Merge branch 'develop' into topic/normal-txn-do-not-call-contract
kroggen Oct 5, 2023
6bb2c2f
add test for transaction types
kroggen Oct 5, 2023
2f2e1d3
add new test cases
kroggen Oct 6, 2023
caae1ac
Merge branch 'develop' into topic/hardfork-v4
kroggen Oct 6, 2023
c57a6cb
temporarily disable usage of new aergocli deploy
kroggen Oct 6, 2023
5a1e89d
Merge branch 'topic/hardfork-v4' into topic/deploy-plain-code
kroggen Oct 6, 2023
09fa251
use new aergocli deploy method on tests
kroggen Oct 6, 2023
201c9c0
fix contract deploy
kroggen Oct 6, 2023
0bc2cc8
Merge branch 'topic/hardfork-v4' into topic/normal-txn-do-not-call-co…
kroggen Oct 6, 2023
cd75723
Merge branch 'topic/hardfork-v4' into fix/pcall-event
kroggen Oct 6, 2023
cbde288
Merge branch 'topic/hardfork-v4' into fix/bignum-octal-format
kroggen Oct 6, 2023
154e7c9
Merge branch 'topic/hardfork-v4' into feature/toaddress+topubkey
kroggen Oct 6, 2023
927df31
Merge branch 'topic/hardfork-v4' into feature/system.resolve
kroggen Oct 6, 2023
f203e2f
use plain code on vm_dummy for V4
kroggen Oct 6, 2023
fddb510
Merge branch 'develop' into feature/decimal-amounts
kroggen Oct 16, 2023
8da9e06
update checking of hardfork version to V4
kroggen Oct 16, 2023
07b830e
Merge branch 'develop' into topic/hardfork-v4
kroggen Oct 17, 2023
7341ae5
Merge branch 'topic/hardfork-v4' into feature/system.resolve
kroggen Oct 17, 2023
690afcb
Merge branch 'topic/hardfork-v4' into feature/toaddress+topubkey
kroggen Oct 17, 2023
661f7e8
Merge branch 'topic/hardfork-v4' into fix/pcall-event
kroggen Oct 17, 2023
a8e68de
Merge branch 'topic/hardfork-v4' into topic/deploy-plain-code
kroggen Oct 17, 2023
3c8e3c5
Merge branch 'topic/hardfork-v4' into topic/bignum.ispositive
kroggen Oct 17, 2023
bf1f5b1
fix test-gas-per-function on V4
kroggen Oct 17, 2023
ccfc0c6
Merge branch 'topic/hardfork-v4' into topic/normal-txn-do-not-call-co…
kroggen Oct 17, 2023
d70c9fd
Merge branch 'topic/hardfork-v4' into feature/decimal-amounts
kroggen Oct 17, 2023
ecf63bf
run vm tests on hardfork V4
kroggen Oct 18, 2023
ffc79be
Merge branch 'topic/hardfork-v4' into feature/toaddress+topubkey
kroggen Oct 18, 2023
3aa380a
add tests for toAddress() and toPubKey()
kroggen Oct 18, 2023
c27787a
Merge branch 'topic/hardfork-v4' into feature/system.version
kroggen Oct 18, 2023
c1fd0f5
add test for system.version()
kroggen Oct 18, 2023
3721326
Merge branch 'topic/hardfork-v4' into fix/bignum-octal-format
kroggen Oct 18, 2023
bcc6cec
fix tests
kroggen Oct 18, 2023
f97fcfb
Merge branch 'topic/hardfork-v4' into fix/pcall-event
kroggen Oct 18, 2023
51d25ea
update integration tests
kroggen Oct 18, 2023
c932b85
Merge branch 'topic/hardfork-v4' into topic/deploy-plain-code
kroggen Oct 18, 2023
c097011
Merge branch 'topic/hardfork-v4' into topic/bignum.ispositive
kroggen Oct 18, 2023
9a16e2b
fix tests
kroggen Oct 18, 2023
409efa2
Merge branch 'topic/hardfork-v4' into feature/system.resolve
kroggen Oct 18, 2023
22b223c
fix gas usage on V4
kroggen Oct 18, 2023
baffd22
Merge branch 'develop' into topic/hardfork-v4
kroggen Oct 25, 2023
d3ebf15
move gas functions together
kroggen Oct 25, 2023
abf8c9c
fix gas on unit test
kroggen Oct 25, 2023
44ba13f
Merge branch 'topic/hardfork-v4' into topic/normal-txn-do-not-call-co…
kroggen Oct 25, 2023
051b3e7
add test cases for V4
kroggen Oct 25, 2023
23fe69a
test system.version() on queries
kroggen Oct 28, 2023
07c60a2
increase max events per txn
kroggen Oct 29, 2023
b556341
tests: fix spaces [skip ci]
kroggen Oct 30, 2023
22930d6
disable the 'require' statement on V4
kroggen Oct 31, 2023
4036fc1
test: fix gas on V4
kroggen Oct 31, 2023
8f91f04
integration test: fix gas on V4
kroggen Oct 31, 2023
b9d3bb5
luajit: fully disable unused modules
kroggen Oct 31, 2023
6a616ae
Merge branch 'develop' into topic/hardfork-v4
kroggen Nov 1, 2023
44322bc
Merge branch 'topic/hardfork-v4' into feature/decimal-amounts
kroggen Nov 1, 2023
bff4528
add test cases for decimal amounts
kroggen Oct 28, 2023
bede2d2
do not allow amounts bigger than num decimals
kroggen Oct 28, 2023
4bc6f8c
move function
kroggen Oct 28, 2023
617a0be
brick: update ParseDecimalAmount
kroggen Nov 1, 2023
9cee33b
add tests for disabled Lua functions
kroggen Nov 2, 2023
b9532a2
disable more lua functions
kroggen Nov 2, 2023
ddbe34d
fix tests for getfenv and setfenv
kroggen Nov 2, 2023
643c533
fix integration test
kroggen Nov 2, 2023
9403750
disable string.dump()
kroggen Nov 7, 2023
a87e1c2
rollback state on pcall failure
kroggen Nov 9, 2023
c01e921
fix overridden pcall and xpcall
kroggen Nov 9, 2023
be459a5
adjust test of SQL db with pcall
kroggen Nov 9, 2023
da2b603
Merge branch 'develop' into topic/hardfork-v4
kroggen Nov 14, 2023
4b78e32
Merge branch 'topic/hardfork-v4' into feature/decimal-amounts
kroggen Nov 14, 2023
64af9dd
Merge branch 'topic/hardfork-v4' into feature/system.resolve
kroggen Nov 14, 2023
3f39f3c
Merge branch 'topic/hardfork-v4' into feature/toaddress+topubkey
kroggen Nov 14, 2023
e896730
Merge branch 'topic/hardfork-v4' into fix/bignum-octal-format
kroggen Nov 14, 2023
7c0577e
Merge branch 'topic/hardfork-v4' into fix/pcall-event
kroggen Nov 14, 2023
36fdf24
Merge branch 'topic/hardfork-v4' into topic/normal-txn-do-not-call-co…
kroggen Nov 14, 2023
df9abed
Merge branch 'topic/hardfork-v4' into topic/deploy-plain-code
kroggen Nov 14, 2023
54b210f
Merge branch 'topic/hardfork-v4' into topic/bignum.ispositive
kroggen Nov 14, 2023
5abb22f
Merge branch 'topic/hardfork-v4' into feature/system.version
kroggen Nov 14, 2023
203c889
fix: use new hex encode
kroggen Nov 14, 2023
d33199e
Merge pull request #313 from aergoio/topic/pcall-rollback-state
kroggen Nov 16, 2023
f110700
add test for rollback on pcall and xpcall
kroggen Nov 16, 2023
43ddf08
format test code
kroggen Nov 16, 2023
e5081e4
disable getmetatable and setmetatable
kroggen Nov 21, 2023
cf7bd7d
disable rawget, rawset and rawequal
kroggen Nov 21, 2023
f545579
Merge branch 'topic/hardfork-v4' into topic/disable-lua-require
kroggen Nov 21, 2023
53bdc73
limit metamethod override test to <= V3
kroggen Nov 21, 2023
14c6586
Merge branch 'develop' into feature/composable-transactions
kroggen Nov 25, 2023
fb5c39e
fix build
kroggen Nov 25, 2023
b27419d
use separate lua test file
kroggen Nov 25, 2023
54e792a
fix test
kroggen Nov 25, 2023
02a23d4
Merge branch 'topic/hardfork-v4' into feature/composable-transactions
kroggen Nov 25, 2023
cd2700f
update test
kroggen Nov 25, 2023
5d568be
Merge branch 'develop' into topic/hardfork-v4
kroggen Dec 8, 2023
dc3102f
fix luajit branch
kroggen Dec 8, 2023
03995eb
Merge branch 'topic/hardfork-v4' into topic/disable-lua-require
kroggen Dec 8, 2023
fb3f70e
fix gas on integration test
kroggen Dec 8, 2023
50066a6
Merge branch 'topic/hardfork-v4' into feature/composable-transactions
kroggen Dec 13, 2023
10ba464
fix build after state refactoring
kroggen Dec 13, 2023
713d0de
compile the multicall code on demand
kroggen Dec 14, 2023
dca3d14
add MULTICALL to aergo-protobuf
kroggen Dec 16, 2023
1848b80
aergocli: add multicall command
kroggen Dec 17, 2023
2326e1c
aergocli: compute nonce on shared function
kroggen Dec 17, 2023
a30c588
Merge branch 'develop' into topic/hardfork-v4
kroggen Dec 18, 2023
05e6b7a
Merge branch 'topic/hardfork-v4' into feature/composable-transactions
kroggen Dec 18, 2023
482a116
fix segfault
kroggen Dec 18, 2023
b318de2
rename variables
kroggen Dec 18, 2023
98c7e46
Merge branch 'topic/hardfork-v4' into fix/pcall-event
kroggen Dec 19, 2023
41862db
Merge branch 'topic/hardfork-v4' into topic/deploy-plain-code
kroggen Dec 19, 2023
7a75638
Merge branch 'topic/hardfork-v4' into topic/increase-max-events
kroggen Dec 19, 2023
0bb3a85
multicall: add integration tests
kroggen Dec 20, 2023
8b82c7c
Merge branch 'develop' into topic/hardfork-v4
kroggen Jan 30, 2024
36aa884
Merge branch 'topic/hardfork-v4' into topic/disable-lua-require
kroggen Jan 30, 2024
eca536e
Merge branch 'topic/hardfork-v4' into topic/increase-max-events
kroggen Jan 30, 2024
cdbf7d3
Merge branch 'topic/hardfork-v4' into feature/system.version
kroggen Jan 30, 2024
ea1b2c9
Merge branch 'topic/hardfork-v4' into topic/bignum.ispositive
kroggen Jan 30, 2024
8f34943
Merge branch 'topic/hardfork-v4' into topic/normal-txn-do-not-call-co…
kroggen Jan 30, 2024
b56b92c
Merge branch 'topic/hardfork-v4' into fix/pcall-event
kroggen Jan 30, 2024
d0beb57
Merge branch 'topic/hardfork-v4' into fix/bignum-octal-format
kroggen Jan 30, 2024
656590a
Merge branch 'topic/hardfork-v4' into feature/toaddress+topubkey
kroggen Jan 30, 2024
3501ea1
Merge branch 'topic/hardfork-v4' into feature/system.resolve
kroggen Jan 30, 2024
f1f9bf7
Merge branch 'topic/hardfork-v4' into feature/decimal-amounts
kroggen Jan 30, 2024
51d81fc
Merge branch 'topic/hardfork-v4' into feature/composable-transactions
kroggen Jan 30, 2024
251c9a9
Merge branch 'topic/hardfork-v4' into topic/deploy-plain-code
kroggen Jan 30, 2024
60c5f75
fix integration tests
kroggen Jan 30, 2024
5abcf7c
Merge branch 'topic/hardfork-v4' into topic/disable-lua-require
kroggen Jan 30, 2024
ec40a4f
Merge branch 'topic/hardfork-v4' into topic/increase-max-events
kroggen Jan 30, 2024
03bb64f
Merge branch 'topic/hardfork-v4' into feature/system.version
kroggen Jan 30, 2024
d297d9e
Merge branch 'topic/hardfork-v4' into topic/bignum.ispositive
kroggen Jan 30, 2024
a7068af
Merge branch 'topic/hardfork-v4' into topic/normal-txn-do-not-call-co…
kroggen Jan 30, 2024
7b6b51d
Merge branch 'topic/hardfork-v4' into fix/pcall-event
kroggen Jan 30, 2024
260cd2b
Merge branch 'topic/hardfork-v4' into fix/bignum-octal-format
kroggen Jan 30, 2024
77b84d0
Merge branch 'topic/hardfork-v4' into feature/toaddress+topubkey
kroggen Jan 30, 2024
3d20d7e
Merge branch 'topic/hardfork-v4' into feature/system.resolve
kroggen Jan 30, 2024
b70ff73
Merge branch 'topic/hardfork-v4' into feature/decimal-amounts
kroggen Jan 30, 2024
345092f
Merge branch 'topic/hardfork-v4' into feature/composable-transactions
kroggen Jan 30, 2024
b22b155
Merge branch 'topic/hardfork-v4' into topic/deploy-plain-code
kroggen Jan 30, 2024
ff8d963
fix missing import
kroggen Jan 30, 2024
de1d7b2
Merge branch 'develop' into topic/hardfork-v4
kroggen Feb 7, 2024
8a8a0db
Merge branch 'topic/hardfork-v4' into topic/disable-lua-require
kroggen Feb 7, 2024
dc1ed72
Merge branch 'topic/hardfork-v4' into topic/increase-max-events
kroggen Feb 7, 2024
fbf2935
Merge branch 'topic/hardfork-v4' into feature/system.version
kroggen Feb 7, 2024
e4fb3d6
Merge branch 'topic/hardfork-v4' into topic/bignum.ispositive
kroggen Feb 7, 2024
b173fad
Merge branch 'topic/hardfork-v4' into topic/normal-txn-do-not-call-co…
kroggen Feb 7, 2024
dccbd86
Merge branch 'topic/hardfork-v4' into fix/pcall-event
kroggen Feb 7, 2024
bf31b2e
Merge branch 'topic/hardfork-v4' into fix/bignum-octal-format
kroggen Feb 7, 2024
5be4e89
Merge branch 'topic/hardfork-v4' into feature/toaddress+topubkey
kroggen Feb 7, 2024
056fed9
Merge branch 'topic/hardfork-v4' into feature/system.resolve
kroggen Feb 7, 2024
52f1ab8
Merge branch 'topic/hardfork-v4' into feature/composable-transactions
kroggen Feb 7, 2024
d7442fd
Merge branch 'topic/hardfork-v4' into topic/deploy-plain-code
kroggen Feb 7, 2024
bd14ec7
Merge branch 'topic/hardfork-v4' into feature/decimal-amounts
kroggen Feb 7, 2024
d54ca44
fix integration test
kroggen Feb 8, 2024
a289525
add tests for '0' and '9'
kroggen May 16, 2024
019df80
add tests with 2 trailing zeros
kroggen May 16, 2024
2d9b53c
fix test
kroggen May 16, 2024
fc0f8d7
Merge pull request #270 from aergoio/feature/system.version
kroggen May 17, 2024
b766a2f
Merge pull request #269 from aergoio/topic/bignum.ispositive
kroggen May 17, 2024
9b24dcb
Merge pull request #241 from aergoio/topic/normal-txn-do-not-call-con…
kroggen May 17, 2024
1a97cfe
Merge branch 'topic/hardfork-v4' into fix/pcall-event
kroggen May 17, 2024
f201a47
Merge pull request #199 from aergoio/fix/pcall-event
kroggen May 17, 2024
1eab3f1
Merge branch 'topic/hardfork-v4' into feature/toaddress+topubkey
kroggen May 17, 2024
e329eb5
Merge pull request #193 from aergoio/feature/toaddress+topubkey
kroggen May 17, 2024
c25cb1d
Merge branch 'topic/hardfork-v4' into feature/system.resolve
kroggen May 17, 2024
3c8552a
Merge pull request #192 from aergoio/feature/system.resolve
kroggen May 17, 2024
efb9c50
Merge pull request #266 from aergoio/topic/deploy-plain-code
kroggen May 17, 2024
97bae14
Merge pull request #177 from aergoio/feature/decimal-amounts
kroggen May 17, 2024
fac5f47
Merge pull request #303 from aergoio/topic/increase-max-events
kroggen May 17, 2024
891e531
Merge pull request #198 from aergoio/fix/bignum-octal-format
kroggen May 17, 2024
eeb403d
Merge pull request #306 from aergoio/topic/disable-lua-require
kroggen May 17, 2024
9fc308e
tests: adjust expected gas
kroggen May 17, 2024
c97c099
fix functional tests
kroggen May 18, 2024
1d8fbbd
brick: deploy contract bytecode in hex
kroggen Jun 1, 2024
4fda0c4
move IsHexString to hex package
kroggen Jun 2, 2024
ed5671d
vm_test: increase timeout for long test
kroggen Jun 2, 2024
6b2e107
aergoluac: add feature of decode payload
kroggen Jun 2, 2024
479d46c
support uppercase unit on decimal amounts
kroggen Jun 4, 2024
9bb1592
build docker image from local folder
kroggen Jun 13, 2024
9c64d45
fix Dockerfile
kroggen Jun 13, 2024
9bd5220
make bytecode handling more clear
kroggen Jul 7, 2024
20798f8
save the source code on contract state
kroggen Jul 7, 2024
2b08d91
Merge pull request #361 from aergoio/topic/save-source-code
kroggen Jul 8, 2024
9ae6762
Merge branch 'develop' into topic/hardfork-v4
kroggen Jul 9, 2024
fedc0c3
apply luajit fixes
kroggen Jul 9, 2024
f406be7
Merge branch 'topic/hardfork-v4' into feature/composable-transactions
kroggen Jul 9, 2024
db125ad
fix use of pcall on multicall script
kroggen Jul 9, 2024
0a4be26
rename multicall commands for better understanding
kroggen Jul 10, 2024
8dfd84e
store -> store result as
kroggen Jul 10, 2024
02a469d
add 'in' on 'for each' command
kroggen Jul 10, 2024
8ec2915
add variable '%my aergo balance%'
kroggen Jul 13, 2024
19db28f
convert amount without decimal separator to bignum
kroggen Jul 13, 2024
5d86e63
convert amount to bignum on assertion
kroggen Jul 13, 2024
fa935a6
store result of try call on call_succeeded variable
kroggen Jul 13, 2024
b37b843
fix integration test
kroggen Jul 14, 2024
c6c184a
rename 'pow' and 'sqrt'
kroggen Jul 14, 2024
f14bbd9
add '%my account address%' variable
kroggen Jul 14, 2024
7d832a2
accept single boolean on if and assert
kroggen Jul 14, 2024
bbfe8c0
conversion functions without arg: use last_result
kroggen Jul 14, 2024
05cc7e3
%last_result% -> %last result%
kroggen Jul 14, 2024
e8c7224
fix skip setting last result
kroggen Jul 15, 2024
4090a6e
remove 'get keys', exponentiate and 'square root'
kroggen Jul 16, 2024
584e0c1
fix integration tests for dpos and raft
kroggen Jul 17, 2024
4e4dd8c
end -> end if
kroggen Jul 17, 2024
80b8b19
fix: save contract source code only on V4
kroggen Jul 18, 2024
2d445a1
test state rollback on multicall txns
kroggen Jul 21, 2024
38e8116
test state rollback on integration test
kroggen Jul 21, 2024
158c14a
get balance -> get aergo balance
kroggen Jul 21, 2024
c91e7b2
fix integration test
kroggen Jul 21, 2024
4ebaf9d
add new integration tests
kroggen Jul 22, 2024
dde3772
let contracts use multicall scripts
kroggen Jul 22, 2024
cd4ce33
test state recovery on contract multicall
kroggen Jul 22, 2024
9657eb8
integration tests for contract multicall
kroggen Jul 22, 2024
949b4b0
Merge pull request #182 from aergoio/feature/composable-transactions
kroggen Aug 15, 2024
7c3aed3
integration test: disabled lua functions
kroggen Sep 19, 2024
d41ff16
fix build LuaJIT on Mac/LLVM
kroggen Sep 30, 2024
033aa86
Merge pull request #359 from aergoio/topic/docker-image-from-local-fo…
kroggen Oct 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion Docker/Dockerfile.builder
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,3 @@ RUN apt-get -y update && apt-get -y install build-essential git cmake binutils m
RUN git clone --branch ${GIT_TAG} --recursive https://github.com/aergoio/aergo.git \
&& cd aergo \
&& make aergosvr polaris colaris aergocli aergoluac brick

4 changes: 4 additions & 0 deletions Docker/Dockerfile.local
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
FROM golang:1.19.0-bullseye as builder
RUN apt-get -y update && apt-get -y install build-essential git cmake binutils m4 file
COPY . aergo
RUN cd aergo && make aergosvr polaris colaris aergocli aergoluac brick
92 changes: 92 additions & 0 deletions Docker/build-local.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#!/usr/bin/env bash

# This script can be used to build the Docker images manually (outside of CI)

set -e

MAIN_TAG=$1
SECOND_TAG=$2
THIRD_TAG=$3

if [[ -z "$MAIN_TAG" ]]
then
echo "Usage:"
echo " build-local.sh tag [second-tag] [third-tag]"
echo "Example:"
echo " build-local.sh 0.12.0-rc"
echo " build-local.sh 0.12.0 0.12 latest"
exit 1
fi


echo "Preparing local folder for build"

cd ..
git submodule update --init --recursive
make clean || true
rm -rf build
go clean --cache


if [[ -z "$THIRD_TAG" ]]
then
if [[ -z "$SECOND_TAG" ]]
then
declare -a tags=("$MAIN_TAG")
else
declare -a tags=("$MAIN_TAG" "$SECOND_TAG")
fi
else
declare -a tags=("$MAIN_TAG" "$SECOND_TAG" "$THIRD_TAG")
fi

echo "Building Docker images for ${tags[*]} using local folder"
sleep 1

BUILDER_TAG="aergo/local-builder"
echo "Building ${BUILDER_TAG}"

docker build --no-cache --file Docker/Dockerfile.local -t ${BUILDER_TAG} .
cd -
docker create --name extract ${BUILDER_TAG}
docker cp extract:/go/aergo/bin/ .
docker cp extract:/go/aergo/cmd/brick/arglog.toml bin/brick-arglog.toml
docker cp extract:/go/aergo/libtool/lib/ .
docker rm -f extract

declare -a names=("node" "tools" "polaris")
for name in "${names[@]}"
do
tagsExpanded=()
for tag in "${tags[@]}"; do
tagsExpanded+=("-t aergo/$name:$tag")
done
echo "[aergo/$name:${tags[*]}]"
DOCKERFILE="Dockerfile.$name"
echo docker build -q ${tagsExpanded[@]} --file $DOCKERFILE .
imageid=`docker build -q ${tagsExpanded[@]} --file $DOCKERFILE .`
docker images --format "Done: \t{{.Repository}}:{{.Tag}} \t{{.ID}} ({{.Size}})" | grep "${imageid:7:12}"
done

rm -rf bin lib

echo -e "\nREPOSITORY TAG IMAGE ID CREATED SIZE"
for name in "${names[@]}"
do
for tag in "${tags[@]}"
do
docker images aergo/$name:$tag | tail -1
done
done

echo -e "\nYou can now push these to Docker Hub."
echo "For example:"

declare -a names=("node" "tools" "polaris")
for name in "${names[@]}"
do
for tag in "${tags[@]}"
do
echo " docker push aergo/$name:$tag"
done
done
2 changes: 1 addition & 1 deletion aergo-protobuf
16 changes: 12 additions & 4 deletions chain/chainhandle.go
Original file line number Diff line number Diff line change
Expand Up @@ -979,12 +979,19 @@ func executeTx(execCtx context.Context, ccc consensus.ChainConsensusCluster, cdb
return err
}

if recipient, err = name.Resolve(bs, txBody.Recipient, isQuirkTx); err != nil {
return err
isMultiCall := (txBody.Type == types.TxType_MULTICALL)

if !isMultiCall {
if recipient, err = name.Resolve(bs, txBody.Recipient, isQuirkTx); err != nil {
return err
}
}

var receiver *state.AccountState
status := "SUCCESS"
if len(recipient) > 0 {
if isMultiCall {
receiver = sender
} else if len(recipient) > 0 {
receiver, err = state.GetAccountState(recipient, bs.StateDB)
if receiver != nil && txBody.Type == types.TxType_REDEPLOY {
status = "RECREATED"
Expand All @@ -1001,8 +1008,9 @@ func executeTx(execCtx context.Context, ccc consensus.ChainConsensusCluster, cdb
var txFee *big.Int
var rv string
var events []*types.Event

switch txBody.Type {
case types.TxType_NORMAL, types.TxType_REDEPLOY, types.TxType_TRANSFER, types.TxType_CALL, types.TxType_DEPLOY:
case types.TxType_NORMAL, types.TxType_TRANSFER, types.TxType_CALL, types.TxType_MULTICALL, types.TxType_DEPLOY, types.TxType_REDEPLOY:
rv, events, txFee, err = contract.Execute(execCtx, bs, cdb, tx.GetTx(), sender, receiver, bi, executionMode, false)
sender.SubBalance(txFee)
case types.TxType_GOVERNANCE:
Expand Down
126 changes: 86 additions & 40 deletions cmd/aergocli/cmd/contract.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cmd
import (
"bytes"
"context"
"math/big"
"encoding/json"
"errors"
"fmt"
Expand Down Expand Up @@ -70,17 +71,17 @@ func init() {
contractCmd.PersistentFlags().Uint64VarP(&gas, "gaslimit", "g", 0, "Gas limit")

deployCmd := &cobra.Command{
Use: `deploy [flags] --payload 'payload string' <creatorAddress> [args]
aergocli contract deploy [flags] <creatorAddress> <bcfile> <abifile> [args]
Use: `deploy [flags] <creatorAddress> <path-to-lua-file> [args]
aergocli contract deploy [flags] <creatorAddress> --payload 'payload string' [args]

You can pass constructor arguments by passing a JSON string as the optional final parameter, e.g. "[1, 2, 3]".`,
Short: "Deploy a compiled contract to the server",
Args: nArgs([]int{1, 2, 3, 4}),
You can pass arguments to the constructor() function by passing a JSON string as the optional final parameter, e.g. '[1, "test"]'`,
Short: "Deploy a contract to the server",
Args: nArgs([]int{1, 2, 3}),
RunE: runDeployCmd,
DisableFlagsInUseLine: true,
}
deployCmd.PersistentFlags().Uint64Var(&nonce, "nonce", 0, "manually set a nonce (default: set nonce automatically)")
deployCmd.PersistentFlags().StringVar(&data, "payload", "", "result of compiling a contract")
deployCmd.PersistentFlags().StringVar(&data, "payload", "", "result of compiling a contract with aergoluac")
deployCmd.PersistentFlags().StringVar(&amount, "amount", "0", "amount of token to send with deployment, in aer")
deployCmd.PersistentFlags().StringVarP(&contractID, "redeploy", "r", "", "redeploy the contract")
deployCmd.Flags().StringVar(&pw, "password", "", "password (optional, will be asked on the terminal if not given)")
Expand All @@ -101,6 +102,19 @@ func init() {
callCmd.PersistentFlags().BoolVar(&feeDelegation, "delegation", false, "request fee delegation to contract")
callCmd.Flags().StringVar(&pw, "password", "", "password (optional, will be asked on the terminal if not given)")

multicallCmd := &cobra.Command{
Use: `multicall [flags] <sender> <script>

The script is a JSON array of arrays, enclosed as a string, containing the commands`,
Short: "Calls multiple contracts / functions",
Args: nArgs([]int{2}),
RunE: runMulticallCmd,
}
multicallCmd.PersistentFlags().Uint64Var(&nonce, "nonce", 0, "manually set a nonce (default: set nonce automatically)")
multicallCmd.PersistentFlags().StringVar(&chainIdHash, "chainidhash", "", "chain id hash value encoded by base58")
multicallCmd.PersistentFlags().BoolVar(&toJSON, "tojson", false, "display json transaction instead of sending to blockchain")
multicallCmd.Flags().StringVar(&pw, "password", "", "password (optional, will be asked on the terminal if not given)")

stateQueryCmd := &cobra.Command{
Use: "statequery [flags] <contractAddress> <varname> [varindex]",
Short: "query the state of a contract with variable name and optional index",
Expand All @@ -113,6 +127,7 @@ func init() {
contractCmd.AddCommand(
deployCmd,
callCmd,
multicallCmd,
&cobra.Command{
Use: "abi [flags] <contractAddress>",
Short: "Get ABI of the contract",
Expand All @@ -130,20 +145,6 @@ func init() {
rootCmd.AddCommand(contractCmd)
}

func isHexString(s string) bool {
// check is the input has even number of characters
if len(s)%2 != 0 {
return false
}
// check if the input contains only hex characters
for _, c := range s {
if !((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')) {
return false
}
}
return true
}

func runDeployCmd(cmd *cobra.Command, args []string) error {
var err error
var code []byte
Expand All @@ -164,31 +165,39 @@ func runDeployCmd(cmd *cobra.Command, args []string) error {
nonce = state.GetNonce() + 1
}

chainInfo, err := client.GetChainInfo(context.Background(), &types.Empty{})
if err != nil {
return fmt.Errorf("could not retrieve chain info: %v", err.Error())
}

var payload []byte
if len(data) == 0 {
if len(args) < 3 {
if chainInfo.Id.Version < 4 {
cmd.SilenceUsage = false
return errors.New("for old hardforks use aergoluac and --payload method instead")
}
if len(args) < 2 {
cmd.SilenceUsage = false
return errors.New("not enough arguments")
}
code, err = os.ReadFile(args[1])
if err != nil {
return fmt.Errorf("failed to read code file: %v", err.Error())
}
var abi []byte
abi, err = os.ReadFile(args[2])
if err != nil {
return fmt.Errorf("failed to read abi file: %v", err.Error())
}
if len(args) == 4 {
if len(args) == 3 {
var ci types.CallInfo
err = json.Unmarshal([]byte(args[3]), &ci.Args)
err = json.Unmarshal([]byte(args[2]), &ci.Args)
if err != nil {
return fmt.Errorf("failed to parse JSON: %v", err.Error())
return fmt.Errorf("failed to parse arguments (JSON): %v", err.Error())
}
deployArgs = []byte(args[3])
deployArgs = []byte(args[2])
}
payload = luac.NewLuaCodePayload(luac.NewLuaCode(code, abi), deployArgs)
payload = luac.NewLuaCodePayload(luac.LuaCode(code), deployArgs)
} else {
if chainInfo.Id.Version >= 4 {
cmd.SilenceUsage = false
return errors.New("this chain only accepts deploy in plain source code\nuse the other method instead")
}
if len(args) == 2 {
var ci types.CallInfo
err = json.Unmarshal([]byte(args[1]), &ci.Args)
Expand All @@ -198,7 +207,11 @@ func runDeployCmd(cmd *cobra.Command, args []string) error {
deployArgs = []byte(args[1])
}
// check if the data is in hex format
if isHexString(data) {
if hex.IsHexString(data) {
if deployArgs != nil {
cmd.SilenceUsage = false
return errors.New("the call arguments are expected to be already on the hex data")
}
// the data is expected to be copied from aergoscan view of
// the transaction that deployed the contract
payload, err = hex.Decode(data)
Expand Down Expand Up @@ -249,13 +262,7 @@ func runCallCmd(cmd *cobra.Command, args []string) error {
if err != nil {
return fmt.Errorf("could not decode sender address: %v", err.Error())
}
if nonce == 0 {
state, err := client.GetState(context.Background(), &types.SingleBytes{Value: caller})
if err != nil {
return fmt.Errorf("failed to get creator account's state: %v", err.Error())
}
nonce = state.GetNonce() + 1
}

contract, err := types.DecodeAddress(args[1])
if err != nil {
return fmt.Errorf("could not decode contract address: %v", err.Error())
Expand Down Expand Up @@ -310,6 +317,45 @@ func runCallCmd(cmd *cobra.Command, args []string) error {
},
}

return sendCallTx(cmd, tx, caller)
}

func runMulticallCmd(cmd *cobra.Command, args []string) error {
cmd.SilenceUsage = true

caller, err := types.DecodeAddress(args[0])
if err != nil {
return fmt.Errorf("could not decode sender address: %v", err.Error())
}

script := args[1]

tx := &types.Tx{
Body: &types.TxBody{
Nonce: nonce,
Account: caller,
Recipient: []byte{},
Payload: []byte(script),
Amount: big.NewInt(0).Bytes(),
GasLimit: gas,
Type: types.TxType_MULTICALL,
},
}

return sendCallTx(cmd, tx, caller)
}

func sendCallTx(cmd *cobra.Command, tx *types.Tx, sender []byte) error {
var err error

if tx.GetBody().GetNonce() == 0 {
state, err := client.GetState(context.Background(), &types.SingleBytes{Value: sender})
if err != nil {
return fmt.Errorf("failed to get sender account's state: %v", err.Error())
}
tx.GetBody().Nonce = state.GetNonce() + 1
}

if chainIdHash != "" {
rawCidHash, err := base58.Decode(chainIdHash)
if err != nil {
Expand All @@ -330,7 +376,7 @@ func runCallCmd(cmd *cobra.Command, args []string) error {
}

if rootConfig.KeyStorePath != "" {
if errStr := fillSign(tx, rootConfig.KeyStorePath, pw, caller); errStr != "" {
if errStr := fillSign(tx, rootConfig.KeyStorePath, pw, sender); errStr != "" {
return errors.New(errStr)
}
} else {
Expand Down
Loading
Loading