diff --git a/.gitignore b/.gitignore index 107a3d1451..cba0853bce 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,6 @@ build/CHANGELOG.md plugin/dapp/dex/boss/build/ plugin/dapp/bridgevmxgo/cmd/build/bridgevmxgo/ plugin/dapp/bridgevmxgo/cmd/build/dapptest/ +*.kiro +build/temp/* +go.work* diff --git a/go.mod b/go.mod index 3aef202c5a..2e7eb58b00 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,8 @@ module github.com/33cn/plugin go 1.19 replace ( + github.com/33cn/chain33 => github.com/bysomeone/chain33 v0.0.0-20260401090049-2a05aa3e0b57 github.com/ava-labs/avalanchego => github.com/33cn/avalanchego v1.10.10-0.20240529041529-ada691598153 - github.com/btcsuite/btcd => github.com/btcsuite/btcd v0.22.3 github.com/consensys/gnark-crypto => github.com/consensys/gnark-crypto v0.5.3 ) @@ -13,8 +13,9 @@ require ( github.com/BurntSushi/toml v1.2.1 github.com/NebulousLabs/Sia v1.3.7 github.com/bitly/go-simplejson v0.5.0 - github.com/btcsuite/btcd v0.23.4 - github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 + github.com/btcsuite/btcd v0.24.2 + github.com/btcsuite/btcd/btcec/v2 v2.3.2 + github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 github.com/consensys/gnark v0.5.2 github.com/consensys/gnark-crypto v0.10.0 github.com/coreos/etcd v3.3.15+incompatible @@ -68,10 +69,8 @@ require ( github.com/benbjohnson/immutable v0.2.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect - github.com/btcsuite/btcd/btcutil v1.1.3 // indirect + github.com/btcsuite/btcd/btcutil v1.1.5 // indirect github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f // indirect - github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce // indirect github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd // indirect github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 // indirect github.com/cenkalti/backoff/v4 v4.2.0 // indirect @@ -90,8 +89,8 @@ require ( github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/deckarep/golang-set/v2 v2.1.0 // indirect github.com/decred/base58 v1.0.3 // indirect - github.com/decred/dcrd/crypto/blake256 v1.0.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/decred/dcrd/crypto/blake256 v1.1.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect github.com/dgraph-io/badger v1.6.2 // indirect github.com/dgraph-io/ristretto v0.0.2 // indirect github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 // indirect diff --git a/go.sum b/go.sum index 768c2558ee..e72b925797 100644 --- a/go.sum +++ b/go.sum @@ -52,8 +52,6 @@ dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/33cn/avalanchego v1.10.10-0.20240529041529-ada691598153 h1:fG9c8gQK312kjhHGZhiAp3QTpUU9etMnvIJQtkVcITk= github.com/33cn/avalanchego v1.10.10-0.20240529041529-ada691598153/go.mod h1:SgoXVssKD3a3diOV4qaTkOEQ+2KEfErcdOASIhV6a1s= -github.com/33cn/chain33 v1.69.1-0.20250421040145-1bf4187c5141 h1:uAHCiv/wKCuQpgzwkgv6eer11y8wnLc/pBMVIUeFeQ4= -github.com/33cn/chain33 v1.69.1-0.20250421040145-1bf4187c5141/go.mod h1:Sr0PFcmd96zJcRxKYkgceZZRfFd5CfbdfbfAzghyhB4= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= @@ -201,28 +199,38 @@ github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx2 github.com/bonitoo-io/go-sql-bigquery v0.3.4-1.4.0 h1:MaVh0h9+KaMnJcoDvvIGp+O3fefdWm+8MBUX6ELTJTM= github.com/bonitoo-io/go-sql-bigquery v0.3.4-1.4.0/go.mod h1:J4Y6YJm0qTWB9aFziB7cPeSyc6dOZFyJdteSeybVpXQ= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= -github.com/btcsuite/btcd v0.22.3 h1:kYNaWFvOw6xvqP0vR20RP1Zq1DVMBxEO8QN5d1/EfNg= -github.com/btcsuite/btcd v0.22.3/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= +github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A= +github.com/btcsuite/btcd v0.24.2 h1:aLmxPguqxza+4ag8R1I2nnJjSu2iFn/kqtHTIImswcY= +github.com/btcsuite/btcd v0.24.2/go.mod h1:5C8ChTkl5ejr3WHj8tkQSCmydiMEPB0ZhQhehpq7Dgg= +github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= -github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= -github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= +github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= +github.com/btcsuite/btcd/btcutil v1.1.5 h1:+wER79R5670vs/ZusMTF1yTcRYE5GUsFbdjdisflzM8= +github.com/btcsuite/btcd/btcutil v1.1.5/go.mod h1:PSZZ4UitpLBWzxGd5VGOrLnmOjtPP/a6HaFo12zMs00= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 h1:59Kx4K6lzOW5w6nFlA0v5+lk/6sjybR934QNHSJZPTQ= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f h1:bAs4lUbRJpnnkd9VhRV3jjAVU7DJVjMaK+IsvSeZvFo= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd h1:R/opQEbFEy9JGkIguV40SvRY1uliPX8ifOvi6ICsFCw= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 h1:R8vQdOQdZ9Y3SkEwmHoWBmX1DNXhXZqlTpq6s4tyJGc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/bysomeone/chain33 v0.0.0-20260401090049-2a05aa3e0b57 h1:DMoVKUwJGaXFofsanByNYvWqAPqI10BocO/Lw3eJjHk= +github.com/bysomeone/chain33 v0.0.0-20260401090049-2a05aa3e0b57/go.mod h1:gK8VEZrTlxWBZN2c0hn9YbjX5YHbSoaCULzvSk1Jbq4= github.com/c-bata/go-prompt v0.2.2 h1:uyKRz6Z6DUyj49QVijyM339UJV9yhbr70gESwbNU3e0= github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= github.com/cactus/go-statsd-client/statsd v0.0.0-20191106001114-12b4e2b38748/go.mod h1:l/bIBLeOl9eX+wxJAzxS4TveKRtAqlyDpHjhkfO0MEI= @@ -306,6 +314,7 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -315,11 +324,12 @@ github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6 github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/base58 v1.0.3 h1:KGZuh8d1WEMIrK0leQRM47W85KqCAdl2N+uagbctdDI= github.com/decred/base58 v1.0.3/go.mod h1:pXP9cXCfM2sFLb2viz2FNIdeMWmZDBKG3ZBYbiSM78E= -github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U0x++OzVrdms8= +github.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= github.com/deepmap/oapi-codegen v1.8.2 h1:SegyeYGcdi0jLLrpbCMoJxnUUn8GBXHsvr4rbzjuhfU= @@ -832,6 +842,7 @@ github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPw github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o= github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jinzhu/copier v0.3.6-0.20220210061904-7948fe2be217 h1:Uy9RZ3MW1z8PUZ4NE+bybs4teJbzt62EKZ3/j42jSFw= github.com/jinzhu/copier v0.3.6-0.20220210061904-7948fe2be217/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= @@ -1116,6 +1127,7 @@ github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= @@ -1366,6 +1378,7 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a h1:1ur3QoCqvE5fl+nylMaIr9PVV1w343YRDtsy+Rwu7XI= github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= @@ -1524,6 +1537,7 @@ go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1 golang.org/x/arch v0.0.0-20181203225421-5a4828bb7045/go.mod h1:cYlCBUl1MsqxdiKgmc4uh7TxZfWSFLOGSRR090WDxt8= golang.org/x/arch v0.0.0-20190312162104-788fe5ffcd8c/go.mod h1:flIaEI6LNU6xOCD5PaJvn9wGP0agmIOqjrtsKGRguv4= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180505025534-4ec37c66abab/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1547,7 +1561,6 @@ golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -1653,6 +1666,7 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -1756,9 +1770,11 @@ golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/plugin/consensus/dpos/types/priv_validator.go b/plugin/consensus/dpos/types/priv_validator.go index dfb274991e..133cab4635 100644 --- a/plugin/consensus/dpos/types/priv_validator.go +++ b/plugin/consensus/dpos/types/priv_validator.go @@ -6,7 +6,6 @@ package types import ( "bytes" - "crypto/ecdsa" "encoding/hex" "encoding/json" "errors" @@ -19,7 +18,7 @@ import ( "github.com/33cn/chain33/common/crypto" vrf "github.com/33cn/chain33/common/vrf/secp256k1" "github.com/33cn/chain33/types" - secp256k1 "github.com/btcsuite/btcd/btcec" + secp256k1 "github.com/btcsuite/btcd/btcec/v2" ) // KeyText ... @@ -334,8 +333,8 @@ func (pv *PrivValidatorImp) VrfEvaluate(input []byte) (hash [32]byte, proof []by pv.mtx.Lock() defer pv.mtx.Unlock() - privKey, _ := secp256k1.PrivKeyFromBytes(secp256k1.S256(), pv.PrivKey.Bytes()) - vrfPriv := &vrf.PrivateKey{PrivateKey: (*ecdsa.PrivateKey)(privKey)} + privKey, _ := secp256k1.PrivKeyFromBytes(pv.PrivKey.Bytes()) + vrfPriv := &vrf.PrivateKey{PrivateKey: privKey.ToECDSA()} hash, proof = vrfPriv.Evaluate(input) return hash, proof } @@ -345,11 +344,11 @@ func (pv *PrivValidatorImp) VrfProof(pubkey []byte, input []byte, hash [32]byte, pv.mtx.Lock() defer pv.mtx.Unlock() - pubKey, err := secp256k1.ParsePubKey(pubkey, secp256k1.S256()) + pubKey, err := secp256k1.ParsePubKey(pubkey) if err != nil { return false } - vrfPub := &vrf.PublicKey{PublicKey: (*ecdsa.PublicKey)(pubKey)} + vrfPub := &vrf.PublicKey{PublicKey: pubKey.ToECDSA()} vrfHash, err := vrfPub.ProofToHash(input, proof) if err != nil { return false diff --git a/plugin/consensus/ticket/ticket.go b/plugin/consensus/ticket/ticket.go index 10fbe3e331..6f73f72844 100644 --- a/plugin/consensus/ticket/ticket.go +++ b/plugin/consensus/ticket/ticket.go @@ -6,7 +6,6 @@ package ticket import ( "bytes" - "crypto/ecdsa" "encoding/hex" "errors" "fmt" @@ -30,7 +29,7 @@ import ( cty "github.com/33cn/chain33/system/dapp/coins/types" "github.com/33cn/chain33/types" ty "github.com/33cn/plugin/plugin/dapp/ticket/types" - secp256k1 "github.com/btcsuite/btcd/btcec" + secp256k1 "github.com/btcsuite/btcd/btcec/v2" "github.com/golang/protobuf/proto" ) @@ -423,12 +422,12 @@ func (client *Client) CheckBlock(parent *types.Block, current *types.BlockDetail } func vrfVerify(pub []byte, input []byte, proof []byte, hash []byte) error { - pubKey, err := secp256k1.ParsePubKey(pub, secp256k1.S256()) + pubKey, err := secp256k1.ParsePubKey(pub) if err != nil { tlog.Error("vrfVerify", "err", err) return ty.ErrVrfVerify } - vrfPub := &vrf.PublicKey{PublicKey: (*ecdsa.PublicKey)(pubKey)} + vrfPub := &vrf.PublicKey{PublicKey: pubKey.ToECDSA()} vrfHash, err := vrfPub.ProofToHash(input, proof) if err != nil { tlog.Error("vrfVerify", "err", err) @@ -701,8 +700,8 @@ func (client *Client) addMinerTx(parent, block *types.Block, diff *big.Int, priv if input == nil { input = miner.PrivHash } - privKey, _ := secp256k1.PrivKeyFromBytes(secp256k1.S256(), priv.Bytes()) - vrfPriv := &vrf.PrivateKey{PrivateKey: (*ecdsa.PrivateKey)(privKey)} + privKey, _ := secp256k1.PrivKeyFromBytes(priv.Bytes()) + vrfPriv := &vrf.PrivateKey{PrivateKey: privKey.ToECDSA()} vrfHash, vrfProof := vrfPriv.Evaluate(input) miner.VrfHash = vrfHash[:] miner.VrfProof = vrfProof diff --git a/plugin/consensus/ticket/ticket_test.go b/plugin/consensus/ticket/ticket_test.go index 61d11cff06..62b7220373 100755 --- a/plugin/consensus/ticket/ticket_test.go +++ b/plugin/consensus/ticket/ticket_test.go @@ -5,8 +5,8 @@ package ticket import ( - "crypto/ecdsa" "fmt" + "github.com/btcsuite/btcd/btcec/v2" "testing" "time" @@ -18,7 +18,6 @@ import ( "github.com/33cn/chain33/util" "github.com/33cn/chain33/util/testnode" ty "github.com/33cn/plugin/plugin/dapp/ticket/types" - secp256k1 "github.com/btcsuite/btcd/btcec" "github.com/stretchr/testify/assert" apimocks "github.com/33cn/chain33/client/mocks" @@ -204,8 +203,8 @@ func Test_vrfVerify(t *testing.T) { assert.NoError(t, err) pub := priv.PubKey().Bytes() - privKey, _ := secp256k1.PrivKeyFromBytes(secp256k1.S256(), priv.Bytes()) - vpriv := &vrf.PrivateKey{PrivateKey: (*ecdsa.PrivateKey)(privKey)} + privKey, _ := btcec.PrivKeyFromBytes(priv.Bytes()) + vpriv := &vrf.PrivateKey{PrivateKey: privKey.ToECDSA()} m1 := []byte("data1") m2 := []byte("data2") diff --git a/plugin/dapp/bridgevmxgo/boss4x/chain33/chain33NewOracleClaim.go b/plugin/dapp/bridgevmxgo/boss4x/chain33/chain33NewOracleClaim.go index b6dda4cd31..1aabcad8c5 100644 --- a/plugin/dapp/bridgevmxgo/boss4x/chain33/chain33NewOracleClaim.go +++ b/plugin/dapp/bridgevmxgo/boss4x/chain33/chain33NewOracleClaim.go @@ -20,7 +20,7 @@ import ( "github.com/33cn/plugin/plugin/dapp/cross2eth/ebrelayer/utils" evmAbi "github.com/33cn/plugin/plugin/dapp/evm/executor/abi" evmtypes "github.com/33cn/plugin/plugin/dapp/evm/types" - btcec_secp256k1 "github.com/btcsuite/btcd/btcec" + btcec_secp256k1 "github.com/btcsuite/btcd/btcec/v2" "github.com/ethereum/go-ethereum/crypto" "github.com/golang/protobuf/proto" "github.com/spf13/cobra" @@ -80,7 +80,7 @@ func NewOracleClaim(cmd *cobra.Command, args []string) { return } - temp, _ := btcec_secp256k1.PrivKeyFromBytes(btcec_secp256k1.S256(), privateKey.Bytes()) + temp, _ := btcec_secp256k1.PrivKeyFromBytes(privateKey.Bytes()) privatekey4chain33Ecdsa := temp.ToECDSA() nonceBytes := big.NewInt(nonce).Bytes() diff --git a/plugin/dapp/bridgevmxgo/boss4x/chain33/offline/multisignTransfer.go b/plugin/dapp/bridgevmxgo/boss4x/chain33/offline/multisignTransfer.go index e8bba73d6d..856447ca21 100644 --- a/plugin/dapp/bridgevmxgo/boss4x/chain33/offline/multisignTransfer.go +++ b/plugin/dapp/bridgevmxgo/boss4x/chain33/offline/multisignTransfer.go @@ -16,7 +16,7 @@ import ( relayerutils "github.com/33cn/plugin/plugin/dapp/cross2eth/ebrelayer/utils" evmAbi "github.com/33cn/plugin/plugin/dapp/evm/executor/abi" "github.com/33cn/plugin/plugin/dapp/evm/executor/vm/common/math" - btcecsecp256k1 "github.com/btcsuite/btcd/btcec" + btcecsecp256k1 "github.com/btcsuite/btcd/btcec/v2" ethSecp256k1 "github.com/ethereum/go-ethereum/crypto/secp256k1" "github.com/spf13/cobra" ) @@ -179,7 +179,7 @@ func MultisignTransfer(cmd *cobra.Command, _ []string) { fmt.Println("evmAbi.Pack(parameter, erc20.ERC20ABI, false)", "Failed", err.Error()) return } - temp, _ := btcecsecp256k1.PrivKeyFromBytes(btcecsecp256k1.S256(), ownerPrivateKey.Bytes()) + temp, _ := btcecsecp256k1.PrivKeyFromBytes(ownerPrivateKey.Bytes()) privateKey4chain33Ecdsa := temp.ToECDSA() sig, err := ethSecp256k1.Sign(contentHash, math.PaddedBigBytes(privateKey4chain33Ecdsa.D, 32)) diff --git a/plugin/dapp/cross2eth/boss4x/chain33/offline/multisignTransfer.go b/plugin/dapp/cross2eth/boss4x/chain33/offline/multisignTransfer.go index 67a01d329e..fc697527db 100644 --- a/plugin/dapp/cross2eth/boss4x/chain33/offline/multisignTransfer.go +++ b/plugin/dapp/cross2eth/boss4x/chain33/offline/multisignTransfer.go @@ -14,7 +14,7 @@ import ( relayerutils "github.com/33cn/plugin/plugin/dapp/cross2eth/ebrelayer/utils" evmAbi "github.com/33cn/plugin/plugin/dapp/evm/executor/abi" "github.com/33cn/plugin/plugin/dapp/evm/executor/vm/common/math" - btcecsecp256k1 "github.com/btcsuite/btcd/btcec" + btcecsecp256k1 "github.com/btcsuite/btcd/btcec/v2" ethSecp256k1 "github.com/ethereum/go-ethereum/crypto/secp256k1" "github.com/spf13/cobra" ) @@ -177,7 +177,7 @@ func MultisignTransfer(cmd *cobra.Command, _ []string) { fmt.Println("evmAbi.Pack(parameter, erc20.ERC20ABI, false)", "Failed", err.Error()) return } - temp, _ := btcecsecp256k1.PrivKeyFromBytes(btcecsecp256k1.S256(), ownerPrivateKey.Bytes()) + temp, _ := btcecsecp256k1.PrivKeyFromBytes(ownerPrivateKey.Bytes()) privateKey4chain33Ecdsa := temp.ToECDSA() sig, err := ethSecp256k1.Sign(contentHash, math.PaddedBigBytes(privateKey4chain33Ecdsa.D, 32)) diff --git a/plugin/dapp/cross2eth/boss4x/keyManager.go b/plugin/dapp/cross2eth/boss4x/keyManager.go index 77a0dcec2c..a3f876f76c 100644 --- a/plugin/dapp/cross2eth/boss4x/keyManager.go +++ b/plugin/dapp/cross2eth/boss4x/keyManager.go @@ -12,7 +12,7 @@ import ( "github.com/ethereum/go-ethereum/crypto" chain33Common "github.com/33cn/chain33/common" - "github.com/btcsuite/btcd/btcec" + "github.com/btcsuite/btcd/btcec/v2" "github.com/ethereum/go-ethereum/common" "github.com/spf13/cobra" ) @@ -53,7 +53,7 @@ func generareChain33KeyCmd() *cobra.Command { func generareChain33Key(cmd *cobra.Command, _ []string) { - privateKey, err := btcec.NewPrivateKey(btcec.S256()) + privateKey, err := btcec.NewPrivateKey() if nil != err { fmt.Println("Failed to generate private key for chain33" + err.Error()) return @@ -84,7 +84,7 @@ func showChain33Key(cmd *cobra.Command, _ []string) { fmt.Println("invalid priv key length", len(privateKeySlice)) return } - _, pubKey := btcec.PrivKeyFromBytes(btcec.S256(), privateKeySlice) + _, pubKey := btcec.PrivKeyFromBytes(privateKeySlice) uncompressedKey := pubKey.SerializeUncompressed() uncompressedKey = uncompressedKey[1:] @@ -143,7 +143,7 @@ func showEtheremKey(cmd *cobra.Command, _ []string) { return } - _, pubKey := btcec.PrivKeyFromBytes(crypto.S256(), privateKeySlice) + _, pubKey := btcec.PrivKeyFromBytes(privateKeySlice) uncompressedKey := pubKey.SerializeUncompressed() uncompressedKey = uncompressedKey[1:] compressedKey := pubKey.SerializeCompressed() diff --git a/plugin/dapp/cross2eth/boss4x/sm2.go b/plugin/dapp/cross2eth/boss4x/sm2.go index d1a242e1e0..d3f849108d 100644 --- a/plugin/dapp/cross2eth/boss4x/sm2.go +++ b/plugin/dapp/cross2eth/boss4x/sm2.go @@ -4,8 +4,7 @@ import ( "fmt" "math/big" - "github.com/btcsuite/btcd/btcec" - "github.com/ethereum/go-ethereum/crypto" + "github.com/btcsuite/btcd/btcec/v2" chain33Common "github.com/33cn/chain33/common" "github.com/33cn/chain33/system/crypto/sm2" @@ -213,7 +212,7 @@ func encryptWithSm2(cmd *cobra.Command, args []string) { sm4Key = sm4Key[1:] //第三步,计算secp256k1对应的公钥,非压缩 - _, pubKey := btcec.PrivKeyFromBytes(crypto.S256(), privateKeySlice) + _, pubKey := btcec.PrivKeyFromBytes(privateKeySlice) uncompressedKey := pubKey.SerializeUncompressed() uncompressedKey = uncompressedKey[1:] diff --git a/plugin/dapp/cross2eth/ebrelayer/relayer/chain33/account.go b/plugin/dapp/cross2eth/ebrelayer/relayer/chain33/account.go index 4e6bf348b9..cfc9122eb2 100644 --- a/plugin/dapp/cross2eth/ebrelayer/relayer/chain33/account.go +++ b/plugin/dapp/cross2eth/ebrelayer/relayer/chain33/account.go @@ -10,7 +10,7 @@ import ( chain33Types "github.com/33cn/chain33/types" wcom "github.com/33cn/chain33/wallet/common" x2ethTypes "github.com/33cn/plugin/plugin/dapp/cross2eth/ebrelayer/types" - btcec_secp256k1 "github.com/btcsuite/btcd/btcec" + btcec_secp256k1 "github.com/btcsuite/btcd/btcec/v2" "github.com/ethereum/go-ethereum/crypto" ) @@ -64,7 +64,7 @@ func (chain33Relayer *Relayer4Chain33) ImportPrivateKey(passphrase, privateKeySt chain33Relayer.rwLock.Lock() chain33Relayer.privateKey4Chain33 = priKey - temp, _ := btcec_secp256k1.PrivKeyFromBytes(btcec_secp256k1.S256(), priKey.Bytes()) + temp, _ := btcec_secp256k1.PrivKeyFromBytes(priKey.Bytes()) chain33Relayer.privateKey4Chain33_ecdsa = temp.ToECDSA() chain33Relayer.rwLock.Unlock() chain33Relayer.unlockChan <- start diff --git a/plugin/dapp/cross2eth/ebrelayer/relayer/chain33/tx.go b/plugin/dapp/cross2eth/ebrelayer/relayer/chain33/tx.go index b71a16c327..9e7b9154f5 100644 --- a/plugin/dapp/cross2eth/ebrelayer/relayer/chain33/tx.go +++ b/plugin/dapp/cross2eth/ebrelayer/relayer/chain33/tx.go @@ -14,7 +14,7 @@ import ( "github.com/33cn/plugin/plugin/dapp/cross2eth/ebrelayer/relayer/events" erc20 "github.com/33cn/plugin/plugin/dapp/cross2eth/contracts/erc20/generated" - btcec_secp256k1 "github.com/btcsuite/btcd/btcec" + btcec_secp256k1 "github.com/btcsuite/btcd/btcec/v2" "github.com/33cn/plugin/plugin/dapp/cross2eth/ebrelayer/utils" @@ -520,7 +520,7 @@ func safeTransfer(ownerPrivateKeyStr, mulSign, chainName, rpcURL, receiver, toke if nil != err { return "", err } - temp, _ := btcec_secp256k1.PrivKeyFromBytes(btcec_secp256k1.S256(), ownerPrivateKey.Bytes()) + temp, _ := btcec_secp256k1.PrivKeyFromBytes(ownerPrivateKey.Bytes()) privateKey4Chain33_ecdsa := temp.ToECDSA() sig, err := ethSecp256k1.Sign(contentHash, math.PaddedBigBytes(privateKey4Chain33_ecdsa.D, 32)) diff --git a/plugin/dapp/dposvote/commands/vote.go b/plugin/dapp/dposvote/commands/vote.go index fe6a8c2be0..e898db672e 100644 --- a/plugin/dapp/dposvote/commands/vote.go +++ b/plugin/dapp/dposvote/commands/vote.go @@ -6,7 +6,7 @@ package commands import ( "bytes" - "crypto/ecdsa" + "encoding/hex" "encoding/json" "fmt" @@ -23,7 +23,7 @@ import ( "github.com/33cn/chain33/types" ttypes "github.com/33cn/plugin/plugin/consensus/dpos/types" dty "github.com/33cn/plugin/plugin/dapp/dposvote/types" - secp256k1 "github.com/btcsuite/btcd/btcec" + secp256k1 "github.com/btcsuite/btcd/btcec/v2" "github.com/spf13/cobra" ) @@ -720,12 +720,12 @@ func verify(cmd *cobra.Command, args []string) { return } - pubKey, err := secp256k1.ParsePubKey(bKey, secp256k1.S256()) + pubKey, err := secp256k1.ParsePubKey(bKey) if err != nil { fmt.Println("vrf Verify failed: ", err) return } - vrfPub := &vrf.PublicKey{PublicKey: (*ecdsa.PublicKey)(pubKey)} + vrfPub := &vrf.PublicKey{PublicKey: pubKey.ToECDSA()} vrfHash, err := vrfPub.ProofToHash(m, p) if err != nil { fmt.Println("vrf Verify failed: ", err) @@ -782,8 +782,8 @@ func evaluate(cmd *cobra.Command, args []string) { return } - privKey, _ := secp256k1.PrivKeyFromBytes(secp256k1.S256(), bKey) - vrfPriv := &vrf.PrivateKey{PrivateKey: (*ecdsa.PrivateKey)(privKey)} + privKey, _ := secp256k1.PrivKeyFromBytes(bKey) + vrfPriv := &vrf.PrivateKey{PrivateKey: privKey.ToECDSA()} vrfHash, vrfProof := vrfPriv.Evaluate(m) fmt.Println("vrf evaluate:") fmt.Println("input:", data) diff --git a/plugin/dapp/evm/executor/vm/common/crypto/crypto.go b/plugin/dapp/evm/executor/vm/common/crypto/crypto.go index 82646653a8..af24e11dca 100644 --- a/plugin/dapp/evm/executor/vm/common/crypto/crypto.go +++ b/plugin/dapp/evm/executor/vm/common/crypto/crypto.go @@ -6,12 +6,13 @@ package crypto import ( "crypto/ecdsa" + "math/big" ethCrypto "github.com/ethereum/go-ethereum/crypto" "github.com/33cn/plugin/plugin/dapp/evm/executor/vm/common" - "github.com/btcsuite/btcd/btcec" + ecdsa2 "github.com/btcsuite/btcd/btcec/v2/ecdsa" "golang.org/x/crypto/sha3" ) @@ -43,8 +44,8 @@ func SigToPub(hash, sig []byte) (*ecdsa.PublicKey, error) { btcsig[0] = sig[64] + 27 copy(btcsig[1:], sig) - pub, _, err := btcec.RecoverCompact(btcec.S256(), btcsig, hash) - return (*ecdsa.PublicKey)(pub), err + pub, _, err := ecdsa2.RecoverCompact(btcsig, hash) + return pub.ToECDSA(), err } // Keccak256 计算并返回 Keccak256 哈希 diff --git a/plugin/dapp/evm/executor/vm/runtime/log_address_integration_test.go b/plugin/dapp/evm/executor/vm/runtime/log_address_integration_test.go new file mode 100644 index 0000000000..63e6a50f34 --- /dev/null +++ b/plugin/dapp/evm/executor/vm/runtime/log_address_integration_test.go @@ -0,0 +1,101 @@ +package runtime + +import ( + "bytes" + "math/big" + "testing" + + apimock "github.com/33cn/chain33/client/mocks" + ctypes "github.com/33cn/chain33/types" + "github.com/33cn/chain33/util" + vmcommon "github.com/33cn/plugin/plugin/dapp/evm/executor/vm/common" + "github.com/33cn/plugin/plugin/dapp/evm/executor/vm/state" + evmtypes "github.com/33cn/plugin/plugin/dapp/evm/types" + "github.com/stretchr/testify/require" +) + +func TestCallContractEmitsLogWithCalleeAddress(t *testing.T) { + cfg := ctypes.NewChain33Config(ctypes.GetDefaultCfgstring()) + api := new(apimock.QueueProtocolAPI) + api.On("GetConfig").Return(cfg) + + dbDir, stateDB, localDB := util.CreateTestDB() + defer util.CloseTestDB(dbDir, stateDB) + + // Use a height above ForkEVMState so TyLogEVMEventData is exported from snapshots. + const blockHeight = int64(700000) + mdb := state.NewMemoryStateDB(stateDB, localDB, nil, blockHeight, api) + txHash := vmcommon.BytesToHash([]byte("tx-a-call-b-log")) + mdb.Prepare(txHash, 0) + + callerAddr := vmcommon.BytesToAddress([]byte{0x01}) + contractA := vmcommon.BytesToAddress([]byte{0xa1}) + contractB := vmcommon.BytesToAddress([]byte{0xb1}) + logTopic := vmcommon.BytesToHash([]byte("callee-b-topic")) + + mdb.CreateAccount(contractA.String(), callerAddr.String(), "evm.A", "A") + mdb.CreateAccount(contractB.String(), callerAddr.String(), "evm.B", "B") + mdb.SetCode(contractA.String(), buildCallCode(contractB)) + mdb.SetCode(contractB.String(), buildEmitLogCode(logTopic)) + + evm := NewEVM(Context{ + CanTransfer: func(state.EVMStateDB, vmcommon.Address, uint64) bool { return true }, + Transfer: func(state.EVMStateDB, vmcommon.Address, vmcommon.Address, uint64) bool { return true }, + GetHash: func(uint64) vmcommon.Hash { return vmcommon.Hash{} }, + BlockNumber: big.NewInt(blockHeight), + }, mdb, Config{}, cfg) + + var err error + _, _, _, err = evm.Call(AccountRef(callerAddr), contractA, nil, 5_000_000, 0) + require.NoError(t, err) + + ver := mdb.GetLastSnapshot() + require.NotNil(t, ver) + _, logs := mdb.GetChangedData(ver.GetID()) + + found := false + for _, lg := range logs { + if lg.Ty != evmtypes.TyLogEVMEventData { + continue + } + var evmLog ctypes.EVMLog + err = ctypes.Decode(lg.Log, &evmLog) + require.NoError(t, err) + + if len(evmLog.GetTopic()) == 1 && bytes.Equal(evmLog.GetTopic()[0], logTopic.Bytes()) { + found = true + require.Equal(t, contractB.String(), evmLog.GetAddress()) + } + } + require.True(t, found, "expected at least one event log emitted by contract B") +} + +func buildCallCode(callee vmcommon.Address) []byte { + code := []byte{ + 0x60, 0x00, // retSize + 0x60, 0x00, // retOffset + 0x60, 0x00, // inSize + 0x60, 0x00, // inOffset + 0x60, 0x00, // value + 0x73, // PUSH20 + } + code = append(code, callee.Bytes()...) + code = append(code, + 0x61, 0xff, 0xff, // gas + 0xf1, // CALL + 0x00, // STOP + ) + return code +} + +func buildEmitLogCode(topic vmcommon.Hash) []byte { + code := []byte{0x7f} // PUSH32 + code = append(code, topic.Bytes()...) + code = append(code, + 0x60, 0x00, // mSize + 0x60, 0x00, // mStart + 0xa1, // LOG1 + 0x00, // STOP + ) + return code +} diff --git a/plugin/dapp/evm/executor/vm/state/statedb.go b/plugin/dapp/evm/executor/vm/state/statedb.go index 34efd03476..d2907c5765 100644 --- a/plugin/dapp/evm/executor/vm/state/statedb.go +++ b/plugin/dapp/evm/executor/vm/state/statedb.go @@ -685,10 +685,13 @@ func (mdb *MemoryStateDB) mergeResult(one, two *types.Receipt) (ret *types.Recei // 生成对应的日志信息,目前这些生成的日志信息会在合约执行后打印到日志文件中 func (mdb *MemoryStateDB) AddLog(log *model.ContractLog) { newEvmLog := &types.EVMLog{ - Topic: [][]byte{log.Topics[0].Bytes()}, - Data: log.Data, + Data: log.Data, + Address: log.Address.String(), } + logTopic := "" if len(log.Topics) > 0 { + logTopic = log.Topics[0].Hex() + newEvmLog.Topic = append(newEvmLog.Topic, log.Topics[0].Bytes()) for i := 1; i < len(log.Topics); i++ { newEvmLog.Topic = append(newEvmLog.Topic, log.Topics[i].Bytes()) } @@ -707,7 +710,7 @@ func (mdb *MemoryStateDB) AddLog(log *model.ContractLog) { mdb.logs[mdb.txHash] = append(mdb.logs[mdb.txHash], log) mdb.logSize++ log15.Info("MemoryStateDB::AddLog", "txhash", mdb.txHash.Hex(), "blockHeight", mdb.blockHeight, "txIndex", mdb.txIndex, - "mdb.logSize", mdb.logSize, "topic", log.Topics[0].Hex()) + "mdb.logSize", mdb.logSize, "topic", logTopic) } // AddPreimage 存储sha3指令对应的数据 diff --git a/plugin/dapp/evm/executor/vm/state/statedb_test.go b/plugin/dapp/evm/executor/vm/state/statedb_test.go new file mode 100644 index 0000000000..b7b377d71e --- /dev/null +++ b/plugin/dapp/evm/executor/vm/state/statedb_test.go @@ -0,0 +1,96 @@ +package state + +import ( + "testing" + + ctypes "github.com/33cn/chain33/types" + "github.com/33cn/plugin/plugin/dapp/evm/executor/vm/common" + "github.com/33cn/plugin/plugin/dapp/evm/executor/vm/model" +) + +func TestMemoryStateDBAddLogStoresAddressAndDefaultsRemoved(t *testing.T) { + txHash := common.BytesToHash([]byte("tx-log-address")) + contractAddr := common.BytesToAddress([]byte{0x11, 0x22, 0x33}) + topic := common.BytesToHash([]byte{0xaa}) + + mdb := &MemoryStateDB{ + logs: make(map[common.Hash][]*model.ContractLog), + txHash: txHash, + } + mdb.currentVer = &Snapshot{id: 1, statedb: mdb} + + mdb.AddLog(&model.ContractLog{ + Address: contractAddr, + Topics: []common.Hash{topic}, + Data: []byte{0x01, 0x02}, + }) + + if got := len(mdb.logs[txHash]); got != 1 { + t.Fatalf("expected one in-memory contract log, got %d", got) + } + if mdb.logSize != 1 { + t.Fatalf("expected logSize to be 1, got %d", mdb.logSize) + } + if got := len(mdb.currentVer.entries); got != 1 { + t.Fatalf("expected one snapshot entry, got %d", got) + } + + change, ok := mdb.currentVer.entries[0].(addLogChange) + if !ok { + t.Fatalf("expected snapshot entry type addLogChange, got %T", mdb.currentVer.entries[0]) + } + if len(change.logs) != 1 { + t.Fatalf("expected one receipt log in addLogChange, got %d", len(change.logs)) + } + + var evmLog ctypes.EVMLog + if err := ctypes.Decode(change.logs[0].Log, &evmLog); err != nil { + t.Fatalf("decode evm log failed: %v", err) + } + + if evmLog.GetAddress() != contractAddr.String() { + t.Fatalf("expected address %s, got %s", contractAddr.String(), evmLog.GetAddress()) + } + if evmLog.GetRemoved() { + t.Fatalf("expected removed default false, got true") + } + if len(evmLog.GetTopic()) != 1 { + t.Fatalf("expected one topic, got %d", len(evmLog.GetTopic())) + } +} + +func TestMemoryStateDBAddLogWithNoTopics(t *testing.T) { + txHash := common.BytesToHash([]byte("tx-log-no-topic")) + contractAddr := common.BytesToAddress([]byte{0x44, 0x55, 0x66}) + + mdb := &MemoryStateDB{ + logs: make(map[common.Hash][]*model.ContractLog), + txHash: txHash, + } + mdb.currentVer = &Snapshot{id: 1, statedb: mdb} + + mdb.AddLog(&model.ContractLog{ + Address: contractAddr, + Data: []byte{0x09}, + }) + + if got := len(mdb.currentVer.entries); got != 1 { + t.Fatalf("expected one snapshot entry, got %d", got) + } + change, ok := mdb.currentVer.entries[0].(addLogChange) + if !ok { + t.Fatalf("expected snapshot entry type addLogChange, got %T", mdb.currentVer.entries[0]) + } + + var evmLog ctypes.EVMLog + if err := ctypes.Decode(change.logs[0].Log, &evmLog); err != nil { + t.Fatalf("decode evm log failed: %v", err) + } + + if len(evmLog.GetTopic()) != 0 { + t.Fatalf("expected zero topics for LOG0-style event, got %d", len(evmLog.GetTopic())) + } + if evmLog.GetAddress() != contractAddr.String() { + t.Fatalf("expected address %s, got %s", contractAddr.String(), evmLog.GetAddress()) + } +}