From f39ede9869a47388d3e4c8fa86cb64ed1c21b344 Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Sat, 16 Jan 2021 00:16:42 +0300 Subject: [PATCH] opcode: add CALLT opcode, move ABORT/ASSERT Refs. #1644. Hash compatibility test temporarily disabled, to be enabled when it's up to date with current C# master. --- cli/testdata/chain50x2.acc | Bin 45874 -> 45874 bytes pkg/core/native/compatibility_test.go | 21 +- pkg/core/state/contract_test.go | 4 +- pkg/rpc/server/server_test.go | 6 +- pkg/rpc/server/testdata/testblocks.acc | Bin 7665 -> 7665 bytes pkg/vm/opcode/opcode.go | 5 +- pkg/vm/opcode/opcode_string.go | 272 +++++++++++++------------ 7 files changed, 156 insertions(+), 152 deletions(-) diff --git a/cli/testdata/chain50x2.acc b/cli/testdata/chain50x2.acc index 3c320249034f91fad7254b088a263a702973e234..0cb4f546c0037417ab841efcbd1d2d5b9fa615cd 100644 GIT binary patch literal 45874 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 QBr<~ZDaZnvnqg1&KPfMHA^-pY literal 45874 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 R!x7&&payVOvwwk}?0=SKr=I`- diff --git a/pkg/core/native/compatibility_test.go b/pkg/core/native/compatibility_test.go index 398dc4111..961c7a626 100644 --- a/pkg/core/native/compatibility_test.go +++ b/pkg/core/native/compatibility_test.go @@ -2,18 +2,19 @@ package native import ( "testing" - - "github.com/stretchr/testify/require" + // "github.com/stretchr/testify/require" ) // Compatibility test. hashes are taken directly from C# node. func TestNativeHashes(t *testing.T) { - require.Equal(t, "136ec44854ad9a714901eb7d714714f1791203f2", newDesignate(false).Hash.StringLE()) - require.Equal(t, "a6a6c15dcdc9b997dac448b6926522d22efeedfb", newGAS().Hash.StringLE()) - require.Equal(t, "081514120c7894779309255b7fb18b376cec731a", newManagement().Hash.StringLE()) - require.Equal(t, "0a46e2e37c9987f570b4af253fb77e7eef0f72b6", newNEO().Hash.StringLE()) - // Not yet a part of NEO. - //require.Equal(t, "", newNotary().Hash.StringLE()()) - require.Equal(t, "b1c37d5847c2ae36bdde31d0cc833a7ad9667f8f", newOracle().Hash.StringLE()) - require.Equal(t, "dde31084c0fdbebc7f5ed5f53a38905305ccee14", newPolicy().Hash.StringLE()) + /* + require.Equal(t, "136ec44854ad9a714901eb7d714714f1791203f2", newDesignate(false).Hash.StringLE()) + require.Equal(t, "a6a6c15dcdc9b997dac448b6926522d22efeedfb", newGAS().Hash.StringLE()) + require.Equal(t, "081514120c7894779309255b7fb18b376cec731a", newManagement().Hash.StringLE()) + require.Equal(t, "0a46e2e37c9987f570b4af253fb77e7eef0f72b6", newNEO().Hash.StringLE()) + // Not yet a part of NEO. + //require.Equal(t, "", newNotary().Hash.StringLE()()) + require.Equal(t, "b1c37d5847c2ae36bdde31d0cc833a7ad9667f8f", newOracle().Hash.StringLE()) + require.Equal(t, "dde31084c0fdbebc7f5ed5f53a38905305ccee14", newPolicy().Hash.StringLE()) + */ } diff --git a/pkg/core/state/contract_test.go b/pkg/core/state/contract_test.go index fffebd670..9ea4c627a 100644 --- a/pkg/core/state/contract_test.go +++ b/pkg/core/state/contract_test.go @@ -66,10 +66,10 @@ func TestCreateContractHash(t *testing.T) { var sender util.Uint160 var err error - require.Equal(t, "b4b7417195feca1cdb5a99504ab641d8c220ae99", CreateContractHash(sender, script).StringLE()) + require.Equal(t, "b8e95ff7b11c427c29355e3398722d97bd2ca069", CreateContractHash(sender, script).StringLE()) sender, err = util.Uint160DecodeStringLE("a400ff00ff00ff00ff00ff00ff00ff00ff00ff01") require.NoError(t, err) - require.Equal(t, "e56e4ee87f89a70e9138432c387ad49f2ee5b55f", CreateContractHash(sender, script).StringLE()) + require.Equal(t, "435c467b8e15cb9b1474ad7ee817ffdcfededef9", CreateContractHash(sender, script).StringLE()) } func TestContractFromStackItem(t *testing.T) { diff --git a/pkg/rpc/server/server_test.go b/pkg/rpc/server/server_test.go index 4a532f983..7f3699e61 100644 --- a/pkg/rpc/server/server_test.go +++ b/pkg/rpc/server/server_test.go @@ -56,11 +56,11 @@ type rpcTestCase struct { check func(t *testing.T, e *executor, result interface{}) } -const testContractHash = "743ed26f78e29ecd595535b74a943b1f9ccbc444" -const deploymentTxHash = "2aef5684c6cf60884cc00400b78c65c5105ed4261a4f614bce74c74927a66bf3" +const testContractHash = "0b3bc97e94ed99e32dda46c9ecd2d3626979af06" +const deploymentTxHash = "632b179910b368a34d0b71a1289b24f833186e86ce16b3f805c1ac247a721e16" const genesisBlockHash = "0542f4350c6e236d0509bcd98188b0034bfbecc1a0c7fcdb8e4295310d468b70" -const verifyContractHash = "a2eb22340979804cb10cc1add0b8822c201f4d8a" +const verifyContractHash = "d2da8ee8c0bf6c5bf3dda1ef671dbf5fef7226e9" const verifyContractAVM = "570300412d51083021700c14aa8acf859d4fe402b34e673f2156821796a488ebdb30716813cedb2869db289740" const testVerifyContractAVM = "VwcADBQBDAMOBQYMDQIODw0DDgcJAAAAANswcGgRVUH4J+yMIaonBwAAABFADBQNDwMCCQACAQMHAwQFAgEADgYMCdswcWkRVUH4J+yMIaonBwAAABJAE0A=" diff --git a/pkg/rpc/server/testdata/testblocks.acc b/pkg/rpc/server/testdata/testblocks.acc index 21aa35b50c40d5ef3d4e42450db540b2bf0e697c..f2b90bf165f3d26e5575e29cc249acadfd3322b9 100644 GIT binary patch delta 3237 zcmaKucRbbKAII%`@p0`Hb&ad8%D&dU#YOjKk86gmm5>$LrHhR0xVoZ{6+ek`HH@-H zMsY8RP!t(ATgdvA`h9=@d>@^^&mZS~p0DS5on_QA>eflAt0ZHC(>h1Q48*$LJ$%XT z&E4utTKlx7>R%?U?HC(mrl2pw6P#uSCA724B5r`C_(xtj+%#E8UM&?FHWtLx-<+07 zP?BTtXMCOvJJs+0U=AhbAR9ZW2=8OIFIJQS!m#&Pt8mS1dH`AiLcoAmhG4|-w_VZm z4=+xBf0U-P(3H~gOj*Yp8Z$0;Den_QJ&kNBPN|NFUQ*Gon6-YMU28@q$qWi(@R|_- zdUOnHF5pbF>2Ha0n)H@Lvk$1Q_4$=_2F9tR3Kq>!L)MSX_rYR?*e&U%|z&lp4y6dbD@ z3%pKKv2m?&Ig6TiB4qRZf7aw=`LvGbtvz(GH8xvj#;7otw#&JyUf1w1BN?4OmXzem zeRU^1vY06g?rcZV8dtt#*;QU8N5r4wQDh3ey)X%&FC-t|fA9I)rnc{l+kJDjxrG`w zc0jJ?{0#gIAto=v1-f;_x2HI}uGfvm`KBvmxJusK#50YsLkO8qV0oZFDG8uAbWYg2 z_>12jTFOocl8DxO-@=<> zyAH;a!(_LCU$dG;f$0ub(3tdx+}R+?R5&T!NH_A0cZ|0?d4&Pop*qnfQS$_y=LV!y6=Vvy6o-- zn4OMr+lG(zZJ~$`W)y=j2;}9&etUN@hBp>JTz1U(-Gb_?X0R0T8+;_qips>wxlS^G zuC1t0&h?|c9ptAB6b+}&u)a%)Z95XlMb5wcWQjW*rVY(m9=Ro^7XOTsqi)>8;)D>w z^IZXdleKu}jboTzrDOoje5Q|nhspDbw;-4E3;9mO)&t-ic5La6Y8jI-|A@P z*oEQm6T!B)Lk&3AW6y)$gm9x~P>ThtU z$cEU@dW(2T^e0qyI0Ih2B_}|D%b?gcP+v9wLK=5Qt9;u*TIjU_^gv{N>Dg@$Rk``5 z%`~fvax#eC3%|4*+^D};z)fm`<2pF-*pSFPE25)U5NU60vu zB-z^RhRQL6MyC+o!F<9^YK19DUQ!`zmuGPW@H6bOI-9Z+UaHuK0NN+j_&HoCt~)hx z<4JT;rmNv}k)UA535bUUNVQ0WRVo7hJTr6H4N`rc-Vi6Q&9}yauyLi;BQl zs`~DTzP?5-otIMz{{Uhq?sJ;sSt>(4oT(JrYwU>3=d5oT*I%R9|3Ls@idprJ zt0wjUz8T2dgVKpRebqcRJd%Tz>1jaR1u5C#^j^IehCvYbCb@BaI*ZdhsI2IzLkhD? znjJvXv-kr9*6doh&v1maGW<3sbvTeZIb!rRwXS}@ho3}?E;KFRRBw9ku9AJmf56nk z$xWuHz!~{Tt5SL4lsU(FHCT4 zi?8KDgLPkbJ=?u2x!as89`hbaXcr)iUZ;?R4}j$ITy^+MQ~VU-=H>_d;;9+oqM*}kgzR&rR}gumT4ss3Azizrjp z-$LBwg<$Sg7qm23BJUq*HbXZ+MGUH`)~=qPuUM5Mu6BokXWIG$bHQtc_yJ>o302hB zFL>(>5xu8LVJ)yQHS>L_ah~#l5DUCeg09ZG0{qH~h*8~!%CvJfTcM6-V?ZXK`)15* zyxJGm#@JdJxL(e_ZSxh~DlN)BTXI|0 z#wAMRpT13n_#Wr$x2e*obyNzNq4Ump|{sdslvThp~oo%PiI? zCk+v$X)9{7vjCuVT}7%ITHWs;EIk-E1SC%0A@+{Gu@piVg8M!mZTbuX8=7KB3T?Qp zC$mlV;d}fNGmG16cHv1fXehR;0e4IdcluW2?mAO93;FPE_1*Y&yi@O?0m`bh1C&?HA(3C06 zp|x{KGc&(Ad=rLXL}g})Bel!H0-ky3d$o$HqD<0Xv?WWzp~k=Z34I7ks5bE?SHtyvH4Rf&?Jqv^^Qs`z z&kRmizMxQ%hVN#CvnwvxR_w|07-|oWFeUVFOlUNXulFlh*=A-8ZZqrD0BHBnyjoH2 zn6vlz%<{y#a^P#FORv$#_mrIT0+p}AXoEJ5+C6M^DdNYqFl7Prp)dAz1#hdI#_*er zfVPD(j}r3%^l-VSN4oG~Ru^e5>pxT{&`RD6QkTr0xG0kXuAb=>PslXec{8LS7Y@O&C~8_sA^G*tss| zr+agzU0Anl{BC}8hXrSW;lQTEwy5-~sIN}%^o@I4r)GOp<6M2gT##v)@c{#t-v#ww DhDX-^ delta 3237 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