Giter VIP home page Giter VIP logo

go-evm's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

go-evm's Issues

Retrieve smart contract's variables

We can get storage by ForEachStorage, but all the keys are encrypted in cipher. so this issue aims to design a method as below:

func (db *StateDB) GetVariables(arg abi.Argument) ([]byte, err) 

abi as github.com/ethereum/go-ethereum/accounts/abi. There is an expensive method to meet this demand via getter method provided by EVM.

Can we get it from MPT tree directly?

Got evm: execution reverted

&vm.Contract{CallerAddress:[0 0 0 0 0 0 0 0 0 0 0 0 100 117 97 110 98 105 110 103], caller:vm.AccountRef{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x75, 0x61, 0x6e, 0x62, 0x69, 0x6e, 0x67}, self:vm.AccountRef{0x9f, 0x20, 0xca, 0xc3, 0x8e, 0xbe, 0xf9, 0x6f, 0x12, 0xd0, 0x5a, 0xd0, 0xcb, 0x13, 0xd, 0x60, 0x31, 0xe5, 0xcc, 0xc3}, jumpdests:vm.destinations{}, Code:[]uint8{0x60, 0x60, 0x60, 0x40, 0x52, 0x34, 0x15, 0x61, 0x0, 0xf, 0x57, 0x60, 0x0, 0x80, 0xfd, 0x5b, 0x60, 0xb1, 0x80, 0x61, 0x0, 0x1d, 0x60, 0x0, 0x39, 0x60, 0x0, 0xf3, 0x0, 0x60, 0x60, 0x60, 0x40, 0x52, 0x60, 0x4, 0x36, 0x10, 0x60, 0x3f, 0x57, 0x60, 0x0, 0x35, 0x7c, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90, 0x4, 0x63, 0xff, 0xff, 0xff, 0xff, 0x16, 0x80, 0x63, 0xc6, 0x88, 0x8f, 0xa1, 0x14, 0x60, 0x44, 0x57, 0x5b, 0x60, 0x0, 0x80, 0xfd, 0x5b, 0x34, 0x15, 0x60, 0x4e, 0x57, 0x60, 0x0, 0x80, 0xfd, 0x5b, 0x60, 0x62, 0x60, 0x4, 0x80, 0x80, 0x35, 0x90, 0x60, 0x20, 0x1, 0x90, 0x91, 0x90, 0x50, 0x50, 0x60, 0x78, 0x56, 0x5b, 0x60, 0x40, 0x51, 0x80, 0x82, 0x81, 0x52, 0x60, 0x20, 0x1, 0x91, 0x50, 0x50, 0x60, 0x40, 0x51, 0x80, 0x91, 0x3, 0x90, 0xf3, 0x5b, 0x60, 0x0, 0x60, 0x7, 0x82, 0x2, 0x90, 0x50, 0x91, 0x90, 0x50, 0x56, 0x0, 0xa1, 0x65, 0x62, 0x7a, 0x7a, 0x72, 0x30, 0x58, 0x20, 0xc4, 0xac, 0x95, 0xa, 0x92, 0xca, 0xa9, 0x94, 0x4a, 0x7e, 0x7, 0xe0, 0x30, 0x54, 0x2e, 0x9e, 0xd7, 0xdb, 0x92, 0x63, 0x1a, 0xdc, 0xc2, 0x34, 0xd8, 0x6a, 0x10, 0x5c, 0x85, 0x3b, 0x81, 0xa2, 0x0, 0x29}, CodeHash:[42 24 57 106 249 64 22 41 247 118 142 36 252 51 115 12 253 158 1 204 78 173 219 202 138 81 21 196 39 72 138 125], CodeAddr:[159 32 202 195 142 190 249 111 18 208 90 208 203 19 13 96 49 229 204 195], Input:[]uint8(nil), Gas:0x1da018, value:(*big.Int)(0xc4201359e0), Args:[]uint8(nil), DelegateCall:false}
get code [0] from [96 96 96 64 82 52 21 97 0 15 87 96 0 128 253 91 96 177 128 97 0 29 96 0 57 96 0 243 0 96 96 96 64 82 96 4 54 16 96 63 87 96 0 53 124 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144 4 99 255 255 255 255 22 128 99 198 136 143 161 20 96 68 87 91 96 0 128 253 91 52 21 96 78 87 96 0 128 253 91 96 98 96 4 128 128 53 144 96 32 1 144 145 144 80 80 96 120 86 91 96 64 81 128 130 129 82 96 32 1 145 80 80 96 64 81 128 145 3 144 243 91 96 0 96 7 130 2 144 80 145 144 80 86 0 161 101 98 122 122 114 48 88 32 196 172 149 10 146 202 169 148 74 126 7 224 48 84 46 158 215 219 146 99 26 220 194 52 216 106 16 92 133 59 129 162 0 41]
operation=96,pc=0, vm.operation{execute:(vm.executionFunc)(0x425d9b0), gasCost:(vm.gasFunc)(0x42489d0), validateStack:(vm.stackValidationFunc)(0x425e310), memorySize:(vm.memorySizeFunc)(nil), halts:false, jumps:false, writes:false, valid:true, reverts:false, returns:false}
get code [2] from [96 96 96 64 82 52 21 97 0 15 87 96 0 128 253 91 96 177 128 97 0 29 96 0 57 96 0 243 0 96 96 96 64 82 96 4 54 16 96 63 87 96 0 53 124 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144 4 99 255 255 255 255 22 128 99 198 136 143 161 20 96 68 87 91 96 0 128 253 91 52 21 96 78 87 96 0 128 253 91 96 98 96 4 128 128 53 144 96 32 1 144 145 144 80 80 96 120 86 91 96 64 81 128 130 129 82 96 32 1 145 80 80 96 64 81 128 145 3 144 243 91 96 0 96 7 130 2 144 80 145 144 80 86 0 161 101 98 122 122 114 48 88 32 196 172 149 10 146 202 169 148 74 126 7 224 48 84 46 158 215 219 146 99 26 220 194 52 216 106 16 92 133 59 129 162 0 41]
operation=96,pc=2, vm.operation{execute:(vm.executionFunc)(0x425d9b0), gasCost:(vm.gasFunc)(0x42489d0), validateStack:(vm.stackValidationFunc)(0x425e310), memorySize:(vm.memorySizeFunc)(nil), halts:false, jumps:false, writes:false, valid:true, reverts:false, returns:false}
get code [4] from [96 96 96 64 82 52 21 97 0 15 87 96 0 128 253 91 96 177 128 97 0 29 96 0 57 96 0 243 0 96 96 96 64 82 96 4 54 16 96 63 87 96 0 53 124 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144 4 99 255 255 255 255 22 128 99 198 136 143 161 20 96 68 87 91 96 0 128 253 91 52 21 96 78 87 96 0 128 253 91 96 98 96 4 128 128 53 144 96 32 1 144 145 144 80 80 96 120 86 91 96 64 81 128 130 129 82 96 32 1 145 80 80 96 64 81 128 145 3 144 243 91 96 0 96 7 130 2 144 80 145 144 80 86 0 161 101 98 122 122 114 48 88 32 196 172 149 10 146 202 169 148 74 126 7 224 48 84 46 158 215 219 146 99 26 220 194 52 216 106 16 92 133 59 129 162 0 41]
operation=82,pc=4, vm.operation{execute:(vm.executionFunc)(0x42511c0), gasCost:(vm.gasFunc)(0x4247120), validateStack:(vm.stackValidationFunc)(0x425e310), memorySize:(vm.memorySizeFunc)(0x425c530), halts:false, jumps:false, writes:false, valid:true, reverts:false, returns:false}
get code [5] from [96 96 96 64 82 52 21 97 0 15 87 96 0 128 253 91 96 177 128 97 0 29 96 0 57 96 0 243 0 96 96 96 64 82 96 4 54 16 96 63 87 96 0 53 124 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144 4 99 255 255 255 255 22 128 99 198 136 143 161 20 96 68 87 91 96 0 128 253 91 52 21 96 78 87 96 0 128 253 91 96 98 96 4 128 128 53 144 96 32 1 144 145 144 80 80 96 120 86 91 96 64 81 128 130 129 82 96 32 1 145 80 80 96 64 81 128 145 3 144 243 91 96 0 96 7 130 2 144 80 145 144 80 86 0 161 101 98 122 122 114 48 88 32 196 172 149 10 146 202 169 148 74 126 7 224 48 84 46 158 215 219 146 99 26 220 194 52 216 106 16 92 133 59 129 162 0 41]
operation=52,pc=5, vm.operation{execute:(vm.executionFunc)(0x424e260), gasCost:(vm.gasFunc)(0x425d160), validateStack:(vm.stackValidationFunc)(0x425e310), memorySize:(vm.memorySizeFunc)(nil), halts:false, jumps:false, writes:false, valid:true, reverts:false, returns:false}
get code [6] from [96 96 96 64 82 52 21 97 0 15 87 96 0 128 253 91 96 177 128 97 0 29 96 0 57 96 0 243 0 96 96 96 64 82 96 4 54 16 96 63 87 96 0 53 124 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144 4 99 255 255 255 255 22 128 99 198 136 143 161 20 96 68 87 91 96 0 128 253 91 52 21 96 78 87 96 0 128 253 91 96 98 96 4 128 128 53 144 96 32 1 144 145 144 80 80 96 120 86 91 96 64 81 128 130 129 82 96 32 1 145 80 80 96 64 81 128 145 3 144 243 91 96 0 96 7 130 2 144 80 145 144 80 86 0 161 101 98 122 122 114 48 88 32 196 172 149 10 146 202 169 148 74 126 7 224 48 84 46 158 215 219 146 99 26 220 194 52 216 106 16 92 133 59 129 162 0 41]
operation=21,pc=6, vm.operation{execute:(vm.executionFunc)(0x424c130), gasCost:(vm.gasFunc)(0x425d160), validateStack:(vm.stackValidationFunc)(0x425e310), memorySize:(vm.memorySizeFunc)(nil), halts:false, jumps:false, writes:false, valid:true, reverts:false, returns:false}
get code [7] from [96 96 96 64 82 52 21 97 0 15 87 96 0 128 253 91 96 177 128 97 0 29 96 0 57 96 0 243 0 96 96 96 64 82 96 4 54 16 96 63 87 96 0 53 124 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144 4 99 255 255 255 255 22 128 99 198 136 143 161 20 96 68 87 91 96 0 128 253 91 52 21 96 78 87 96 0 128 253 91 96 98 96 4 128 128 53 144 96 32 1 144 145 144 80 80 96 120 86 91 96 64 81 128 130 129 82 96 32 1 145 80 80 96 64 81 128 145 3 144 243 91 96 0 96 7 130 2 144 80 145 144 80 86 0 161 101 98 122 122 114 48 88 32 196 172 149 10 146 202 169 148 74 126 7 224 48 84 46 158 215 219 146 99 26 220 194 52 216 106 16 92 133 59 129 162 0 41]
operation=97,pc=7, vm.operation{execute:(vm.executionFunc)(0x425d9b0), gasCost:(vm.gasFunc)(0x42489d0), validateStack:(vm.stackValidationFunc)(0x425e310), memorySize:(vm.memorySizeFunc)(nil), halts:false, jumps:false, writes:false, valid:true, reverts:false, returns:false}
get code [10] from [96 96 96 64 82 52 21 97 0 15 87 96 0 128 253 91 96 177 128 97 0 29 96 0 57 96 0 243 0 96 96 96 64 82 96 4 54 16 96 63 87 96 0 53 124 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144 4 99 255 255 255 255 22 128 99 198 136 143 161 20 96 68 87 91 96 0 128 253 91 52 21 96 78 87 96 0 128 253 91 96 98 96 4 128 128 53 144 96 32 1 144 145 144 80 80 96 120 86 91 96 64 81 128 130 129 82 96 32 1 145 80 80 96 64 81 128 145 3 144 243 91 96 0 96 7 130 2 144 80 145 144 80 86 0 161 101 98 122 122 114 48 88 32 196 172 149 10 146 202 169 148 74 126 7 224 48 84 46 158 215 219 146 99 26 220 194 52 216 106 16 92 133 59 129 162 0 41]
operation=87,pc=10, vm.operation{execute:(vm.executionFunc)(0x4251bf0), gasCost:(vm.gasFunc)(0x425d160), validateStack:(vm.stackValidationFunc)(0x425e310), memorySize:(vm.memorySizeFunc)(nil), halts:false, jumps:true, writes:false, valid:true, reverts:false, returns:false}
get code [11] from [96 96 96 64 82 52 21 97 0 15 87 96 0 128 253 91 96 177 128 97 0 29 96 0 57 96 0 243 0 96 96 96 64 82 96 4 54 16 96 63 87 96 0 53 124 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144 4 99 255 255 255 255 22 128 99 198 136 143 161 20 96 68 87 91 96 0 128 253 91 52 21 96 78 87 96 0 128 253 91 96 98 96 4 128 128 53 144 96 32 1 144 145 144 80 80 96 120 86 91 96 64 81 128 130 129 82 96 32 1 145 80 80 96 64 81 128 145 3 144 243 91 96 0 96 7 130 2 144 80 145 144 80 86 0 161 101 98 122 122 114 48 88 32 196 172 149 10 146 202 169 148 74 126 7 224 48 84 46 158 215 219 146 99 26 220 194 52 216 106 16 92 133 59 129 162 0 41]
operation=96,pc=11, vm.operation{execute:(vm.executionFunc)(0x425d9b0), gasCost:(vm.gasFunc)(0x42489d0), validateStack:(vm.stackValidationFunc)(0x425e310), memorySize:(vm.memorySizeFunc)(nil), halts:false, jumps:false, writes:false, valid:true, reverts:false, returns:false}
get code [13] from [96 96 96 64 82 52 21 97 0 15 87 96 0 128 253 91 96 177 128 97 0 29 96 0 57 96 0 243 0 96 96 96 64 82 96 4 54 16 96 63 87 96 0 53 124 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144 4 99 255 255 255 255 22 128 99 198 136 143 161 20 96 68 87 91 96 0 128 253 91 52 21 96 78 87 96 0 128 253 91 96 98 96 4 128 128 53 144 96 32 1 144 145 144 80 80 96 120 86 91 96 64 81 128 130 129 82 96 32 1 145 80 80 96 64 81 128 145 3 144 243 91 96 0 96 7 130 2 144 80 145 144 80 86 0 161 101 98 122 122 114 48 88 32 196 172 149 10 146 202 169 148 74 126 7 224 48 84 46 158 215 219 146 99 26 220 194 52 216 106 16 92 133 59 129 162 0 41]
operation=128,pc=13, vm.operation{execute:(vm.executionFunc)(0x425dd10), gasCost:(vm.gasFunc)(0x4248a10), validateStack:(vm.stackValidationFunc)(0x425e310), memorySize:(vm.memorySizeFunc)(nil), halts:false, jumps:false, writes:false, valid:true, reverts:false, returns:false}
get code [14] from [96 96 96 64 82 52 21 97 0 15 87 96 0 128 253 91 96 177 128 97 0 29 96 0 57 96 0 243 0 96 96 96 64 82 96 4 54 16 96 63 87 96 0 53 124 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144 4 99 255 255 255 255 22 128 99 198 136 143 161 20 96 68 87 91 96 0 128 253 91 52 21 96 78 87 96 0 128 253 91 96 98 96 4 128 128 53 144 96 32 1 144 145 144 80 80 96 120 86 91 96 64 81 128 130 129 82 96 32 1 145 80 80 96 64 81 128 145 3 144 243 91 96 0 96 7 130 2 144 80 145 144 80 86 0 161 101 98 122 122 114 48 88 32 196 172 149 10 146 202 169 148 74 126 7 224 48 84 46 158 215 219 146 99 26 220 194 52 216 106 16 92 133 59 129 162 0 41]
operation=253,pc=14, vm.operation{execute:(vm.executionFunc)(0x42551d0), gasCost:(vm.gasFunc)(0x4247ec0), validateStack:(vm.stackValidationFunc)(0x425e310), memorySize:(vm.memorySizeFunc)(0x425c9b0), halts:false, jumps:false, writes:false, valid:true, reverts:true, returns:true}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.