mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-23 05:06:43 +00:00
Merge branch 'master' into osaka-on-dev-mode
This commit is contained in:
commit
304d0c5050
632 changed files with 55308 additions and 17970 deletions
|
|
@ -1,8 +1,13 @@
|
||||||
on:
|
on:
|
||||||
schedule:
|
|
||||||
- cron: '0 14 * * *'
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
### Note we cannot use cron-triggered builds right now, Gitea seems to have
|
||||||
|
### a few bugs in that area. So this workflow is scheduled using an external
|
||||||
|
### triggering mechanism and workflow_dispatch.
|
||||||
|
#
|
||||||
|
# schedule:
|
||||||
|
# - cron: '0 15 * * *'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
azure-cleanup:
|
azure-cleanup:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,17 @@
|
||||||
on:
|
on:
|
||||||
schedule:
|
|
||||||
- cron: '0 15 * * *'
|
|
||||||
push:
|
push:
|
||||||
branches:
|
tags:
|
||||||
- "release/*"
|
- "v*"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
### Note we cannot use cron-triggered builds right now, Gitea seems to have
|
||||||
|
### a few bugs in that area. So this workflow is scheduled using an external
|
||||||
|
### triggering mechanism and workflow_dispatch.
|
||||||
|
#
|
||||||
|
# schedule:
|
||||||
|
# - cron: '0 16 * * *'
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
ppa:
|
ppa:
|
||||||
name: PPA Upload
|
name: PPA Upload
|
||||||
|
|
@ -13,6 +19,10 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Show environment
|
||||||
|
run: |
|
||||||
|
env
|
||||||
|
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v5
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ on:
|
||||||
- "master"
|
- "master"
|
||||||
tags:
|
tags:
|
||||||
- "v*"
|
- "v*"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
linux-intel:
|
linux-intel:
|
||||||
|
|
@ -25,7 +26,7 @@ jobs:
|
||||||
|
|
||||||
- name: Build (amd64)
|
- name: Build (amd64)
|
||||||
run: |
|
run: |
|
||||||
go run build/ci.go install -arch amd64 -dlgo
|
go run build/ci.go install -static -arch amd64 -dlgo
|
||||||
|
|
||||||
- name: Create/upload archive (amd64)
|
- name: Create/upload archive (amd64)
|
||||||
run: |
|
run: |
|
||||||
|
|
@ -37,7 +38,7 @@ jobs:
|
||||||
|
|
||||||
- name: Build (386)
|
- name: Build (386)
|
||||||
run: |
|
run: |
|
||||||
go run build/ci.go install -arch 386 -dlgo
|
go run build/ci.go install -static -arch 386 -dlgo
|
||||||
|
|
||||||
- name: Create/upload archive (386)
|
- name: Create/upload archive (386)
|
||||||
run: |
|
run: |
|
||||||
|
|
@ -67,7 +68,7 @@ jobs:
|
||||||
|
|
||||||
- name: Build (arm64)
|
- name: Build (arm64)
|
||||||
run: |
|
run: |
|
||||||
go run build/ci.go install -dlgo -arch arm64 -cc aarch64-linux-gnu-gcc
|
go run build/ci.go install -static -dlgo -arch arm64 -cc aarch64-linux-gnu-gcc
|
||||||
|
|
||||||
- name: Create/upload archive (arm64)
|
- name: Create/upload archive (arm64)
|
||||||
run: |
|
run: |
|
||||||
|
|
@ -79,7 +80,7 @@ jobs:
|
||||||
|
|
||||||
- name: Run build (arm5)
|
- name: Run build (arm5)
|
||||||
run: |
|
run: |
|
||||||
go run build/ci.go install -dlgo -arch arm -cc arm-linux-gnueabi-gcc
|
go run build/ci.go install -static -dlgo -arch arm -cc arm-linux-gnueabi-gcc
|
||||||
env:
|
env:
|
||||||
GOARM: "5"
|
GOARM: "5"
|
||||||
|
|
||||||
|
|
@ -93,7 +94,7 @@ jobs:
|
||||||
|
|
||||||
- name: Run build (arm6)
|
- name: Run build (arm6)
|
||||||
run: |
|
run: |
|
||||||
go run build/ci.go install -dlgo -arch arm -cc arm-linux-gnueabi-gcc
|
go run build/ci.go install -static -dlgo -arch arm -cc arm-linux-gnueabi-gcc
|
||||||
env:
|
env:
|
||||||
GOARM: "6"
|
GOARM: "6"
|
||||||
|
|
||||||
|
|
@ -108,7 +109,7 @@ jobs:
|
||||||
|
|
||||||
- name: Run build (arm7)
|
- name: Run build (arm7)
|
||||||
run: |
|
run: |
|
||||||
go run build/ci.go install -dlgo -arch arm -cc arm-linux-gnueabi-gcc
|
go run build/ci.go install -static -dlgo -arch arm -cc arm-linux-gnueabi-gcc
|
||||||
env:
|
env:
|
||||||
GOARM: "7"
|
GOARM: "7"
|
||||||
|
|
||||||
|
|
@ -121,6 +122,37 @@ jobs:
|
||||||
LINUX_SIGNING_KEY: ${{ secrets.LINUX_SIGNING_KEY }}
|
LINUX_SIGNING_KEY: ${{ secrets.LINUX_SIGNING_KEY }}
|
||||||
AZURE_BLOBSTORE_TOKEN: ${{ secrets.AZURE_BLOBSTORE_TOKEN }}
|
AZURE_BLOBSTORE_TOKEN: ${{ secrets.AZURE_BLOBSTORE_TOKEN }}
|
||||||
|
|
||||||
|
windows:
|
||||||
|
name: Windows Build
|
||||||
|
runs-on: "win-11"
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: 1.24
|
||||||
|
cache: false
|
||||||
|
|
||||||
|
# Note: gcc.exe only works properly if the corresponding bin/ directory is
|
||||||
|
# contained in PATH.
|
||||||
|
|
||||||
|
- name: "Build (amd64)"
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
set PATH=%GETH_MINGW%\bin;%PATH%
|
||||||
|
go run build/ci.go install -dlgo -arch amd64 -cc %GETH_MINGW%\bin\gcc.exe
|
||||||
|
env:
|
||||||
|
GETH_MINGW: 'C:\msys64\mingw64'
|
||||||
|
|
||||||
|
- name: "Build (386)"
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
set PATH=%GETH_MINGW%\bin;%PATH%
|
||||||
|
go run build/ci.go install -dlgo -arch 386 -cc %GETH_MINGW%\bin\gcc.exe
|
||||||
|
env:
|
||||||
|
GETH_MINGW: 'C:\msys64\mingw32'
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
name: Docker Image
|
name: Docker Image
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
|
||||||
4
.github/CODEOWNERS
vendored
4
.github/CODEOWNERS
vendored
|
|
@ -19,7 +19,7 @@ eth/tracers/ @s1na
|
||||||
ethclient/ @fjl
|
ethclient/ @fjl
|
||||||
ethdb/ @rjl493456442
|
ethdb/ @rjl493456442
|
||||||
event/ @fjl
|
event/ @fjl
|
||||||
trie/ @rjl493456442
|
trie/ @rjl493456442 @gballet
|
||||||
triedb/ @rjl493456442
|
triedb/ @rjl493456442
|
||||||
core/tracing/ @s1na
|
core/tracing/ @s1na
|
||||||
graphql/ @s1na
|
graphql/ @s1na
|
||||||
|
|
@ -29,5 +29,5 @@ miner/ @MariusVanDerWijden @fjl @rjl493456442
|
||||||
node/ @fjl
|
node/ @fjl
|
||||||
p2p/ @fjl @zsfelfoldi
|
p2p/ @fjl @zsfelfoldi
|
||||||
rlp/ @fjl
|
rlp/ @fjl
|
||||||
params/ @fjl @karalabe @gballet @rjl493456442 @zsfelfoldi
|
params/ @fjl @gballet @rjl493456442 @zsfelfoldi
|
||||||
rpc/ @fjl
|
rpc/ @fjl
|
||||||
|
|
|
||||||
36
.github/workflows/go.yml
vendored
36
.github/workflows/go.yml
vendored
|
|
@ -1,18 +1,20 @@
|
||||||
name: i386 linux tests
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ master ]
|
branches:
|
||||||
|
- master
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ master ]
|
branches:
|
||||||
|
- master
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
name: Lint
|
name: Lint
|
||||||
runs-on: self-hosted
|
runs-on: [self-hosted-ghr, size-s-x64]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: false
|
||||||
|
|
||||||
# Cache build tools to avoid downloading them each time
|
# Cache build tools to avoid downloading them each time
|
||||||
- uses: actions/cache@v4
|
- uses: actions/cache@v4
|
||||||
|
|
@ -23,7 +25,7 @@ jobs:
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v5
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version: 1.23.0
|
go-version: 1.25
|
||||||
cache: false
|
cache: false
|
||||||
|
|
||||||
- name: Run linters
|
- name: Run linters
|
||||||
|
|
@ -32,17 +34,25 @@ jobs:
|
||||||
go run build/ci.go check_generate
|
go run build/ci.go check_generate
|
||||||
go run build/ci.go check_baddeps
|
go run build/ci.go check_baddeps
|
||||||
|
|
||||||
build:
|
test:
|
||||||
runs-on: self-hosted
|
name: Test
|
||||||
|
needs: lint
|
||||||
|
runs-on: [self-hosted-ghr, size-l-x64]
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
go:
|
||||||
|
- '1.25'
|
||||||
|
- '1.24'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v5
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version: 1.24.0
|
go-version: ${{ matrix.go }}
|
||||||
cache: false
|
cache: false
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: go test -short ./...
|
run: go run build/ci.go test -p 8
|
||||||
env:
|
|
||||||
GOOS: linux
|
|
||||||
GOARCH: 386
|
|
||||||
|
|
|
||||||
23
.github/workflows/validate_pr.yml
vendored
Normal file
23
.github/workflows/validate_pr.yml
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
name: PR Format Validation
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [opened, edited, synchronize]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
validate-pr:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check PR Title Format
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const prTitle = context.payload.pull_request.title;
|
||||||
|
const titleRegex = /^([\w\s,{}/.]+): .+/;
|
||||||
|
|
||||||
|
if (!titleRegex.test(prTitle)) {
|
||||||
|
core.setFailed(`PR title "${prTitle}" does not match required format: directory, ...: description`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('✅ PR title format is valid');
|
||||||
86
.travis.yml
86
.travis.yml
|
|
@ -1,86 +0,0 @@
|
||||||
language: go
|
|
||||||
go_import_path: github.com/ethereum/go-ethereum
|
|
||||||
sudo: false
|
|
||||||
jobs:
|
|
||||||
include:
|
|
||||||
# This builder create and push the Docker images for all architectures
|
|
||||||
- stage: build
|
|
||||||
if: type = push && tag ~= /^v[0-9]/
|
|
||||||
os: linux
|
|
||||||
arch: amd64
|
|
||||||
dist: focal
|
|
||||||
go: 1.24.x
|
|
||||||
env:
|
|
||||||
- docker
|
|
||||||
services:
|
|
||||||
- docker
|
|
||||||
git:
|
|
||||||
submodules: false # avoid cloning ethereum/tests
|
|
||||||
before_install:
|
|
||||||
- export DOCKER_CLI_EXPERIMENTAL=enabled
|
|
||||||
script:
|
|
||||||
- go run build/ci.go dockerx -platform "linux/amd64,linux/arm64,linux/riscv64" -hub ethereum/client-go -upload
|
|
||||||
|
|
||||||
# This builder does the Ubuntu PPA nightly uploads
|
|
||||||
- stage: build
|
|
||||||
if: type = push && tag ~= /^v[0-9]/
|
|
||||||
os: linux
|
|
||||||
dist: focal
|
|
||||||
go: 1.24.x
|
|
||||||
env:
|
|
||||||
- ubuntu-ppa
|
|
||||||
git:
|
|
||||||
submodules: false # avoid cloning ethereum/tests
|
|
||||||
before_install:
|
|
||||||
- sudo -E apt-get -yq --no-install-suggests --no-install-recommends install devscripts debhelper dput fakeroot
|
|
||||||
script:
|
|
||||||
- echo '|1|7SiYPr9xl3uctzovOTj4gMwAC1M=|t6ReES75Bo/PxlOPJ6/GsGbTrM0= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0aKz5UTUndYgIGG7dQBV+HaeuEZJ2xPHo2DS2iSKvUL4xNMSAY4UguNW+pX56nAQmZKIZZ8MaEvSj6zMEDiq6HFfn5JcTlM80UwlnyKe8B8p7Nk06PPQLrnmQt5fh0HmEcZx+JU9TZsfCHPnX7MNz4ELfZE6cFsclClrKim3BHUIGq//t93DllB+h4O9LHjEUsQ1Sr63irDLSutkLJD6RXchjROXkNirlcNVHH/jwLWR5RcYilNX7S5bIkK8NlWPjsn/8Ua5O7I9/YoE97PpO6i73DTGLh5H9JN/SITwCKBkgSDWUt61uPK3Y11Gty7o2lWsBjhBUm2Y38CBsoGmBw==' >> ~/.ssh/known_hosts
|
|
||||||
- go run build/ci.go debsrc -upload ethereum/ethereum -sftp-user geth-ci -signer "Go Ethereum Linux Builder <geth-ci@ethereum.org>"
|
|
||||||
|
|
||||||
# This builder does the Linux Azure uploads
|
|
||||||
- stage: build
|
|
||||||
if: type = push && tag ~= /^v[0-9]/
|
|
||||||
os: linux
|
|
||||||
dist: focal
|
|
||||||
sudo: required
|
|
||||||
go: 1.24.x
|
|
||||||
env:
|
|
||||||
- azure-linux
|
|
||||||
git:
|
|
||||||
submodules: false # avoid cloning ethereum/tests
|
|
||||||
script:
|
|
||||||
# build amd64
|
|
||||||
- go run build/ci.go install -dlgo
|
|
||||||
- go run build/ci.go archive -type tar -signer LINUX_SIGNING_KEY -signify SIGNIFY_KEY -upload gethstore/builds
|
|
||||||
|
|
||||||
# build 386
|
|
||||||
- sudo -E apt-get -yq --no-install-suggests --no-install-recommends install gcc-multilib
|
|
||||||
- git status --porcelain
|
|
||||||
- go run build/ci.go install -dlgo -arch 386
|
|
||||||
- go run build/ci.go archive -arch 386 -type tar -signer LINUX_SIGNING_KEY -signify SIGNIFY_KEY -upload gethstore/builds
|
|
||||||
|
|
||||||
# Switch over GCC to cross compilation (breaks 386, hence why do it here only)
|
|
||||||
- sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install gcc-arm-linux-gnueabi libc6-dev-armel-cross gcc-arm-linux-gnueabihf libc6-dev-armhf-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross
|
|
||||||
- sudo ln -s /usr/include/asm-generic /usr/include/asm
|
|
||||||
|
|
||||||
- GOARM=5 go run build/ci.go install -dlgo -arch arm -cc arm-linux-gnueabi-gcc
|
|
||||||
- GOARM=5 go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY -signify SIGNIFY_KEY -upload gethstore/builds
|
|
||||||
- GOARM=6 go run build/ci.go install -dlgo -arch arm -cc arm-linux-gnueabi-gcc
|
|
||||||
- GOARM=6 go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY -signify SIGNIFY_KEY -upload gethstore/builds
|
|
||||||
- GOARM=7 go run build/ci.go install -dlgo -arch arm -cc arm-linux-gnueabihf-gcc
|
|
||||||
- GOARM=7 go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY -signify SIGNIFY_KEY -upload gethstore/builds
|
|
||||||
- go run build/ci.go install -dlgo -arch arm64 -cc aarch64-linux-gnu-gcc
|
|
||||||
- go run build/ci.go archive -arch arm64 -type tar -signer LINUX_SIGNING_KEY -signify SIGNIFY_KEY -upload gethstore/builds
|
|
||||||
|
|
||||||
# This builder does the Azure archive purges to avoid accumulating junk
|
|
||||||
- stage: build
|
|
||||||
if: type = cron
|
|
||||||
os: linux
|
|
||||||
dist: focal
|
|
||||||
go: 1.24.x
|
|
||||||
env:
|
|
||||||
- azure-purge
|
|
||||||
git:
|
|
||||||
submodules: false # avoid cloning ethereum/tests
|
|
||||||
script:
|
|
||||||
- go run build/ci.go purge -store gethstore/builds -days 14
|
|
||||||
|
|
@ -8,6 +8,7 @@ https://pkg.go.dev/badge/github.com/ethereum/go-ethereum
|
||||||
[](https://goreportcard.com/report/github.com/ethereum/go-ethereum)
|
[](https://goreportcard.com/report/github.com/ethereum/go-ethereum)
|
||||||
[](https://app.travis-ci.com/github/ethereum/go-ethereum)
|
[](https://app.travis-ci.com/github/ethereum/go-ethereum)
|
||||||
[](https://discord.gg/nthXNEv)
|
[](https://discord.gg/nthXNEv)
|
||||||
|
[](https://x.com/go_ethereum)
|
||||||
|
|
||||||
Automated builds are available for stable releases and the unstable master branch. Binary
|
Automated builds are available for stable releases and the unstable master branch. Binary
|
||||||
archives are published at https://geth.ethereum.org/downloads/.
|
archives are published at https://geth.ethereum.org/downloads/.
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,10 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/log"
|
"github.com/ethereum/go-ethereum/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
intRegex = regexp.MustCompile(`(u)?int([0-9]*)`)
|
||||||
|
)
|
||||||
|
|
||||||
func isKeyWord(arg string) bool {
|
func isKeyWord(arg string) bool {
|
||||||
switch arg {
|
switch arg {
|
||||||
case "break":
|
case "break":
|
||||||
|
|
@ -299,7 +303,7 @@ func bindBasicType(kind abi.Type) string {
|
||||||
case abi.AddressTy:
|
case abi.AddressTy:
|
||||||
return "common.Address"
|
return "common.Address"
|
||||||
case abi.IntTy, abi.UintTy:
|
case abi.IntTy, abi.UintTy:
|
||||||
parts := regexp.MustCompile(`(u)?int([0-9]*)`).FindStringSubmatch(kind.String())
|
parts := intRegex.FindStringSubmatch(kind.String())
|
||||||
switch parts[2] {
|
switch parts[2] {
|
||||||
case "8", "16", "32", "64":
|
case "8", "16", "32", "64":
|
||||||
return fmt.Sprintf("%sint%s", parts[1], parts[2])
|
return fmt.Sprintf("%sint%s", parts[1], parts[2])
|
||||||
|
|
|
||||||
|
|
@ -485,13 +485,13 @@ var bindTests = []struct {
|
||||||
contract Defaulter {
|
contract Defaulter {
|
||||||
address public caller;
|
address public caller;
|
||||||
|
|
||||||
function() {
|
fallback() external payable {
|
||||||
caller = msg.sender;
|
caller = msg.sender;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
[]string{`6060604052606a8060106000396000f360606040523615601d5760e060020a6000350463fc9c8d3981146040575b605e6000805473ffffffffffffffffffffffffffffffffffffffff191633179055565b606060005473ffffffffffffffffffffffffffffffffffffffff1681565b005b6060908152602090f3`},
|
[]string{`608060405234801561000f575f80fd5b5061013d8061001d5f395ff3fe608060405260043610610021575f3560e01c8063fc9c8d391461006257610022565b5b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055005b34801561006d575f80fd5b5061007661008c565b60405161008391906100ee565b60405180910390f35b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100d8826100af565b9050919050565b6100e8816100ce565b82525050565b5f6020820190506101015f8301846100df565b9291505056fea26469706673582212201e9273ecfb1f534644c77f09a25c21baaba81cf1c444ebc071e12a225a23c72964736f6c63430008140033`},
|
||||||
[]string{`[{"constant":true,"inputs":[],"name":"caller","outputs":[{"name":"","type":"address"}],"type":"function"}]`},
|
[]string{`[{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"caller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]`},
|
||||||
`
|
`
|
||||||
"math/big"
|
"math/big"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -281,7 +281,7 @@ func TestBindingV2ConvertedV1Tests(t *testing.T) {
|
||||||
}
|
}
|
||||||
// Set this environment variable to regenerate the test outputs.
|
// Set this environment variable to regenerate the test outputs.
|
||||||
if os.Getenv("WRITE_TEST_FILES") != "" {
|
if os.Getenv("WRITE_TEST_FILES") != "" {
|
||||||
if err := os.WriteFile((fname), []byte(have), 0666); err != nil {
|
if err := os.WriteFile(fname, []byte(have), 0666); err != nil {
|
||||||
t.Fatalf("err writing expected output to file: %v\n", err)
|
t.Fatalf("err writing expected output to file: %v\n", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,8 @@ var (
|
||||||
|
|
||||||
{{range .Calls}}
|
{{range .Calls}}
|
||||||
// Pack{{.Normalized.Name}} is the Go binding used to pack the parameters required for calling
|
// Pack{{.Normalized.Name}} is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x{{printf "%x" .Original.ID}}.
|
// the contract method with ID 0x{{printf "%x" .Original.ID}}. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: {{.Original.String}}
|
// Solidity: {{.Original.String}}
|
||||||
func ({{ decapitalise $contract.Type}} *{{$contract.Type}}) Pack{{.Normalized.Name}}({{range .Normalized.Inputs}} {{.Name}} {{bindtype .Type $structs}}, {{end}}) []byte {
|
func ({{ decapitalise $contract.Type}} *{{$contract.Type}}) Pack{{.Normalized.Name}}({{range .Normalized.Inputs}} {{.Name}} {{bindtype .Type $structs}}, {{end}}) []byte {
|
||||||
|
|
@ -101,6 +102,15 @@ var (
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPack{{.Normalized.Name}} is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x{{printf "%x" .Original.ID}}. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: {{.Original.String}}
|
||||||
|
func ({{ decapitalise $contract.Type}} *{{$contract.Type}}) TryPack{{.Normalized.Name}}({{range .Normalized.Inputs}} {{.Name}} {{bindtype .Type $structs}}, {{end}}) ([]byte, error) {
|
||||||
|
return {{ decapitalise $contract.Type}}.abi.Pack("{{.Original.Name}}" {{range .Normalized.Inputs}}, {{.Name}}{{end}})
|
||||||
|
}
|
||||||
|
|
||||||
{{/* Unpack method is needed only when there are return args */}}
|
{{/* Unpack method is needed only when there are return args */}}
|
||||||
{{if .Normalized.Outputs }}
|
{{if .Normalized.Outputs }}
|
||||||
{{ if .Structured }}
|
{{ if .Structured }}
|
||||||
|
|
@ -133,8 +143,7 @@ var (
|
||||||
outstruct.{{capitalise .Name}} = *abi.ConvertType(out[{{$i}}], new({{bindtype .Type $structs}})).(*{{bindtype .Type $structs}})
|
outstruct.{{capitalise .Name}} = *abi.ConvertType(out[{{$i}}], new({{bindtype .Type $structs}})).(*{{bindtype .Type $structs}})
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
return *outstruct, err
|
return *outstruct, nil{{else}}
|
||||||
{{else}}
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return {{range $i, $_ := .Normalized.Outputs}}{{if ispointertype .Type}}new({{underlyingbindtype .Type }}), {{else}}*new({{bindtype .Type $structs}}), {{end}}{{end}} err
|
return {{range $i, $_ := .Normalized.Outputs}}{{if ispointertype .Type}}new({{underlyingbindtype .Type }}), {{else}}*new({{bindtype .Type $structs}}), {{end}}{{end}} err
|
||||||
}
|
}
|
||||||
|
|
@ -145,8 +154,8 @@ var (
|
||||||
out{{$i}} := *abi.ConvertType(out[{{$i}}], new({{bindtype .Type $structs}})).(*{{bindtype .Type $structs}})
|
out{{$i}} := *abi.ConvertType(out[{{$i}}], new({{bindtype .Type $structs}})).(*{{bindtype .Type $structs}})
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end}}
|
{{- end}}
|
||||||
return {{range $i, $t := .Normalized.Outputs}}out{{$i}}, {{end}} err
|
return {{range $i, $t := .Normalized.Outputs}}out{{$i}}, {{end}} nil
|
||||||
{{- end}}
|
{{- end}}
|
||||||
}
|
}
|
||||||
{{end}}
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
@ -174,7 +183,7 @@ var (
|
||||||
// Solidity: {{.Original.String}}
|
// Solidity: {{.Original.String}}
|
||||||
func ({{ decapitalise $contract.Type}} *{{$contract.Type}}) Unpack{{.Normalized.Name}}Event(log *types.Log) (*{{$contract.Type}}{{.Normalized.Name}}, error) {
|
func ({{ decapitalise $contract.Type}} *{{$contract.Type}}) Unpack{{.Normalized.Name}}Event(log *types.Log) (*{{$contract.Type}}{{.Normalized.Name}}, error) {
|
||||||
event := "{{.Original.Name}}"
|
event := "{{.Original.Name}}"
|
||||||
if log.Topics[0] != {{ decapitalise $contract.Type}}.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != {{ decapitalise $contract.Type}}.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new({{$contract.Type}}{{.Normalized.Name}})
|
out := new({{$contract.Type}}{{.Normalized.Name}})
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,8 @@ func (c *CallbackParam) Instance(backend bind.ContractBackend, addr common.Addre
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackTest is the Go binding used to pack the parameters required for calling
|
// PackTest is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xd7a5aba2.
|
// the contract method with ID 0xd7a5aba2. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function test(function callback) returns()
|
// Solidity: function test(function callback) returns()
|
||||||
func (callbackParam *CallbackParam) PackTest(callback [24]byte) []byte {
|
func (callbackParam *CallbackParam) PackTest(callback [24]byte) []byte {
|
||||||
|
|
@ -62,3 +63,12 @@ func (callbackParam *CallbackParam) PackTest(callback [24]byte) []byte {
|
||||||
}
|
}
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackTest is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xd7a5aba2. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function test(function callback) returns()
|
||||||
|
func (callbackParam *CallbackParam) TryPackTest(callback [24]byte) ([]byte, error) {
|
||||||
|
return callbackParam.abi.Pack("test", callback)
|
||||||
|
}
|
||||||
|
|
|
||||||
113
accounts/abi/abigen/testdata/v2/crowdsale.go.txt
vendored
113
accounts/abi/abigen/testdata/v2/crowdsale.go.txt
vendored
|
|
@ -64,7 +64,8 @@ func (crowdsale *Crowdsale) PackConstructor(ifSuccessfulSendTo common.Address, f
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackAmountRaised is the Go binding used to pack the parameters required for calling
|
// PackAmountRaised is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x7b3e5e7b.
|
// the contract method with ID 0x7b3e5e7b. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function amountRaised() returns(uint256)
|
// Solidity: function amountRaised() returns(uint256)
|
||||||
func (crowdsale *Crowdsale) PackAmountRaised() []byte {
|
func (crowdsale *Crowdsale) PackAmountRaised() []byte {
|
||||||
|
|
@ -75,6 +76,15 @@ func (crowdsale *Crowdsale) PackAmountRaised() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackAmountRaised is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x7b3e5e7b. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function amountRaised() returns(uint256)
|
||||||
|
func (crowdsale *Crowdsale) TryPackAmountRaised() ([]byte, error) {
|
||||||
|
return crowdsale.abi.Pack("amountRaised")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackAmountRaised is the Go binding that unpacks the parameters returned
|
// UnpackAmountRaised is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x7b3e5e7b.
|
// from invoking the contract method with ID 0x7b3e5e7b.
|
||||||
//
|
//
|
||||||
|
|
@ -85,11 +95,12 @@ func (crowdsale *Crowdsale) UnpackAmountRaised(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackBeneficiary is the Go binding used to pack the parameters required for calling
|
// PackBeneficiary is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x38af3eed.
|
// the contract method with ID 0x38af3eed. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function beneficiary() returns(address)
|
// Solidity: function beneficiary() returns(address)
|
||||||
func (crowdsale *Crowdsale) PackBeneficiary() []byte {
|
func (crowdsale *Crowdsale) PackBeneficiary() []byte {
|
||||||
|
|
@ -100,6 +111,15 @@ func (crowdsale *Crowdsale) PackBeneficiary() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackBeneficiary is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x38af3eed. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function beneficiary() returns(address)
|
||||||
|
func (crowdsale *Crowdsale) TryPackBeneficiary() ([]byte, error) {
|
||||||
|
return crowdsale.abi.Pack("beneficiary")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackBeneficiary is the Go binding that unpacks the parameters returned
|
// UnpackBeneficiary is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x38af3eed.
|
// from invoking the contract method with ID 0x38af3eed.
|
||||||
//
|
//
|
||||||
|
|
@ -110,11 +130,12 @@ func (crowdsale *Crowdsale) UnpackBeneficiary(data []byte) (common.Address, erro
|
||||||
return *new(common.Address), err
|
return *new(common.Address), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
|
out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackCheckGoalReached is the Go binding used to pack the parameters required for calling
|
// PackCheckGoalReached is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x01cb3b20.
|
// the contract method with ID 0x01cb3b20. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function checkGoalReached() returns()
|
// Solidity: function checkGoalReached() returns()
|
||||||
func (crowdsale *Crowdsale) PackCheckGoalReached() []byte {
|
func (crowdsale *Crowdsale) PackCheckGoalReached() []byte {
|
||||||
|
|
@ -125,8 +146,18 @@ func (crowdsale *Crowdsale) PackCheckGoalReached() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackCheckGoalReached is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x01cb3b20. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function checkGoalReached() returns()
|
||||||
|
func (crowdsale *Crowdsale) TryPackCheckGoalReached() ([]byte, error) {
|
||||||
|
return crowdsale.abi.Pack("checkGoalReached")
|
||||||
|
}
|
||||||
|
|
||||||
// PackDeadline is the Go binding used to pack the parameters required for calling
|
// PackDeadline is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x29dcb0cf.
|
// the contract method with ID 0x29dcb0cf. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function deadline() returns(uint256)
|
// Solidity: function deadline() returns(uint256)
|
||||||
func (crowdsale *Crowdsale) PackDeadline() []byte {
|
func (crowdsale *Crowdsale) PackDeadline() []byte {
|
||||||
|
|
@ -137,6 +168,15 @@ func (crowdsale *Crowdsale) PackDeadline() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackDeadline is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x29dcb0cf. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function deadline() returns(uint256)
|
||||||
|
func (crowdsale *Crowdsale) TryPackDeadline() ([]byte, error) {
|
||||||
|
return crowdsale.abi.Pack("deadline")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackDeadline is the Go binding that unpacks the parameters returned
|
// UnpackDeadline is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x29dcb0cf.
|
// from invoking the contract method with ID 0x29dcb0cf.
|
||||||
//
|
//
|
||||||
|
|
@ -147,11 +187,12 @@ func (crowdsale *Crowdsale) UnpackDeadline(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackFunders is the Go binding used to pack the parameters required for calling
|
// PackFunders is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xdc0d3dff.
|
// the contract method with ID 0xdc0d3dff. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function funders(uint256 ) returns(address addr, uint256 amount)
|
// Solidity: function funders(uint256 ) returns(address addr, uint256 amount)
|
||||||
func (crowdsale *Crowdsale) PackFunders(arg0 *big.Int) []byte {
|
func (crowdsale *Crowdsale) PackFunders(arg0 *big.Int) []byte {
|
||||||
|
|
@ -162,6 +203,15 @@ func (crowdsale *Crowdsale) PackFunders(arg0 *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackFunders is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xdc0d3dff. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function funders(uint256 ) returns(address addr, uint256 amount)
|
||||||
|
func (crowdsale *Crowdsale) TryPackFunders(arg0 *big.Int) ([]byte, error) {
|
||||||
|
return crowdsale.abi.Pack("funders", arg0)
|
||||||
|
}
|
||||||
|
|
||||||
// FundersOutput serves as a container for the return parameters of contract
|
// FundersOutput serves as a container for the return parameters of contract
|
||||||
// method Funders.
|
// method Funders.
|
||||||
type FundersOutput struct {
|
type FundersOutput struct {
|
||||||
|
|
@ -181,12 +231,12 @@ func (crowdsale *Crowdsale) UnpackFunders(data []byte) (FundersOutput, error) {
|
||||||
}
|
}
|
||||||
outstruct.Addr = *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
|
outstruct.Addr = *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
|
||||||
outstruct.Amount = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
outstruct.Amount = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackFundingGoal is the Go binding used to pack the parameters required for calling
|
// PackFundingGoal is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x7a3a0e84.
|
// the contract method with ID 0x7a3a0e84. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function fundingGoal() returns(uint256)
|
// Solidity: function fundingGoal() returns(uint256)
|
||||||
func (crowdsale *Crowdsale) PackFundingGoal() []byte {
|
func (crowdsale *Crowdsale) PackFundingGoal() []byte {
|
||||||
|
|
@ -197,6 +247,15 @@ func (crowdsale *Crowdsale) PackFundingGoal() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackFundingGoal is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x7a3a0e84. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function fundingGoal() returns(uint256)
|
||||||
|
func (crowdsale *Crowdsale) TryPackFundingGoal() ([]byte, error) {
|
||||||
|
return crowdsale.abi.Pack("fundingGoal")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackFundingGoal is the Go binding that unpacks the parameters returned
|
// UnpackFundingGoal is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x7a3a0e84.
|
// from invoking the contract method with ID 0x7a3a0e84.
|
||||||
//
|
//
|
||||||
|
|
@ -207,11 +266,12 @@ func (crowdsale *Crowdsale) UnpackFundingGoal(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackPrice is the Go binding used to pack the parameters required for calling
|
// PackPrice is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xa035b1fe.
|
// the contract method with ID 0xa035b1fe. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function price() returns(uint256)
|
// Solidity: function price() returns(uint256)
|
||||||
func (crowdsale *Crowdsale) PackPrice() []byte {
|
func (crowdsale *Crowdsale) PackPrice() []byte {
|
||||||
|
|
@ -222,6 +282,15 @@ func (crowdsale *Crowdsale) PackPrice() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackPrice is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xa035b1fe. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function price() returns(uint256)
|
||||||
|
func (crowdsale *Crowdsale) TryPackPrice() ([]byte, error) {
|
||||||
|
return crowdsale.abi.Pack("price")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackPrice is the Go binding that unpacks the parameters returned
|
// UnpackPrice is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xa035b1fe.
|
// from invoking the contract method with ID 0xa035b1fe.
|
||||||
//
|
//
|
||||||
|
|
@ -232,11 +301,12 @@ func (crowdsale *Crowdsale) UnpackPrice(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackTokenReward is the Go binding used to pack the parameters required for calling
|
// PackTokenReward is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x6e66f6e9.
|
// the contract method with ID 0x6e66f6e9. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function tokenReward() returns(address)
|
// Solidity: function tokenReward() returns(address)
|
||||||
func (crowdsale *Crowdsale) PackTokenReward() []byte {
|
func (crowdsale *Crowdsale) PackTokenReward() []byte {
|
||||||
|
|
@ -247,6 +317,15 @@ func (crowdsale *Crowdsale) PackTokenReward() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackTokenReward is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x6e66f6e9. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function tokenReward() returns(address)
|
||||||
|
func (crowdsale *Crowdsale) TryPackTokenReward() ([]byte, error) {
|
||||||
|
return crowdsale.abi.Pack("tokenReward")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackTokenReward is the Go binding that unpacks the parameters returned
|
// UnpackTokenReward is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x6e66f6e9.
|
// from invoking the contract method with ID 0x6e66f6e9.
|
||||||
//
|
//
|
||||||
|
|
@ -257,7 +336,7 @@ func (crowdsale *Crowdsale) UnpackTokenReward(data []byte) (common.Address, erro
|
||||||
return *new(common.Address), err
|
return *new(common.Address), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
|
out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CrowdsaleFundTransfer represents a FundTransfer event raised by the Crowdsale contract.
|
// CrowdsaleFundTransfer represents a FundTransfer event raised by the Crowdsale contract.
|
||||||
|
|
@ -281,7 +360,7 @@ func (CrowdsaleFundTransfer) ContractEventName() string {
|
||||||
// Solidity: event FundTransfer(address backer, uint256 amount, bool isContribution)
|
// Solidity: event FundTransfer(address backer, uint256 amount, bool isContribution)
|
||||||
func (crowdsale *Crowdsale) UnpackFundTransferEvent(log *types.Log) (*CrowdsaleFundTransfer, error) {
|
func (crowdsale *Crowdsale) UnpackFundTransferEvent(log *types.Log) (*CrowdsaleFundTransfer, error) {
|
||||||
event := "FundTransfer"
|
event := "FundTransfer"
|
||||||
if log.Topics[0] != crowdsale.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != crowdsale.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(CrowdsaleFundTransfer)
|
out := new(CrowdsaleFundTransfer)
|
||||||
|
|
|
||||||
216
accounts/abi/abigen/testdata/v2/dao.go.txt
vendored
216
accounts/abi/abigen/testdata/v2/dao.go.txt
vendored
|
|
@ -64,7 +64,8 @@ func (dAO *DAO) PackConstructor(minimumQuorumForProposals *big.Int, minutesForDe
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackChangeMembership is the Go binding used to pack the parameters required for calling
|
// PackChangeMembership is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x9644fcbd.
|
// the contract method with ID 0x9644fcbd. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function changeMembership(address targetMember, bool canVote, string memberName) returns()
|
// Solidity: function changeMembership(address targetMember, bool canVote, string memberName) returns()
|
||||||
func (dAO *DAO) PackChangeMembership(targetMember common.Address, canVote bool, memberName string) []byte {
|
func (dAO *DAO) PackChangeMembership(targetMember common.Address, canVote bool, memberName string) []byte {
|
||||||
|
|
@ -75,8 +76,18 @@ func (dAO *DAO) PackChangeMembership(targetMember common.Address, canVote bool,
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackChangeMembership is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x9644fcbd. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function changeMembership(address targetMember, bool canVote, string memberName) returns()
|
||||||
|
func (dAO *DAO) TryPackChangeMembership(targetMember common.Address, canVote bool, memberName string) ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("changeMembership", targetMember, canVote, memberName)
|
||||||
|
}
|
||||||
|
|
||||||
// PackChangeVotingRules is the Go binding used to pack the parameters required for calling
|
// PackChangeVotingRules is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xbcca1fd3.
|
// the contract method with ID 0xbcca1fd3. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function changeVotingRules(uint256 minimumQuorumForProposals, uint256 minutesForDebate, int256 marginOfVotesForMajority) returns()
|
// Solidity: function changeVotingRules(uint256 minimumQuorumForProposals, uint256 minutesForDebate, int256 marginOfVotesForMajority) returns()
|
||||||
func (dAO *DAO) PackChangeVotingRules(minimumQuorumForProposals *big.Int, minutesForDebate *big.Int, marginOfVotesForMajority *big.Int) []byte {
|
func (dAO *DAO) PackChangeVotingRules(minimumQuorumForProposals *big.Int, minutesForDebate *big.Int, marginOfVotesForMajority *big.Int) []byte {
|
||||||
|
|
@ -87,8 +98,18 @@ func (dAO *DAO) PackChangeVotingRules(minimumQuorumForProposals *big.Int, minute
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackChangeVotingRules is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xbcca1fd3. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function changeVotingRules(uint256 minimumQuorumForProposals, uint256 minutesForDebate, int256 marginOfVotesForMajority) returns()
|
||||||
|
func (dAO *DAO) TryPackChangeVotingRules(minimumQuorumForProposals *big.Int, minutesForDebate *big.Int, marginOfVotesForMajority *big.Int) ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("changeVotingRules", minimumQuorumForProposals, minutesForDebate, marginOfVotesForMajority)
|
||||||
|
}
|
||||||
|
|
||||||
// PackCheckProposalCode is the Go binding used to pack the parameters required for calling
|
// PackCheckProposalCode is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xeceb2945.
|
// the contract method with ID 0xeceb2945. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function checkProposalCode(uint256 proposalNumber, address beneficiary, uint256 etherAmount, bytes transactionBytecode) returns(bool codeChecksOut)
|
// Solidity: function checkProposalCode(uint256 proposalNumber, address beneficiary, uint256 etherAmount, bytes transactionBytecode) returns(bool codeChecksOut)
|
||||||
func (dAO *DAO) PackCheckProposalCode(proposalNumber *big.Int, beneficiary common.Address, etherAmount *big.Int, transactionBytecode []byte) []byte {
|
func (dAO *DAO) PackCheckProposalCode(proposalNumber *big.Int, beneficiary common.Address, etherAmount *big.Int, transactionBytecode []byte) []byte {
|
||||||
|
|
@ -99,6 +120,15 @@ func (dAO *DAO) PackCheckProposalCode(proposalNumber *big.Int, beneficiary commo
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackCheckProposalCode is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xeceb2945. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function checkProposalCode(uint256 proposalNumber, address beneficiary, uint256 etherAmount, bytes transactionBytecode) returns(bool codeChecksOut)
|
||||||
|
func (dAO *DAO) TryPackCheckProposalCode(proposalNumber *big.Int, beneficiary common.Address, etherAmount *big.Int, transactionBytecode []byte) ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("checkProposalCode", proposalNumber, beneficiary, etherAmount, transactionBytecode)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackCheckProposalCode is the Go binding that unpacks the parameters returned
|
// UnpackCheckProposalCode is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xeceb2945.
|
// from invoking the contract method with ID 0xeceb2945.
|
||||||
//
|
//
|
||||||
|
|
@ -109,11 +139,12 @@ func (dAO *DAO) UnpackCheckProposalCode(data []byte) (bool, error) {
|
||||||
return *new(bool), err
|
return *new(bool), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
|
out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackDebatingPeriodInMinutes is the Go binding used to pack the parameters required for calling
|
// PackDebatingPeriodInMinutes is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x69bd3436.
|
// the contract method with ID 0x69bd3436. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function debatingPeriodInMinutes() returns(uint256)
|
// Solidity: function debatingPeriodInMinutes() returns(uint256)
|
||||||
func (dAO *DAO) PackDebatingPeriodInMinutes() []byte {
|
func (dAO *DAO) PackDebatingPeriodInMinutes() []byte {
|
||||||
|
|
@ -124,6 +155,15 @@ func (dAO *DAO) PackDebatingPeriodInMinutes() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackDebatingPeriodInMinutes is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x69bd3436. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function debatingPeriodInMinutes() returns(uint256)
|
||||||
|
func (dAO *DAO) TryPackDebatingPeriodInMinutes() ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("debatingPeriodInMinutes")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackDebatingPeriodInMinutes is the Go binding that unpacks the parameters returned
|
// UnpackDebatingPeriodInMinutes is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x69bd3436.
|
// from invoking the contract method with ID 0x69bd3436.
|
||||||
//
|
//
|
||||||
|
|
@ -134,11 +174,12 @@ func (dAO *DAO) UnpackDebatingPeriodInMinutes(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackExecuteProposal is the Go binding used to pack the parameters required for calling
|
// PackExecuteProposal is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x237e9492.
|
// the contract method with ID 0x237e9492. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function executeProposal(uint256 proposalNumber, bytes transactionBytecode) returns(int256 result)
|
// Solidity: function executeProposal(uint256 proposalNumber, bytes transactionBytecode) returns(int256 result)
|
||||||
func (dAO *DAO) PackExecuteProposal(proposalNumber *big.Int, transactionBytecode []byte) []byte {
|
func (dAO *DAO) PackExecuteProposal(proposalNumber *big.Int, transactionBytecode []byte) []byte {
|
||||||
|
|
@ -149,6 +190,15 @@ func (dAO *DAO) PackExecuteProposal(proposalNumber *big.Int, transactionBytecode
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackExecuteProposal is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x237e9492. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function executeProposal(uint256 proposalNumber, bytes transactionBytecode) returns(int256 result)
|
||||||
|
func (dAO *DAO) TryPackExecuteProposal(proposalNumber *big.Int, transactionBytecode []byte) ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("executeProposal", proposalNumber, transactionBytecode)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackExecuteProposal is the Go binding that unpacks the parameters returned
|
// UnpackExecuteProposal is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x237e9492.
|
// from invoking the contract method with ID 0x237e9492.
|
||||||
//
|
//
|
||||||
|
|
@ -159,11 +209,12 @@ func (dAO *DAO) UnpackExecuteProposal(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackMajorityMargin is the Go binding used to pack the parameters required for calling
|
// PackMajorityMargin is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xaa02a90f.
|
// the contract method with ID 0xaa02a90f. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function majorityMargin() returns(int256)
|
// Solidity: function majorityMargin() returns(int256)
|
||||||
func (dAO *DAO) PackMajorityMargin() []byte {
|
func (dAO *DAO) PackMajorityMargin() []byte {
|
||||||
|
|
@ -174,6 +225,15 @@ func (dAO *DAO) PackMajorityMargin() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackMajorityMargin is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xaa02a90f. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function majorityMargin() returns(int256)
|
||||||
|
func (dAO *DAO) TryPackMajorityMargin() ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("majorityMargin")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackMajorityMargin is the Go binding that unpacks the parameters returned
|
// UnpackMajorityMargin is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xaa02a90f.
|
// from invoking the contract method with ID 0xaa02a90f.
|
||||||
//
|
//
|
||||||
|
|
@ -184,11 +244,12 @@ func (dAO *DAO) UnpackMajorityMargin(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackMemberId is the Go binding used to pack the parameters required for calling
|
// PackMemberId is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x39106821.
|
// the contract method with ID 0x39106821. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function memberId(address ) returns(uint256)
|
// Solidity: function memberId(address ) returns(uint256)
|
||||||
func (dAO *DAO) PackMemberId(arg0 common.Address) []byte {
|
func (dAO *DAO) PackMemberId(arg0 common.Address) []byte {
|
||||||
|
|
@ -199,6 +260,15 @@ func (dAO *DAO) PackMemberId(arg0 common.Address) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackMemberId is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x39106821. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function memberId(address ) returns(uint256)
|
||||||
|
func (dAO *DAO) TryPackMemberId(arg0 common.Address) ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("memberId", arg0)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackMemberId is the Go binding that unpacks the parameters returned
|
// UnpackMemberId is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x39106821.
|
// from invoking the contract method with ID 0x39106821.
|
||||||
//
|
//
|
||||||
|
|
@ -209,11 +279,12 @@ func (dAO *DAO) UnpackMemberId(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackMembers is the Go binding used to pack the parameters required for calling
|
// PackMembers is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x5daf08ca.
|
// the contract method with ID 0x5daf08ca. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function members(uint256 ) returns(address member, bool canVote, string name, uint256 memberSince)
|
// Solidity: function members(uint256 ) returns(address member, bool canVote, string name, uint256 memberSince)
|
||||||
func (dAO *DAO) PackMembers(arg0 *big.Int) []byte {
|
func (dAO *DAO) PackMembers(arg0 *big.Int) []byte {
|
||||||
|
|
@ -224,6 +295,15 @@ func (dAO *DAO) PackMembers(arg0 *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackMembers is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x5daf08ca. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function members(uint256 ) returns(address member, bool canVote, string name, uint256 memberSince)
|
||||||
|
func (dAO *DAO) TryPackMembers(arg0 *big.Int) ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("members", arg0)
|
||||||
|
}
|
||||||
|
|
||||||
// MembersOutput serves as a container for the return parameters of contract
|
// MembersOutput serves as a container for the return parameters of contract
|
||||||
// method Members.
|
// method Members.
|
||||||
type MembersOutput struct {
|
type MembersOutput struct {
|
||||||
|
|
@ -247,12 +327,12 @@ func (dAO *DAO) UnpackMembers(data []byte) (MembersOutput, error) {
|
||||||
outstruct.CanVote = *abi.ConvertType(out[1], new(bool)).(*bool)
|
outstruct.CanVote = *abi.ConvertType(out[1], new(bool)).(*bool)
|
||||||
outstruct.Name = *abi.ConvertType(out[2], new(string)).(*string)
|
outstruct.Name = *abi.ConvertType(out[2], new(string)).(*string)
|
||||||
outstruct.MemberSince = abi.ConvertType(out[3], new(big.Int)).(*big.Int)
|
outstruct.MemberSince = abi.ConvertType(out[3], new(big.Int)).(*big.Int)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackMinimumQuorum is the Go binding used to pack the parameters required for calling
|
// PackMinimumQuorum is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x8160f0b5.
|
// the contract method with ID 0x8160f0b5. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function minimumQuorum() returns(uint256)
|
// Solidity: function minimumQuorum() returns(uint256)
|
||||||
func (dAO *DAO) PackMinimumQuorum() []byte {
|
func (dAO *DAO) PackMinimumQuorum() []byte {
|
||||||
|
|
@ -263,6 +343,15 @@ func (dAO *DAO) PackMinimumQuorum() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackMinimumQuorum is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x8160f0b5. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function minimumQuorum() returns(uint256)
|
||||||
|
func (dAO *DAO) TryPackMinimumQuorum() ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("minimumQuorum")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackMinimumQuorum is the Go binding that unpacks the parameters returned
|
// UnpackMinimumQuorum is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x8160f0b5.
|
// from invoking the contract method with ID 0x8160f0b5.
|
||||||
//
|
//
|
||||||
|
|
@ -273,11 +362,12 @@ func (dAO *DAO) UnpackMinimumQuorum(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackNewProposal is the Go binding used to pack the parameters required for calling
|
// PackNewProposal is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xb1050da5.
|
// the contract method with ID 0xb1050da5. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function newProposal(address beneficiary, uint256 etherAmount, string JobDescription, bytes transactionBytecode) returns(uint256 proposalID)
|
// Solidity: function newProposal(address beneficiary, uint256 etherAmount, string JobDescription, bytes transactionBytecode) returns(uint256 proposalID)
|
||||||
func (dAO *DAO) PackNewProposal(beneficiary common.Address, etherAmount *big.Int, jobDescription string, transactionBytecode []byte) []byte {
|
func (dAO *DAO) PackNewProposal(beneficiary common.Address, etherAmount *big.Int, jobDescription string, transactionBytecode []byte) []byte {
|
||||||
|
|
@ -288,6 +378,15 @@ func (dAO *DAO) PackNewProposal(beneficiary common.Address, etherAmount *big.Int
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackNewProposal is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xb1050da5. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function newProposal(address beneficiary, uint256 etherAmount, string JobDescription, bytes transactionBytecode) returns(uint256 proposalID)
|
||||||
|
func (dAO *DAO) TryPackNewProposal(beneficiary common.Address, etherAmount *big.Int, jobDescription string, transactionBytecode []byte) ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("newProposal", beneficiary, etherAmount, jobDescription, transactionBytecode)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackNewProposal is the Go binding that unpacks the parameters returned
|
// UnpackNewProposal is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xb1050da5.
|
// from invoking the contract method with ID 0xb1050da5.
|
||||||
//
|
//
|
||||||
|
|
@ -298,11 +397,12 @@ func (dAO *DAO) UnpackNewProposal(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackNumProposals is the Go binding used to pack the parameters required for calling
|
// PackNumProposals is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x400e3949.
|
// the contract method with ID 0x400e3949. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function numProposals() returns(uint256)
|
// Solidity: function numProposals() returns(uint256)
|
||||||
func (dAO *DAO) PackNumProposals() []byte {
|
func (dAO *DAO) PackNumProposals() []byte {
|
||||||
|
|
@ -313,6 +413,15 @@ func (dAO *DAO) PackNumProposals() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackNumProposals is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x400e3949. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function numProposals() returns(uint256)
|
||||||
|
func (dAO *DAO) TryPackNumProposals() ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("numProposals")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackNumProposals is the Go binding that unpacks the parameters returned
|
// UnpackNumProposals is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x400e3949.
|
// from invoking the contract method with ID 0x400e3949.
|
||||||
//
|
//
|
||||||
|
|
@ -323,11 +432,12 @@ func (dAO *DAO) UnpackNumProposals(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackOwner is the Go binding used to pack the parameters required for calling
|
// PackOwner is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x8da5cb5b.
|
// the contract method with ID 0x8da5cb5b. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function owner() returns(address)
|
// Solidity: function owner() returns(address)
|
||||||
func (dAO *DAO) PackOwner() []byte {
|
func (dAO *DAO) PackOwner() []byte {
|
||||||
|
|
@ -338,6 +448,15 @@ func (dAO *DAO) PackOwner() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackOwner is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x8da5cb5b. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function owner() returns(address)
|
||||||
|
func (dAO *DAO) TryPackOwner() ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("owner")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackOwner is the Go binding that unpacks the parameters returned
|
// UnpackOwner is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x8da5cb5b.
|
// from invoking the contract method with ID 0x8da5cb5b.
|
||||||
//
|
//
|
||||||
|
|
@ -348,11 +467,12 @@ func (dAO *DAO) UnpackOwner(data []byte) (common.Address, error) {
|
||||||
return *new(common.Address), err
|
return *new(common.Address), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
|
out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackProposals is the Go binding used to pack the parameters required for calling
|
// PackProposals is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x013cf08b.
|
// the contract method with ID 0x013cf08b. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function proposals(uint256 ) returns(address recipient, uint256 amount, string description, uint256 votingDeadline, bool executed, bool proposalPassed, uint256 numberOfVotes, int256 currentResult, bytes32 proposalHash)
|
// Solidity: function proposals(uint256 ) returns(address recipient, uint256 amount, string description, uint256 votingDeadline, bool executed, bool proposalPassed, uint256 numberOfVotes, int256 currentResult, bytes32 proposalHash)
|
||||||
func (dAO *DAO) PackProposals(arg0 *big.Int) []byte {
|
func (dAO *DAO) PackProposals(arg0 *big.Int) []byte {
|
||||||
|
|
@ -363,6 +483,15 @@ func (dAO *DAO) PackProposals(arg0 *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackProposals is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x013cf08b. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function proposals(uint256 ) returns(address recipient, uint256 amount, string description, uint256 votingDeadline, bool executed, bool proposalPassed, uint256 numberOfVotes, int256 currentResult, bytes32 proposalHash)
|
||||||
|
func (dAO *DAO) TryPackProposals(arg0 *big.Int) ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("proposals", arg0)
|
||||||
|
}
|
||||||
|
|
||||||
// ProposalsOutput serves as a container for the return parameters of contract
|
// ProposalsOutput serves as a container for the return parameters of contract
|
||||||
// method Proposals.
|
// method Proposals.
|
||||||
type ProposalsOutput struct {
|
type ProposalsOutput struct {
|
||||||
|
|
@ -396,12 +525,12 @@ func (dAO *DAO) UnpackProposals(data []byte) (ProposalsOutput, error) {
|
||||||
outstruct.NumberOfVotes = abi.ConvertType(out[6], new(big.Int)).(*big.Int)
|
outstruct.NumberOfVotes = abi.ConvertType(out[6], new(big.Int)).(*big.Int)
|
||||||
outstruct.CurrentResult = abi.ConvertType(out[7], new(big.Int)).(*big.Int)
|
outstruct.CurrentResult = abi.ConvertType(out[7], new(big.Int)).(*big.Int)
|
||||||
outstruct.ProposalHash = *abi.ConvertType(out[8], new([32]byte)).(*[32]byte)
|
outstruct.ProposalHash = *abi.ConvertType(out[8], new([32]byte)).(*[32]byte)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackTransferOwnership is the Go binding used to pack the parameters required for calling
|
// PackTransferOwnership is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xf2fde38b.
|
// the contract method with ID 0xf2fde38b. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function transferOwnership(address newOwner) returns()
|
// Solidity: function transferOwnership(address newOwner) returns()
|
||||||
func (dAO *DAO) PackTransferOwnership(newOwner common.Address) []byte {
|
func (dAO *DAO) PackTransferOwnership(newOwner common.Address) []byte {
|
||||||
|
|
@ -412,8 +541,18 @@ func (dAO *DAO) PackTransferOwnership(newOwner common.Address) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackTransferOwnership is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xf2fde38b. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function transferOwnership(address newOwner) returns()
|
||||||
|
func (dAO *DAO) TryPackTransferOwnership(newOwner common.Address) ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("transferOwnership", newOwner)
|
||||||
|
}
|
||||||
|
|
||||||
// PackVote is the Go binding used to pack the parameters required for calling
|
// PackVote is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xd3c0715b.
|
// the contract method with ID 0xd3c0715b. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function vote(uint256 proposalNumber, bool supportsProposal, string justificationText) returns(uint256 voteID)
|
// Solidity: function vote(uint256 proposalNumber, bool supportsProposal, string justificationText) returns(uint256 voteID)
|
||||||
func (dAO *DAO) PackVote(proposalNumber *big.Int, supportsProposal bool, justificationText string) []byte {
|
func (dAO *DAO) PackVote(proposalNumber *big.Int, supportsProposal bool, justificationText string) []byte {
|
||||||
|
|
@ -424,6 +563,15 @@ func (dAO *DAO) PackVote(proposalNumber *big.Int, supportsProposal bool, justifi
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackVote is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xd3c0715b. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function vote(uint256 proposalNumber, bool supportsProposal, string justificationText) returns(uint256 voteID)
|
||||||
|
func (dAO *DAO) TryPackVote(proposalNumber *big.Int, supportsProposal bool, justificationText string) ([]byte, error) {
|
||||||
|
return dAO.abi.Pack("vote", proposalNumber, supportsProposal, justificationText)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackVote is the Go binding that unpacks the parameters returned
|
// UnpackVote is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xd3c0715b.
|
// from invoking the contract method with ID 0xd3c0715b.
|
||||||
//
|
//
|
||||||
|
|
@ -434,7 +582,7 @@ func (dAO *DAO) UnpackVote(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DAOChangeOfRules represents a ChangeOfRules event raised by the DAO contract.
|
// DAOChangeOfRules represents a ChangeOfRules event raised by the DAO contract.
|
||||||
|
|
@ -458,7 +606,7 @@ func (DAOChangeOfRules) ContractEventName() string {
|
||||||
// Solidity: event ChangeOfRules(uint256 minimumQuorum, uint256 debatingPeriodInMinutes, int256 majorityMargin)
|
// Solidity: event ChangeOfRules(uint256 minimumQuorum, uint256 debatingPeriodInMinutes, int256 majorityMargin)
|
||||||
func (dAO *DAO) UnpackChangeOfRulesEvent(log *types.Log) (*DAOChangeOfRules, error) {
|
func (dAO *DAO) UnpackChangeOfRulesEvent(log *types.Log) (*DAOChangeOfRules, error) {
|
||||||
event := "ChangeOfRules"
|
event := "ChangeOfRules"
|
||||||
if log.Topics[0] != dAO.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != dAO.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(DAOChangeOfRules)
|
out := new(DAOChangeOfRules)
|
||||||
|
|
@ -500,7 +648,7 @@ func (DAOMembershipChanged) ContractEventName() string {
|
||||||
// Solidity: event MembershipChanged(address member, bool isMember)
|
// Solidity: event MembershipChanged(address member, bool isMember)
|
||||||
func (dAO *DAO) UnpackMembershipChangedEvent(log *types.Log) (*DAOMembershipChanged, error) {
|
func (dAO *DAO) UnpackMembershipChangedEvent(log *types.Log) (*DAOMembershipChanged, error) {
|
||||||
event := "MembershipChanged"
|
event := "MembershipChanged"
|
||||||
if log.Topics[0] != dAO.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != dAO.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(DAOMembershipChanged)
|
out := new(DAOMembershipChanged)
|
||||||
|
|
@ -544,7 +692,7 @@ func (DAOProposalAdded) ContractEventName() string {
|
||||||
// Solidity: event ProposalAdded(uint256 proposalID, address recipient, uint256 amount, string description)
|
// Solidity: event ProposalAdded(uint256 proposalID, address recipient, uint256 amount, string description)
|
||||||
func (dAO *DAO) UnpackProposalAddedEvent(log *types.Log) (*DAOProposalAdded, error) {
|
func (dAO *DAO) UnpackProposalAddedEvent(log *types.Log) (*DAOProposalAdded, error) {
|
||||||
event := "ProposalAdded"
|
event := "ProposalAdded"
|
||||||
if log.Topics[0] != dAO.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != dAO.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(DAOProposalAdded)
|
out := new(DAOProposalAdded)
|
||||||
|
|
@ -588,7 +736,7 @@ func (DAOProposalTallied) ContractEventName() string {
|
||||||
// Solidity: event ProposalTallied(uint256 proposalID, int256 result, uint256 quorum, bool active)
|
// Solidity: event ProposalTallied(uint256 proposalID, int256 result, uint256 quorum, bool active)
|
||||||
func (dAO *DAO) UnpackProposalTalliedEvent(log *types.Log) (*DAOProposalTallied, error) {
|
func (dAO *DAO) UnpackProposalTalliedEvent(log *types.Log) (*DAOProposalTallied, error) {
|
||||||
event := "ProposalTallied"
|
event := "ProposalTallied"
|
||||||
if log.Topics[0] != dAO.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != dAO.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(DAOProposalTallied)
|
out := new(DAOProposalTallied)
|
||||||
|
|
@ -632,7 +780,7 @@ func (DAOVoted) ContractEventName() string {
|
||||||
// Solidity: event Voted(uint256 proposalID, bool position, address voter, string justification)
|
// Solidity: event Voted(uint256 proposalID, bool position, address voter, string justification)
|
||||||
func (dAO *DAO) UnpackVotedEvent(log *types.Log) (*DAOVoted, error) {
|
func (dAO *DAO) UnpackVotedEvent(log *types.Log) (*DAOVoted, error) {
|
||||||
event := "Voted"
|
event := "Voted"
|
||||||
if log.Topics[0] != dAO.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != dAO.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(DAOVoted)
|
out := new(DAOVoted)
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,8 @@ func (c *DeeplyNestedArray) Instance(backend bind.ContractBackend, addr common.A
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackDeepUint64Array is the Go binding used to pack the parameters required for calling
|
// PackDeepUint64Array is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x98ed1856.
|
// the contract method with ID 0x98ed1856. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function deepUint64Array(uint256 , uint256 , uint256 ) view returns(uint64)
|
// Solidity: function deepUint64Array(uint256 , uint256 , uint256 ) view returns(uint64)
|
||||||
func (deeplyNestedArray *DeeplyNestedArray) PackDeepUint64Array(arg0 *big.Int, arg1 *big.Int, arg2 *big.Int) []byte {
|
func (deeplyNestedArray *DeeplyNestedArray) PackDeepUint64Array(arg0 *big.Int, arg1 *big.Int, arg2 *big.Int) []byte {
|
||||||
|
|
@ -63,6 +64,15 @@ func (deeplyNestedArray *DeeplyNestedArray) PackDeepUint64Array(arg0 *big.Int, a
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackDeepUint64Array is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x98ed1856. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function deepUint64Array(uint256 , uint256 , uint256 ) view returns(uint64)
|
||||||
|
func (deeplyNestedArray *DeeplyNestedArray) TryPackDeepUint64Array(arg0 *big.Int, arg1 *big.Int, arg2 *big.Int) ([]byte, error) {
|
||||||
|
return deeplyNestedArray.abi.Pack("deepUint64Array", arg0, arg1, arg2)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackDeepUint64Array is the Go binding that unpacks the parameters returned
|
// UnpackDeepUint64Array is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x98ed1856.
|
// from invoking the contract method with ID 0x98ed1856.
|
||||||
//
|
//
|
||||||
|
|
@ -73,11 +83,12 @@ func (deeplyNestedArray *DeeplyNestedArray) UnpackDeepUint64Array(data []byte) (
|
||||||
return *new(uint64), err
|
return *new(uint64), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
|
out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackRetrieveDeepArray is the Go binding used to pack the parameters required for calling
|
// PackRetrieveDeepArray is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x8ed4573a.
|
// the contract method with ID 0x8ed4573a. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function retrieveDeepArray() view returns(uint64[3][4][5])
|
// Solidity: function retrieveDeepArray() view returns(uint64[3][4][5])
|
||||||
func (deeplyNestedArray *DeeplyNestedArray) PackRetrieveDeepArray() []byte {
|
func (deeplyNestedArray *DeeplyNestedArray) PackRetrieveDeepArray() []byte {
|
||||||
|
|
@ -88,6 +99,15 @@ func (deeplyNestedArray *DeeplyNestedArray) PackRetrieveDeepArray() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackRetrieveDeepArray is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x8ed4573a. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function retrieveDeepArray() view returns(uint64[3][4][5])
|
||||||
|
func (deeplyNestedArray *DeeplyNestedArray) TryPackRetrieveDeepArray() ([]byte, error) {
|
||||||
|
return deeplyNestedArray.abi.Pack("retrieveDeepArray")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackRetrieveDeepArray is the Go binding that unpacks the parameters returned
|
// UnpackRetrieveDeepArray is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x8ed4573a.
|
// from invoking the contract method with ID 0x8ed4573a.
|
||||||
//
|
//
|
||||||
|
|
@ -98,11 +118,12 @@ func (deeplyNestedArray *DeeplyNestedArray) UnpackRetrieveDeepArray(data []byte)
|
||||||
return *new([5][4][3]uint64), err
|
return *new([5][4][3]uint64), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new([5][4][3]uint64)).(*[5][4][3]uint64)
|
out0 := *abi.ConvertType(out[0], new([5][4][3]uint64)).(*[5][4][3]uint64)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackStoreDeepUintArray is the Go binding used to pack the parameters required for calling
|
// PackStoreDeepUintArray is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x34424855.
|
// the contract method with ID 0x34424855. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function storeDeepUintArray(uint64[3][4][5] arr) returns()
|
// Solidity: function storeDeepUintArray(uint64[3][4][5] arr) returns()
|
||||||
func (deeplyNestedArray *DeeplyNestedArray) PackStoreDeepUintArray(arr [5][4][3]uint64) []byte {
|
func (deeplyNestedArray *DeeplyNestedArray) PackStoreDeepUintArray(arr [5][4][3]uint64) []byte {
|
||||||
|
|
@ -112,3 +133,12 @@ func (deeplyNestedArray *DeeplyNestedArray) PackStoreDeepUintArray(arr [5][4][3]
|
||||||
}
|
}
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackStoreDeepUintArray is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x34424855. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function storeDeepUintArray(uint64[3][4][5] arr) returns()
|
||||||
|
func (deeplyNestedArray *DeeplyNestedArray) TryPackStoreDeepUintArray(arr [5][4][3]uint64) ([]byte, error) {
|
||||||
|
return deeplyNestedArray.abi.Pack("storeDeepUintArray", arr)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,7 @@ func (EventCheckerDynamic) ContractEventName() string {
|
||||||
// Solidity: event dynamic(string indexed idxStr, bytes indexed idxDat, string str, bytes dat)
|
// Solidity: event dynamic(string indexed idxStr, bytes indexed idxDat, string str, bytes dat)
|
||||||
func (eventChecker *EventChecker) UnpackDynamicEvent(log *types.Log) (*EventCheckerDynamic, error) {
|
func (eventChecker *EventChecker) UnpackDynamicEvent(log *types.Log) (*EventCheckerDynamic, error) {
|
||||||
event := "dynamic"
|
event := "dynamic"
|
||||||
if log.Topics[0] != eventChecker.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != eventChecker.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(EventCheckerDynamic)
|
out := new(EventCheckerDynamic)
|
||||||
|
|
@ -112,7 +112,7 @@ func (EventCheckerEmpty) ContractEventName() string {
|
||||||
// Solidity: event empty()
|
// Solidity: event empty()
|
||||||
func (eventChecker *EventChecker) UnpackEmptyEvent(log *types.Log) (*EventCheckerEmpty, error) {
|
func (eventChecker *EventChecker) UnpackEmptyEvent(log *types.Log) (*EventCheckerEmpty, error) {
|
||||||
event := "empty"
|
event := "empty"
|
||||||
if log.Topics[0] != eventChecker.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != eventChecker.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(EventCheckerEmpty)
|
out := new(EventCheckerEmpty)
|
||||||
|
|
@ -154,7 +154,7 @@ func (EventCheckerIndexed) ContractEventName() string {
|
||||||
// Solidity: event indexed(address indexed addr, int256 indexed num)
|
// Solidity: event indexed(address indexed addr, int256 indexed num)
|
||||||
func (eventChecker *EventChecker) UnpackIndexedEvent(log *types.Log) (*EventCheckerIndexed, error) {
|
func (eventChecker *EventChecker) UnpackIndexedEvent(log *types.Log) (*EventCheckerIndexed, error) {
|
||||||
event := "indexed"
|
event := "indexed"
|
||||||
if log.Topics[0] != eventChecker.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != eventChecker.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(EventCheckerIndexed)
|
out := new(EventCheckerIndexed)
|
||||||
|
|
@ -196,7 +196,7 @@ func (EventCheckerMixed) ContractEventName() string {
|
||||||
// Solidity: event mixed(address indexed addr, int256 num)
|
// Solidity: event mixed(address indexed addr, int256 num)
|
||||||
func (eventChecker *EventChecker) UnpackMixedEvent(log *types.Log) (*EventCheckerMixed, error) {
|
func (eventChecker *EventChecker) UnpackMixedEvent(log *types.Log) (*EventCheckerMixed, error) {
|
||||||
event := "mixed"
|
event := "mixed"
|
||||||
if log.Topics[0] != eventChecker.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != eventChecker.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(EventCheckerMixed)
|
out := new(EventCheckerMixed)
|
||||||
|
|
@ -238,7 +238,7 @@ func (EventCheckerUnnamed) ContractEventName() string {
|
||||||
// Solidity: event unnamed(uint256 indexed arg0, uint256 indexed arg1)
|
// Solidity: event unnamed(uint256 indexed arg0, uint256 indexed arg1)
|
||||||
func (eventChecker *EventChecker) UnpackUnnamedEvent(log *types.Log) (*EventCheckerUnnamed, error) {
|
func (eventChecker *EventChecker) UnpackUnnamedEvent(log *types.Log) (*EventCheckerUnnamed, error) {
|
||||||
event := "unnamed"
|
event := "unnamed"
|
||||||
if log.Topics[0] != eventChecker.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != eventChecker.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(EventCheckerUnnamed)
|
out := new(EventCheckerUnnamed)
|
||||||
|
|
|
||||||
15
accounts/abi/abigen/testdata/v2/getter.go.txt
vendored
15
accounts/abi/abigen/testdata/v2/getter.go.txt
vendored
|
|
@ -52,7 +52,8 @@ func (c *Getter) Instance(backend bind.ContractBackend, addr common.Address) *bi
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackGetter is the Go binding used to pack the parameters required for calling
|
// PackGetter is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x993a04b7.
|
// the contract method with ID 0x993a04b7. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function getter() returns(string, int256, bytes32)
|
// Solidity: function getter() returns(string, int256, bytes32)
|
||||||
func (getter *Getter) PackGetter() []byte {
|
func (getter *Getter) PackGetter() []byte {
|
||||||
|
|
@ -63,6 +64,15 @@ func (getter *Getter) PackGetter() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackGetter is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x993a04b7. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function getter() returns(string, int256, bytes32)
|
||||||
|
func (getter *Getter) TryPackGetter() ([]byte, error) {
|
||||||
|
return getter.abi.Pack("getter")
|
||||||
|
}
|
||||||
|
|
||||||
// GetterOutput serves as a container for the return parameters of contract
|
// GetterOutput serves as a container for the return parameters of contract
|
||||||
// method Getter.
|
// method Getter.
|
||||||
type GetterOutput struct {
|
type GetterOutput struct {
|
||||||
|
|
@ -84,6 +94,5 @@ func (getter *Getter) UnpackGetter(data []byte) (GetterOutput, error) {
|
||||||
outstruct.Arg0 = *abi.ConvertType(out[0], new(string)).(*string)
|
outstruct.Arg0 = *abi.ConvertType(out[0], new(string)).(*string)
|
||||||
outstruct.Arg1 = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
outstruct.Arg1 = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
||||||
outstruct.Arg2 = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte)
|
outstruct.Arg2 = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,8 @@ func (c *IdentifierCollision) Instance(backend bind.ContractBackend, addr common
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackMyVar is the Go binding used to pack the parameters required for calling
|
// PackMyVar is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x4ef1f0ad.
|
// the contract method with ID 0x4ef1f0ad. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function MyVar() view returns(uint256)
|
// Solidity: function MyVar() view returns(uint256)
|
||||||
func (identifierCollision *IdentifierCollision) PackMyVar() []byte {
|
func (identifierCollision *IdentifierCollision) PackMyVar() []byte {
|
||||||
|
|
@ -63,6 +64,15 @@ func (identifierCollision *IdentifierCollision) PackMyVar() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackMyVar is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x4ef1f0ad. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function MyVar() view returns(uint256)
|
||||||
|
func (identifierCollision *IdentifierCollision) TryPackMyVar() ([]byte, error) {
|
||||||
|
return identifierCollision.abi.Pack("MyVar")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackMyVar is the Go binding that unpacks the parameters returned
|
// UnpackMyVar is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x4ef1f0ad.
|
// from invoking the contract method with ID 0x4ef1f0ad.
|
||||||
//
|
//
|
||||||
|
|
@ -73,11 +83,12 @@ func (identifierCollision *IdentifierCollision) UnpackMyVar(data []byte) (*big.I
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackPubVar is the Go binding used to pack the parameters required for calling
|
// PackPubVar is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x01ad4d87.
|
// the contract method with ID 0x01ad4d87. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function _myVar() view returns(uint256)
|
// Solidity: function _myVar() view returns(uint256)
|
||||||
func (identifierCollision *IdentifierCollision) PackPubVar() []byte {
|
func (identifierCollision *IdentifierCollision) PackPubVar() []byte {
|
||||||
|
|
@ -88,6 +99,15 @@ func (identifierCollision *IdentifierCollision) PackPubVar() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackPubVar is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x01ad4d87. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function _myVar() view returns(uint256)
|
||||||
|
func (identifierCollision *IdentifierCollision) TryPackPubVar() ([]byte, error) {
|
||||||
|
return identifierCollision.abi.Pack("_myVar")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackPubVar is the Go binding that unpacks the parameters returned
|
// UnpackPubVar is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x01ad4d87.
|
// from invoking the contract method with ID 0x01ad4d87.
|
||||||
//
|
//
|
||||||
|
|
@ -98,5 +118,5 @@ func (identifierCollision *IdentifierCollision) UnpackPubVar(data []byte) (*big.
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,8 @@ func (c *InputChecker) Instance(backend bind.ContractBackend, addr common.Addres
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackAnonInput is the Go binding used to pack the parameters required for calling
|
// PackAnonInput is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x3e708e82.
|
// the contract method with ID 0x3e708e82. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function anonInput(string ) returns()
|
// Solidity: function anonInput(string ) returns()
|
||||||
func (inputChecker *InputChecker) PackAnonInput(arg0 string) []byte {
|
func (inputChecker *InputChecker) PackAnonInput(arg0 string) []byte {
|
||||||
|
|
@ -62,8 +63,18 @@ func (inputChecker *InputChecker) PackAnonInput(arg0 string) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackAnonInput is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x3e708e82. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function anonInput(string ) returns()
|
||||||
|
func (inputChecker *InputChecker) TryPackAnonInput(arg0 string) ([]byte, error) {
|
||||||
|
return inputChecker.abi.Pack("anonInput", arg0)
|
||||||
|
}
|
||||||
|
|
||||||
// PackAnonInputs is the Go binding used to pack the parameters required for calling
|
// PackAnonInputs is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x28160527.
|
// the contract method with ID 0x28160527. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function anonInputs(string , string ) returns()
|
// Solidity: function anonInputs(string , string ) returns()
|
||||||
func (inputChecker *InputChecker) PackAnonInputs(arg0 string, arg1 string) []byte {
|
func (inputChecker *InputChecker) PackAnonInputs(arg0 string, arg1 string) []byte {
|
||||||
|
|
@ -74,8 +85,18 @@ func (inputChecker *InputChecker) PackAnonInputs(arg0 string, arg1 string) []byt
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackAnonInputs is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x28160527. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function anonInputs(string , string ) returns()
|
||||||
|
func (inputChecker *InputChecker) TryPackAnonInputs(arg0 string, arg1 string) ([]byte, error) {
|
||||||
|
return inputChecker.abi.Pack("anonInputs", arg0, arg1)
|
||||||
|
}
|
||||||
|
|
||||||
// PackMixedInputs is the Go binding used to pack the parameters required for calling
|
// PackMixedInputs is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xc689ebdc.
|
// the contract method with ID 0xc689ebdc. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function mixedInputs(string , string str) returns()
|
// Solidity: function mixedInputs(string , string str) returns()
|
||||||
func (inputChecker *InputChecker) PackMixedInputs(arg0 string, str string) []byte {
|
func (inputChecker *InputChecker) PackMixedInputs(arg0 string, str string) []byte {
|
||||||
|
|
@ -86,8 +107,18 @@ func (inputChecker *InputChecker) PackMixedInputs(arg0 string, str string) []byt
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackMixedInputs is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xc689ebdc. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function mixedInputs(string , string str) returns()
|
||||||
|
func (inputChecker *InputChecker) TryPackMixedInputs(arg0 string, str string) ([]byte, error) {
|
||||||
|
return inputChecker.abi.Pack("mixedInputs", arg0, str)
|
||||||
|
}
|
||||||
|
|
||||||
// PackNamedInput is the Go binding used to pack the parameters required for calling
|
// PackNamedInput is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x0d402005.
|
// the contract method with ID 0x0d402005. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function namedInput(string str) returns()
|
// Solidity: function namedInput(string str) returns()
|
||||||
func (inputChecker *InputChecker) PackNamedInput(str string) []byte {
|
func (inputChecker *InputChecker) PackNamedInput(str string) []byte {
|
||||||
|
|
@ -98,8 +129,18 @@ func (inputChecker *InputChecker) PackNamedInput(str string) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackNamedInput is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x0d402005. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function namedInput(string str) returns()
|
||||||
|
func (inputChecker *InputChecker) TryPackNamedInput(str string) ([]byte, error) {
|
||||||
|
return inputChecker.abi.Pack("namedInput", str)
|
||||||
|
}
|
||||||
|
|
||||||
// PackNamedInputs is the Go binding used to pack the parameters required for calling
|
// PackNamedInputs is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x63c796ed.
|
// the contract method with ID 0x63c796ed. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function namedInputs(string str1, string str2) returns()
|
// Solidity: function namedInputs(string str1, string str2) returns()
|
||||||
func (inputChecker *InputChecker) PackNamedInputs(str1 string, str2 string) []byte {
|
func (inputChecker *InputChecker) PackNamedInputs(str1 string, str2 string) []byte {
|
||||||
|
|
@ -110,8 +151,18 @@ func (inputChecker *InputChecker) PackNamedInputs(str1 string, str2 string) []by
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackNamedInputs is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x63c796ed. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function namedInputs(string str1, string str2) returns()
|
||||||
|
func (inputChecker *InputChecker) TryPackNamedInputs(str1 string, str2 string) ([]byte, error) {
|
||||||
|
return inputChecker.abi.Pack("namedInputs", str1, str2)
|
||||||
|
}
|
||||||
|
|
||||||
// PackNoInput is the Go binding used to pack the parameters required for calling
|
// PackNoInput is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x53539029.
|
// the contract method with ID 0x53539029. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function noInput() returns()
|
// Solidity: function noInput() returns()
|
||||||
func (inputChecker *InputChecker) PackNoInput() []byte {
|
func (inputChecker *InputChecker) PackNoInput() []byte {
|
||||||
|
|
@ -121,3 +172,12 @@ func (inputChecker *InputChecker) PackNoInput() []byte {
|
||||||
}
|
}
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackNoInput is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x53539029. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function noInput() returns()
|
||||||
|
func (inputChecker *InputChecker) TryPackNoInput() ([]byte, error) {
|
||||||
|
return inputChecker.abi.Pack("noInput")
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,8 @@ func (interactor *Interactor) PackConstructor(str string) []byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackDeployString is the Go binding used to pack the parameters required for calling
|
// PackDeployString is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x6874e809.
|
// the contract method with ID 0x6874e809. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function deployString() returns(string)
|
// Solidity: function deployString() returns(string)
|
||||||
func (interactor *Interactor) PackDeployString() []byte {
|
func (interactor *Interactor) PackDeployString() []byte {
|
||||||
|
|
@ -75,6 +76,15 @@ func (interactor *Interactor) PackDeployString() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackDeployString is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x6874e809. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function deployString() returns(string)
|
||||||
|
func (interactor *Interactor) TryPackDeployString() ([]byte, error) {
|
||||||
|
return interactor.abi.Pack("deployString")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackDeployString is the Go binding that unpacks the parameters returned
|
// UnpackDeployString is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x6874e809.
|
// from invoking the contract method with ID 0x6874e809.
|
||||||
//
|
//
|
||||||
|
|
@ -85,11 +95,12 @@ func (interactor *Interactor) UnpackDeployString(data []byte) (string, error) {
|
||||||
return *new(string), err
|
return *new(string), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(string)).(*string)
|
out0 := *abi.ConvertType(out[0], new(string)).(*string)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackTransact is the Go binding used to pack the parameters required for calling
|
// PackTransact is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xd736c513.
|
// the contract method with ID 0xd736c513. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function transact(string str) returns()
|
// Solidity: function transact(string str) returns()
|
||||||
func (interactor *Interactor) PackTransact(str string) []byte {
|
func (interactor *Interactor) PackTransact(str string) []byte {
|
||||||
|
|
@ -100,8 +111,18 @@ func (interactor *Interactor) PackTransact(str string) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackTransact is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xd736c513. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function transact(string str) returns()
|
||||||
|
func (interactor *Interactor) TryPackTransact(str string) ([]byte, error) {
|
||||||
|
return interactor.abi.Pack("transact", str)
|
||||||
|
}
|
||||||
|
|
||||||
// PackTransactString is the Go binding used to pack the parameters required for calling
|
// PackTransactString is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x0d86a0e1.
|
// the contract method with ID 0x0d86a0e1. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function transactString() returns(string)
|
// Solidity: function transactString() returns(string)
|
||||||
func (interactor *Interactor) PackTransactString() []byte {
|
func (interactor *Interactor) PackTransactString() []byte {
|
||||||
|
|
@ -112,6 +133,15 @@ func (interactor *Interactor) PackTransactString() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackTransactString is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x0d86a0e1. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function transactString() returns(string)
|
||||||
|
func (interactor *Interactor) TryPackTransactString() ([]byte, error) {
|
||||||
|
return interactor.abi.Pack("transactString")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackTransactString is the Go binding that unpacks the parameters returned
|
// UnpackTransactString is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x0d86a0e1.
|
// from invoking the contract method with ID 0x0d86a0e1.
|
||||||
//
|
//
|
||||||
|
|
@ -122,5 +152,5 @@ func (interactor *Interactor) UnpackTransactString(data []byte) (string, error)
|
||||||
return *new(string), err
|
return *new(string), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(string)).(*string)
|
out0 := *abi.ConvertType(out[0], new(string)).(*string)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,8 @@ func (c *NameConflict) Instance(backend bind.ContractBackend, addr common.Addres
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackAddRequest is the Go binding used to pack the parameters required for calling
|
// PackAddRequest is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xcce7b048.
|
// the contract method with ID 0xcce7b048. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function addRequest((bytes,bytes) req) pure returns()
|
// Solidity: function addRequest((bytes,bytes) req) pure returns()
|
||||||
func (nameConflict *NameConflict) PackAddRequest(req Oraclerequest) []byte {
|
func (nameConflict *NameConflict) PackAddRequest(req Oraclerequest) []byte {
|
||||||
|
|
@ -69,8 +70,18 @@ func (nameConflict *NameConflict) PackAddRequest(req Oraclerequest) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackAddRequest is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xcce7b048. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function addRequest((bytes,bytes) req) pure returns()
|
||||||
|
func (nameConflict *NameConflict) TryPackAddRequest(req Oraclerequest) ([]byte, error) {
|
||||||
|
return nameConflict.abi.Pack("addRequest", req)
|
||||||
|
}
|
||||||
|
|
||||||
// PackGetRequest is the Go binding used to pack the parameters required for calling
|
// PackGetRequest is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xc2bb515f.
|
// the contract method with ID 0xc2bb515f. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function getRequest() pure returns((bytes,bytes))
|
// Solidity: function getRequest() pure returns((bytes,bytes))
|
||||||
func (nameConflict *NameConflict) PackGetRequest() []byte {
|
func (nameConflict *NameConflict) PackGetRequest() []byte {
|
||||||
|
|
@ -81,6 +92,15 @@ func (nameConflict *NameConflict) PackGetRequest() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackGetRequest is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xc2bb515f. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function getRequest() pure returns((bytes,bytes))
|
||||||
|
func (nameConflict *NameConflict) TryPackGetRequest() ([]byte, error) {
|
||||||
|
return nameConflict.abi.Pack("getRequest")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackGetRequest is the Go binding that unpacks the parameters returned
|
// UnpackGetRequest is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xc2bb515f.
|
// from invoking the contract method with ID 0xc2bb515f.
|
||||||
//
|
//
|
||||||
|
|
@ -91,7 +111,7 @@ func (nameConflict *NameConflict) UnpackGetRequest(data []byte) (Oraclerequest,
|
||||||
return *new(Oraclerequest), err
|
return *new(Oraclerequest), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(Oraclerequest)).(*Oraclerequest)
|
out0 := *abi.ConvertType(out[0], new(Oraclerequest)).(*Oraclerequest)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// NameConflictLog represents a log event raised by the NameConflict contract.
|
// NameConflictLog represents a log event raised by the NameConflict contract.
|
||||||
|
|
@ -114,7 +134,7 @@ func (NameConflictLog) ContractEventName() string {
|
||||||
// Solidity: event log(int256 msg, int256 _msg)
|
// Solidity: event log(int256 msg, int256 _msg)
|
||||||
func (nameConflict *NameConflict) UnpackLogEvent(log *types.Log) (*NameConflictLog, error) {
|
func (nameConflict *NameConflict) UnpackLogEvent(log *types.Log) (*NameConflictLog, error) {
|
||||||
event := "log"
|
event := "log"
|
||||||
if log.Topics[0] != nameConflict.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != nameConflict.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(NameConflictLog)
|
out := new(NameConflictLog)
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,8 @@ func (c *NumericMethodName) Instance(backend bind.ContractBackend, addr common.A
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackE1test is the Go binding used to pack the parameters required for calling
|
// PackE1test is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xffa02795.
|
// the contract method with ID 0xffa02795. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function _1test() pure returns()
|
// Solidity: function _1test() pure returns()
|
||||||
func (numericMethodName *NumericMethodName) PackE1test() []byte {
|
func (numericMethodName *NumericMethodName) PackE1test() []byte {
|
||||||
|
|
@ -63,8 +64,18 @@ func (numericMethodName *NumericMethodName) PackE1test() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackE1test is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xffa02795. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function _1test() pure returns()
|
||||||
|
func (numericMethodName *NumericMethodName) TryPackE1test() ([]byte, error) {
|
||||||
|
return numericMethodName.abi.Pack("_1test")
|
||||||
|
}
|
||||||
|
|
||||||
// PackE1test0 is the Go binding used to pack the parameters required for calling
|
// PackE1test0 is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xd02767c7.
|
// the contract method with ID 0xd02767c7. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function __1test() pure returns()
|
// Solidity: function __1test() pure returns()
|
||||||
func (numericMethodName *NumericMethodName) PackE1test0() []byte {
|
func (numericMethodName *NumericMethodName) PackE1test0() []byte {
|
||||||
|
|
@ -75,8 +86,18 @@ func (numericMethodName *NumericMethodName) PackE1test0() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackE1test0 is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xd02767c7. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function __1test() pure returns()
|
||||||
|
func (numericMethodName *NumericMethodName) TryPackE1test0() ([]byte, error) {
|
||||||
|
return numericMethodName.abi.Pack("__1test")
|
||||||
|
}
|
||||||
|
|
||||||
// PackE2test is the Go binding used to pack the parameters required for calling
|
// PackE2test is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x9d993132.
|
// the contract method with ID 0x9d993132. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function __2test() pure returns()
|
// Solidity: function __2test() pure returns()
|
||||||
func (numericMethodName *NumericMethodName) PackE2test() []byte {
|
func (numericMethodName *NumericMethodName) PackE2test() []byte {
|
||||||
|
|
@ -87,6 +108,15 @@ func (numericMethodName *NumericMethodName) PackE2test() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackE2test is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x9d993132. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function __2test() pure returns()
|
||||||
|
func (numericMethodName *NumericMethodName) TryPackE2test() ([]byte, error) {
|
||||||
|
return numericMethodName.abi.Pack("__2test")
|
||||||
|
}
|
||||||
|
|
||||||
// NumericMethodNameE1TestEvent represents a _1TestEvent event raised by the NumericMethodName contract.
|
// NumericMethodNameE1TestEvent represents a _1TestEvent event raised by the NumericMethodName contract.
|
||||||
type NumericMethodNameE1TestEvent struct {
|
type NumericMethodNameE1TestEvent struct {
|
||||||
Param common.Address
|
Param common.Address
|
||||||
|
|
@ -106,7 +136,7 @@ func (NumericMethodNameE1TestEvent) ContractEventName() string {
|
||||||
// Solidity: event _1TestEvent(address _param)
|
// Solidity: event _1TestEvent(address _param)
|
||||||
func (numericMethodName *NumericMethodName) UnpackE1TestEventEvent(log *types.Log) (*NumericMethodNameE1TestEvent, error) {
|
func (numericMethodName *NumericMethodName) UnpackE1TestEventEvent(log *types.Log) (*NumericMethodNameE1TestEvent, error) {
|
||||||
event := "_1TestEvent"
|
event := "_1TestEvent"
|
||||||
if log.Topics[0] != numericMethodName.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != numericMethodName.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(NumericMethodNameE1TestEvent)
|
out := new(NumericMethodNameE1TestEvent)
|
||||||
|
|
|
||||||
100
accounts/abi/abigen/testdata/v2/outputchecker.go.txt
vendored
100
accounts/abi/abigen/testdata/v2/outputchecker.go.txt
vendored
|
|
@ -51,7 +51,8 @@ func (c *OutputChecker) Instance(backend bind.ContractBackend, addr common.Addre
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackAnonOutput is the Go binding used to pack the parameters required for calling
|
// PackAnonOutput is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x008bda05.
|
// the contract method with ID 0x008bda05. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function anonOutput() returns(string)
|
// Solidity: function anonOutput() returns(string)
|
||||||
func (outputChecker *OutputChecker) PackAnonOutput() []byte {
|
func (outputChecker *OutputChecker) PackAnonOutput() []byte {
|
||||||
|
|
@ -62,6 +63,15 @@ func (outputChecker *OutputChecker) PackAnonOutput() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackAnonOutput is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x008bda05. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function anonOutput() returns(string)
|
||||||
|
func (outputChecker *OutputChecker) TryPackAnonOutput() ([]byte, error) {
|
||||||
|
return outputChecker.abi.Pack("anonOutput")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackAnonOutput is the Go binding that unpacks the parameters returned
|
// UnpackAnonOutput is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x008bda05.
|
// from invoking the contract method with ID 0x008bda05.
|
||||||
//
|
//
|
||||||
|
|
@ -72,11 +82,12 @@ func (outputChecker *OutputChecker) UnpackAnonOutput(data []byte) (string, error
|
||||||
return *new(string), err
|
return *new(string), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(string)).(*string)
|
out0 := *abi.ConvertType(out[0], new(string)).(*string)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackAnonOutputs is the Go binding used to pack the parameters required for calling
|
// PackAnonOutputs is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x3c401115.
|
// the contract method with ID 0x3c401115. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function anonOutputs() returns(string, string)
|
// Solidity: function anonOutputs() returns(string, string)
|
||||||
func (outputChecker *OutputChecker) PackAnonOutputs() []byte {
|
func (outputChecker *OutputChecker) PackAnonOutputs() []byte {
|
||||||
|
|
@ -87,6 +98,15 @@ func (outputChecker *OutputChecker) PackAnonOutputs() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackAnonOutputs is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x3c401115. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function anonOutputs() returns(string, string)
|
||||||
|
func (outputChecker *OutputChecker) TryPackAnonOutputs() ([]byte, error) {
|
||||||
|
return outputChecker.abi.Pack("anonOutputs")
|
||||||
|
}
|
||||||
|
|
||||||
// AnonOutputsOutput serves as a container for the return parameters of contract
|
// AnonOutputsOutput serves as a container for the return parameters of contract
|
||||||
// method AnonOutputs.
|
// method AnonOutputs.
|
||||||
type AnonOutputsOutput struct {
|
type AnonOutputsOutput struct {
|
||||||
|
|
@ -106,12 +126,12 @@ func (outputChecker *OutputChecker) UnpackAnonOutputs(data []byte) (AnonOutputsO
|
||||||
}
|
}
|
||||||
outstruct.Arg0 = *abi.ConvertType(out[0], new(string)).(*string)
|
outstruct.Arg0 = *abi.ConvertType(out[0], new(string)).(*string)
|
||||||
outstruct.Arg1 = *abi.ConvertType(out[1], new(string)).(*string)
|
outstruct.Arg1 = *abi.ConvertType(out[1], new(string)).(*string)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackCollidingOutputs is the Go binding used to pack the parameters required for calling
|
// PackCollidingOutputs is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xeccbc1ee.
|
// the contract method with ID 0xeccbc1ee. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function collidingOutputs() returns(string str, string Str)
|
// Solidity: function collidingOutputs() returns(string str, string Str)
|
||||||
func (outputChecker *OutputChecker) PackCollidingOutputs() []byte {
|
func (outputChecker *OutputChecker) PackCollidingOutputs() []byte {
|
||||||
|
|
@ -122,6 +142,15 @@ func (outputChecker *OutputChecker) PackCollidingOutputs() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackCollidingOutputs is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xeccbc1ee. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function collidingOutputs() returns(string str, string Str)
|
||||||
|
func (outputChecker *OutputChecker) TryPackCollidingOutputs() ([]byte, error) {
|
||||||
|
return outputChecker.abi.Pack("collidingOutputs")
|
||||||
|
}
|
||||||
|
|
||||||
// CollidingOutputsOutput serves as a container for the return parameters of contract
|
// CollidingOutputsOutput serves as a container for the return parameters of contract
|
||||||
// method CollidingOutputs.
|
// method CollidingOutputs.
|
||||||
type CollidingOutputsOutput struct {
|
type CollidingOutputsOutput struct {
|
||||||
|
|
@ -141,12 +170,12 @@ func (outputChecker *OutputChecker) UnpackCollidingOutputs(data []byte) (Collidi
|
||||||
}
|
}
|
||||||
outstruct.Str = *abi.ConvertType(out[0], new(string)).(*string)
|
outstruct.Str = *abi.ConvertType(out[0], new(string)).(*string)
|
||||||
outstruct.Str0 = *abi.ConvertType(out[1], new(string)).(*string)
|
outstruct.Str0 = *abi.ConvertType(out[1], new(string)).(*string)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackMixedOutputs is the Go binding used to pack the parameters required for calling
|
// PackMixedOutputs is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x21b77b44.
|
// the contract method with ID 0x21b77b44. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function mixedOutputs() returns(string, string str)
|
// Solidity: function mixedOutputs() returns(string, string str)
|
||||||
func (outputChecker *OutputChecker) PackMixedOutputs() []byte {
|
func (outputChecker *OutputChecker) PackMixedOutputs() []byte {
|
||||||
|
|
@ -157,6 +186,15 @@ func (outputChecker *OutputChecker) PackMixedOutputs() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackMixedOutputs is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x21b77b44. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function mixedOutputs() returns(string, string str)
|
||||||
|
func (outputChecker *OutputChecker) TryPackMixedOutputs() ([]byte, error) {
|
||||||
|
return outputChecker.abi.Pack("mixedOutputs")
|
||||||
|
}
|
||||||
|
|
||||||
// MixedOutputsOutput serves as a container for the return parameters of contract
|
// MixedOutputsOutput serves as a container for the return parameters of contract
|
||||||
// method MixedOutputs.
|
// method MixedOutputs.
|
||||||
type MixedOutputsOutput struct {
|
type MixedOutputsOutput struct {
|
||||||
|
|
@ -176,12 +214,12 @@ func (outputChecker *OutputChecker) UnpackMixedOutputs(data []byte) (MixedOutput
|
||||||
}
|
}
|
||||||
outstruct.Arg0 = *abi.ConvertType(out[0], new(string)).(*string)
|
outstruct.Arg0 = *abi.ConvertType(out[0], new(string)).(*string)
|
||||||
outstruct.Str = *abi.ConvertType(out[1], new(string)).(*string)
|
outstruct.Str = *abi.ConvertType(out[1], new(string)).(*string)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackNamedOutput is the Go binding used to pack the parameters required for calling
|
// PackNamedOutput is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x5e632bd5.
|
// the contract method with ID 0x5e632bd5. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function namedOutput() returns(string str)
|
// Solidity: function namedOutput() returns(string str)
|
||||||
func (outputChecker *OutputChecker) PackNamedOutput() []byte {
|
func (outputChecker *OutputChecker) PackNamedOutput() []byte {
|
||||||
|
|
@ -192,6 +230,15 @@ func (outputChecker *OutputChecker) PackNamedOutput() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackNamedOutput is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x5e632bd5. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function namedOutput() returns(string str)
|
||||||
|
func (outputChecker *OutputChecker) TryPackNamedOutput() ([]byte, error) {
|
||||||
|
return outputChecker.abi.Pack("namedOutput")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackNamedOutput is the Go binding that unpacks the parameters returned
|
// UnpackNamedOutput is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x5e632bd5.
|
// from invoking the contract method with ID 0x5e632bd5.
|
||||||
//
|
//
|
||||||
|
|
@ -202,11 +249,12 @@ func (outputChecker *OutputChecker) UnpackNamedOutput(data []byte) (string, erro
|
||||||
return *new(string), err
|
return *new(string), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(string)).(*string)
|
out0 := *abi.ConvertType(out[0], new(string)).(*string)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackNamedOutputs is the Go binding used to pack the parameters required for calling
|
// PackNamedOutputs is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x7970a189.
|
// the contract method with ID 0x7970a189. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function namedOutputs() returns(string str1, string str2)
|
// Solidity: function namedOutputs() returns(string str1, string str2)
|
||||||
func (outputChecker *OutputChecker) PackNamedOutputs() []byte {
|
func (outputChecker *OutputChecker) PackNamedOutputs() []byte {
|
||||||
|
|
@ -217,6 +265,15 @@ func (outputChecker *OutputChecker) PackNamedOutputs() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackNamedOutputs is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x7970a189. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function namedOutputs() returns(string str1, string str2)
|
||||||
|
func (outputChecker *OutputChecker) TryPackNamedOutputs() ([]byte, error) {
|
||||||
|
return outputChecker.abi.Pack("namedOutputs")
|
||||||
|
}
|
||||||
|
|
||||||
// NamedOutputsOutput serves as a container for the return parameters of contract
|
// NamedOutputsOutput serves as a container for the return parameters of contract
|
||||||
// method NamedOutputs.
|
// method NamedOutputs.
|
||||||
type NamedOutputsOutput struct {
|
type NamedOutputsOutput struct {
|
||||||
|
|
@ -236,12 +293,12 @@ func (outputChecker *OutputChecker) UnpackNamedOutputs(data []byte) (NamedOutput
|
||||||
}
|
}
|
||||||
outstruct.Str1 = *abi.ConvertType(out[0], new(string)).(*string)
|
outstruct.Str1 = *abi.ConvertType(out[0], new(string)).(*string)
|
||||||
outstruct.Str2 = *abi.ConvertType(out[1], new(string)).(*string)
|
outstruct.Str2 = *abi.ConvertType(out[1], new(string)).(*string)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackNoOutput is the Go binding used to pack the parameters required for calling
|
// PackNoOutput is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x625f0306.
|
// the contract method with ID 0x625f0306. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function noOutput() returns()
|
// Solidity: function noOutput() returns()
|
||||||
func (outputChecker *OutputChecker) PackNoOutput() []byte {
|
func (outputChecker *OutputChecker) PackNoOutput() []byte {
|
||||||
|
|
@ -251,3 +308,12 @@ func (outputChecker *OutputChecker) PackNoOutput() []byte {
|
||||||
}
|
}
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackNoOutput is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x625f0306. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function noOutput() returns()
|
||||||
|
func (outputChecker *OutputChecker) TryPackNoOutput() ([]byte, error) {
|
||||||
|
return outputChecker.abi.Pack("noOutput")
|
||||||
|
}
|
||||||
|
|
|
||||||
28
accounts/abi/abigen/testdata/v2/overload.go.txt
vendored
28
accounts/abi/abigen/testdata/v2/overload.go.txt
vendored
|
|
@ -52,7 +52,8 @@ func (c *Overload) Instance(backend bind.ContractBackend, addr common.Address) *
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackFoo is the Go binding used to pack the parameters required for calling
|
// PackFoo is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x04bc52f8.
|
// the contract method with ID 0x04bc52f8. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function foo(uint256 i, uint256 j) returns()
|
// Solidity: function foo(uint256 i, uint256 j) returns()
|
||||||
func (overload *Overload) PackFoo(i *big.Int, j *big.Int) []byte {
|
func (overload *Overload) PackFoo(i *big.Int, j *big.Int) []byte {
|
||||||
|
|
@ -63,8 +64,18 @@ func (overload *Overload) PackFoo(i *big.Int, j *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackFoo is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x04bc52f8. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function foo(uint256 i, uint256 j) returns()
|
||||||
|
func (overload *Overload) TryPackFoo(i *big.Int, j *big.Int) ([]byte, error) {
|
||||||
|
return overload.abi.Pack("foo", i, j)
|
||||||
|
}
|
||||||
|
|
||||||
// PackFoo0 is the Go binding used to pack the parameters required for calling
|
// PackFoo0 is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x2fbebd38.
|
// the contract method with ID 0x2fbebd38. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function foo(uint256 i) returns()
|
// Solidity: function foo(uint256 i) returns()
|
||||||
func (overload *Overload) PackFoo0(i *big.Int) []byte {
|
func (overload *Overload) PackFoo0(i *big.Int) []byte {
|
||||||
|
|
@ -75,6 +86,15 @@ func (overload *Overload) PackFoo0(i *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackFoo0 is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x2fbebd38. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function foo(uint256 i) returns()
|
||||||
|
func (overload *Overload) TryPackFoo0(i *big.Int) ([]byte, error) {
|
||||||
|
return overload.abi.Pack("foo0", i)
|
||||||
|
}
|
||||||
|
|
||||||
// OverloadBar represents a bar event raised by the Overload contract.
|
// OverloadBar represents a bar event raised by the Overload contract.
|
||||||
type OverloadBar struct {
|
type OverloadBar struct {
|
||||||
I *big.Int
|
I *big.Int
|
||||||
|
|
@ -94,7 +114,7 @@ func (OverloadBar) ContractEventName() string {
|
||||||
// Solidity: event bar(uint256 i)
|
// Solidity: event bar(uint256 i)
|
||||||
func (overload *Overload) UnpackBarEvent(log *types.Log) (*OverloadBar, error) {
|
func (overload *Overload) UnpackBarEvent(log *types.Log) (*OverloadBar, error) {
|
||||||
event := "bar"
|
event := "bar"
|
||||||
if log.Topics[0] != overload.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != overload.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(OverloadBar)
|
out := new(OverloadBar)
|
||||||
|
|
@ -136,7 +156,7 @@ func (OverloadBar0) ContractEventName() string {
|
||||||
// Solidity: event bar(uint256 i, uint256 j)
|
// Solidity: event bar(uint256 i, uint256 j)
|
||||||
func (overload *Overload) UnpackBar0Event(log *types.Log) (*OverloadBar0, error) {
|
func (overload *Overload) UnpackBar0Event(log *types.Log) (*OverloadBar0, error) {
|
||||||
event := "bar0"
|
event := "bar0"
|
||||||
if log.Topics[0] != overload.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != overload.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(OverloadBar0)
|
out := new(OverloadBar0)
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,8 @@ func (c *RangeKeyword) Instance(backend bind.ContractBackend, addr common.Addres
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackFunctionWithKeywordParameter is the Go binding used to pack the parameters required for calling
|
// PackFunctionWithKeywordParameter is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x527a119f.
|
// the contract method with ID 0x527a119f. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function functionWithKeywordParameter(uint256 range) pure returns()
|
// Solidity: function functionWithKeywordParameter(uint256 range) pure returns()
|
||||||
func (rangeKeyword *RangeKeyword) PackFunctionWithKeywordParameter(arg0 *big.Int) []byte {
|
func (rangeKeyword *RangeKeyword) PackFunctionWithKeywordParameter(arg0 *big.Int) []byte {
|
||||||
|
|
@ -62,3 +63,12 @@ func (rangeKeyword *RangeKeyword) PackFunctionWithKeywordParameter(arg0 *big.Int
|
||||||
}
|
}
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackFunctionWithKeywordParameter is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x527a119f. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function functionWithKeywordParameter(uint256 range) pure returns()
|
||||||
|
func (rangeKeyword *RangeKeyword) TryPackFunctionWithKeywordParameter(arg0 *big.Int) ([]byte, error) {
|
||||||
|
return rangeKeyword.abi.Pack("functionWithKeywordParameter", arg0)
|
||||||
|
}
|
||||||
|
|
|
||||||
56
accounts/abi/abigen/testdata/v2/slicer.go.txt
vendored
56
accounts/abi/abigen/testdata/v2/slicer.go.txt
vendored
|
|
@ -52,7 +52,8 @@ func (c *Slicer) Instance(backend bind.ContractBackend, addr common.Address) *bi
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackEchoAddresses is the Go binding used to pack the parameters required for calling
|
// PackEchoAddresses is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xbe1127a3.
|
// the contract method with ID 0xbe1127a3. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function echoAddresses(address[] input) returns(address[] output)
|
// Solidity: function echoAddresses(address[] input) returns(address[] output)
|
||||||
func (slicer *Slicer) PackEchoAddresses(input []common.Address) []byte {
|
func (slicer *Slicer) PackEchoAddresses(input []common.Address) []byte {
|
||||||
|
|
@ -63,6 +64,15 @@ func (slicer *Slicer) PackEchoAddresses(input []common.Address) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackEchoAddresses is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xbe1127a3. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function echoAddresses(address[] input) returns(address[] output)
|
||||||
|
func (slicer *Slicer) TryPackEchoAddresses(input []common.Address) ([]byte, error) {
|
||||||
|
return slicer.abi.Pack("echoAddresses", input)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackEchoAddresses is the Go binding that unpacks the parameters returned
|
// UnpackEchoAddresses is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xbe1127a3.
|
// from invoking the contract method with ID 0xbe1127a3.
|
||||||
//
|
//
|
||||||
|
|
@ -73,11 +83,12 @@ func (slicer *Slicer) UnpackEchoAddresses(data []byte) ([]common.Address, error)
|
||||||
return *new([]common.Address), err
|
return *new([]common.Address), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
|
out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackEchoBools is the Go binding used to pack the parameters required for calling
|
// PackEchoBools is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xf637e589.
|
// the contract method with ID 0xf637e589. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function echoBools(bool[] input) returns(bool[] output)
|
// Solidity: function echoBools(bool[] input) returns(bool[] output)
|
||||||
func (slicer *Slicer) PackEchoBools(input []bool) []byte {
|
func (slicer *Slicer) PackEchoBools(input []bool) []byte {
|
||||||
|
|
@ -88,6 +99,15 @@ func (slicer *Slicer) PackEchoBools(input []bool) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackEchoBools is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xf637e589. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function echoBools(bool[] input) returns(bool[] output)
|
||||||
|
func (slicer *Slicer) TryPackEchoBools(input []bool) ([]byte, error) {
|
||||||
|
return slicer.abi.Pack("echoBools", input)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackEchoBools is the Go binding that unpacks the parameters returned
|
// UnpackEchoBools is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xf637e589.
|
// from invoking the contract method with ID 0xf637e589.
|
||||||
//
|
//
|
||||||
|
|
@ -98,11 +118,12 @@ func (slicer *Slicer) UnpackEchoBools(data []byte) ([]bool, error) {
|
||||||
return *new([]bool), err
|
return *new([]bool), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new([]bool)).(*[]bool)
|
out0 := *abi.ConvertType(out[0], new([]bool)).(*[]bool)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackEchoFancyInts is the Go binding used to pack the parameters required for calling
|
// PackEchoFancyInts is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xd88becc0.
|
// the contract method with ID 0xd88becc0. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function echoFancyInts(uint24[23] input) returns(uint24[23] output)
|
// Solidity: function echoFancyInts(uint24[23] input) returns(uint24[23] output)
|
||||||
func (slicer *Slicer) PackEchoFancyInts(input [23]*big.Int) []byte {
|
func (slicer *Slicer) PackEchoFancyInts(input [23]*big.Int) []byte {
|
||||||
|
|
@ -113,6 +134,15 @@ func (slicer *Slicer) PackEchoFancyInts(input [23]*big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackEchoFancyInts is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xd88becc0. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function echoFancyInts(uint24[23] input) returns(uint24[23] output)
|
||||||
|
func (slicer *Slicer) TryPackEchoFancyInts(input [23]*big.Int) ([]byte, error) {
|
||||||
|
return slicer.abi.Pack("echoFancyInts", input)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackEchoFancyInts is the Go binding that unpacks the parameters returned
|
// UnpackEchoFancyInts is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xd88becc0.
|
// from invoking the contract method with ID 0xd88becc0.
|
||||||
//
|
//
|
||||||
|
|
@ -123,11 +153,12 @@ func (slicer *Slicer) UnpackEchoFancyInts(data []byte) ([23]*big.Int, error) {
|
||||||
return *new([23]*big.Int), err
|
return *new([23]*big.Int), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new([23]*big.Int)).(*[23]*big.Int)
|
out0 := *abi.ConvertType(out[0], new([23]*big.Int)).(*[23]*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackEchoInts is the Go binding used to pack the parameters required for calling
|
// PackEchoInts is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xe15a3db7.
|
// the contract method with ID 0xe15a3db7. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function echoInts(int256[] input) returns(int256[] output)
|
// Solidity: function echoInts(int256[] input) returns(int256[] output)
|
||||||
func (slicer *Slicer) PackEchoInts(input []*big.Int) []byte {
|
func (slicer *Slicer) PackEchoInts(input []*big.Int) []byte {
|
||||||
|
|
@ -138,6 +169,15 @@ func (slicer *Slicer) PackEchoInts(input []*big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackEchoInts is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xe15a3db7. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function echoInts(int256[] input) returns(int256[] output)
|
||||||
|
func (slicer *Slicer) TryPackEchoInts(input []*big.Int) ([]byte, error) {
|
||||||
|
return slicer.abi.Pack("echoInts", input)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackEchoInts is the Go binding that unpacks the parameters returned
|
// UnpackEchoInts is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xe15a3db7.
|
// from invoking the contract method with ID 0xe15a3db7.
|
||||||
//
|
//
|
||||||
|
|
@ -148,5 +188,5 @@ func (slicer *Slicer) UnpackEchoInts(data []byte) ([]*big.Int, error) {
|
||||||
return *new([]*big.Int), err
|
return *new([]*big.Int), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int)
|
out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
29
accounts/abi/abigen/testdata/v2/structs.go.txt
vendored
29
accounts/abi/abigen/testdata/v2/structs.go.txt
vendored
|
|
@ -57,7 +57,8 @@ func (c *Structs) Instance(backend bind.ContractBackend, addr common.Address) *b
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackF is the Go binding used to pack the parameters required for calling
|
// PackF is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x28811f59.
|
// the contract method with ID 0x28811f59. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function F() view returns((bytes32)[] a, uint256[] c, bool[] d)
|
// Solidity: function F() view returns((bytes32)[] a, uint256[] c, bool[] d)
|
||||||
func (structs *Structs) PackF() []byte {
|
func (structs *Structs) PackF() []byte {
|
||||||
|
|
@ -68,6 +69,15 @@ func (structs *Structs) PackF() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackF is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x28811f59. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function F() view returns((bytes32)[] a, uint256[] c, bool[] d)
|
||||||
|
func (structs *Structs) TryPackF() ([]byte, error) {
|
||||||
|
return structs.abi.Pack("F")
|
||||||
|
}
|
||||||
|
|
||||||
// FOutput serves as a container for the return parameters of contract
|
// FOutput serves as a container for the return parameters of contract
|
||||||
// method F.
|
// method F.
|
||||||
type FOutput struct {
|
type FOutput struct {
|
||||||
|
|
@ -89,12 +99,12 @@ func (structs *Structs) UnpackF(data []byte) (FOutput, error) {
|
||||||
outstruct.A = *abi.ConvertType(out[0], new([]Struct0)).(*[]Struct0)
|
outstruct.A = *abi.ConvertType(out[0], new([]Struct0)).(*[]Struct0)
|
||||||
outstruct.C = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int)
|
outstruct.C = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int)
|
||||||
outstruct.D = *abi.ConvertType(out[2], new([]bool)).(*[]bool)
|
outstruct.D = *abi.ConvertType(out[2], new([]bool)).(*[]bool)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackG is the Go binding used to pack the parameters required for calling
|
// PackG is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x6fecb623.
|
// the contract method with ID 0x6fecb623. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function G() view returns((bytes32)[] a)
|
// Solidity: function G() view returns((bytes32)[] a)
|
||||||
func (structs *Structs) PackG() []byte {
|
func (structs *Structs) PackG() []byte {
|
||||||
|
|
@ -105,6 +115,15 @@ func (structs *Structs) PackG() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackG is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x6fecb623. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function G() view returns((bytes32)[] a)
|
||||||
|
func (structs *Structs) TryPackG() ([]byte, error) {
|
||||||
|
return structs.abi.Pack("G")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackG is the Go binding that unpacks the parameters returned
|
// UnpackG is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x6fecb623.
|
// from invoking the contract method with ID 0x6fecb623.
|
||||||
//
|
//
|
||||||
|
|
@ -115,5 +134,5 @@ func (structs *Structs) UnpackG(data []byte) ([]Struct0, error) {
|
||||||
return *new([]Struct0), err
|
return *new([]Struct0), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new([]Struct0)).(*[]Struct0)
|
out0 := *abi.ConvertType(out[0], new([]Struct0)).(*[]Struct0)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
126
accounts/abi/abigen/testdata/v2/token.go.txt
vendored
126
accounts/abi/abigen/testdata/v2/token.go.txt
vendored
|
|
@ -64,7 +64,8 @@ func (token *Token) PackConstructor(initialSupply *big.Int, tokenName string, de
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackAllowance is the Go binding used to pack the parameters required for calling
|
// PackAllowance is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xdd62ed3e.
|
// the contract method with ID 0xdd62ed3e. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function allowance(address , address ) returns(uint256)
|
// Solidity: function allowance(address , address ) returns(uint256)
|
||||||
func (token *Token) PackAllowance(arg0 common.Address, arg1 common.Address) []byte {
|
func (token *Token) PackAllowance(arg0 common.Address, arg1 common.Address) []byte {
|
||||||
|
|
@ -75,6 +76,15 @@ func (token *Token) PackAllowance(arg0 common.Address, arg1 common.Address) []by
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackAllowance is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xdd62ed3e. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function allowance(address , address ) returns(uint256)
|
||||||
|
func (token *Token) TryPackAllowance(arg0 common.Address, arg1 common.Address) ([]byte, error) {
|
||||||
|
return token.abi.Pack("allowance", arg0, arg1)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackAllowance is the Go binding that unpacks the parameters returned
|
// UnpackAllowance is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xdd62ed3e.
|
// from invoking the contract method with ID 0xdd62ed3e.
|
||||||
//
|
//
|
||||||
|
|
@ -85,11 +95,12 @@ func (token *Token) UnpackAllowance(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackApproveAndCall is the Go binding used to pack the parameters required for calling
|
// PackApproveAndCall is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xcae9ca51.
|
// the contract method with ID 0xcae9ca51. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns(bool success)
|
// Solidity: function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns(bool success)
|
||||||
func (token *Token) PackApproveAndCall(spender common.Address, value *big.Int, extraData []byte) []byte {
|
func (token *Token) PackApproveAndCall(spender common.Address, value *big.Int, extraData []byte) []byte {
|
||||||
|
|
@ -100,6 +111,15 @@ func (token *Token) PackApproveAndCall(spender common.Address, value *big.Int, e
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackApproveAndCall is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xcae9ca51. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns(bool success)
|
||||||
|
func (token *Token) TryPackApproveAndCall(spender common.Address, value *big.Int, extraData []byte) ([]byte, error) {
|
||||||
|
return token.abi.Pack("approveAndCall", spender, value, extraData)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackApproveAndCall is the Go binding that unpacks the parameters returned
|
// UnpackApproveAndCall is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xcae9ca51.
|
// from invoking the contract method with ID 0xcae9ca51.
|
||||||
//
|
//
|
||||||
|
|
@ -110,11 +130,12 @@ func (token *Token) UnpackApproveAndCall(data []byte) (bool, error) {
|
||||||
return *new(bool), err
|
return *new(bool), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
|
out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackBalanceOf is the Go binding used to pack the parameters required for calling
|
// PackBalanceOf is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x70a08231.
|
// the contract method with ID 0x70a08231. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function balanceOf(address ) returns(uint256)
|
// Solidity: function balanceOf(address ) returns(uint256)
|
||||||
func (token *Token) PackBalanceOf(arg0 common.Address) []byte {
|
func (token *Token) PackBalanceOf(arg0 common.Address) []byte {
|
||||||
|
|
@ -125,6 +146,15 @@ func (token *Token) PackBalanceOf(arg0 common.Address) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackBalanceOf is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x70a08231. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function balanceOf(address ) returns(uint256)
|
||||||
|
func (token *Token) TryPackBalanceOf(arg0 common.Address) ([]byte, error) {
|
||||||
|
return token.abi.Pack("balanceOf", arg0)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackBalanceOf is the Go binding that unpacks the parameters returned
|
// UnpackBalanceOf is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x70a08231.
|
// from invoking the contract method with ID 0x70a08231.
|
||||||
//
|
//
|
||||||
|
|
@ -135,11 +165,12 @@ func (token *Token) UnpackBalanceOf(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackDecimals is the Go binding used to pack the parameters required for calling
|
// PackDecimals is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x313ce567.
|
// the contract method with ID 0x313ce567. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function decimals() returns(uint8)
|
// Solidity: function decimals() returns(uint8)
|
||||||
func (token *Token) PackDecimals() []byte {
|
func (token *Token) PackDecimals() []byte {
|
||||||
|
|
@ -150,6 +181,15 @@ func (token *Token) PackDecimals() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackDecimals is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x313ce567. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function decimals() returns(uint8)
|
||||||
|
func (token *Token) TryPackDecimals() ([]byte, error) {
|
||||||
|
return token.abi.Pack("decimals")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackDecimals is the Go binding that unpacks the parameters returned
|
// UnpackDecimals is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x313ce567.
|
// from invoking the contract method with ID 0x313ce567.
|
||||||
//
|
//
|
||||||
|
|
@ -160,11 +200,12 @@ func (token *Token) UnpackDecimals(data []byte) (uint8, error) {
|
||||||
return *new(uint8), err
|
return *new(uint8), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
|
out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackName is the Go binding used to pack the parameters required for calling
|
// PackName is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x06fdde03.
|
// the contract method with ID 0x06fdde03. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function name() returns(string)
|
// Solidity: function name() returns(string)
|
||||||
func (token *Token) PackName() []byte {
|
func (token *Token) PackName() []byte {
|
||||||
|
|
@ -175,6 +216,15 @@ func (token *Token) PackName() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackName is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x06fdde03. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function name() returns(string)
|
||||||
|
func (token *Token) TryPackName() ([]byte, error) {
|
||||||
|
return token.abi.Pack("name")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackName is the Go binding that unpacks the parameters returned
|
// UnpackName is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x06fdde03.
|
// from invoking the contract method with ID 0x06fdde03.
|
||||||
//
|
//
|
||||||
|
|
@ -185,11 +235,12 @@ func (token *Token) UnpackName(data []byte) (string, error) {
|
||||||
return *new(string), err
|
return *new(string), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(string)).(*string)
|
out0 := *abi.ConvertType(out[0], new(string)).(*string)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackSpentAllowance is the Go binding used to pack the parameters required for calling
|
// PackSpentAllowance is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xdc3080f2.
|
// the contract method with ID 0xdc3080f2. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function spentAllowance(address , address ) returns(uint256)
|
// Solidity: function spentAllowance(address , address ) returns(uint256)
|
||||||
func (token *Token) PackSpentAllowance(arg0 common.Address, arg1 common.Address) []byte {
|
func (token *Token) PackSpentAllowance(arg0 common.Address, arg1 common.Address) []byte {
|
||||||
|
|
@ -200,6 +251,15 @@ func (token *Token) PackSpentAllowance(arg0 common.Address, arg1 common.Address)
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackSpentAllowance is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xdc3080f2. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function spentAllowance(address , address ) returns(uint256)
|
||||||
|
func (token *Token) TryPackSpentAllowance(arg0 common.Address, arg1 common.Address) ([]byte, error) {
|
||||||
|
return token.abi.Pack("spentAllowance", arg0, arg1)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackSpentAllowance is the Go binding that unpacks the parameters returned
|
// UnpackSpentAllowance is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xdc3080f2.
|
// from invoking the contract method with ID 0xdc3080f2.
|
||||||
//
|
//
|
||||||
|
|
@ -210,11 +270,12 @@ func (token *Token) UnpackSpentAllowance(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackSymbol is the Go binding used to pack the parameters required for calling
|
// PackSymbol is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x95d89b41.
|
// the contract method with ID 0x95d89b41. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function symbol() returns(string)
|
// Solidity: function symbol() returns(string)
|
||||||
func (token *Token) PackSymbol() []byte {
|
func (token *Token) PackSymbol() []byte {
|
||||||
|
|
@ -225,6 +286,15 @@ func (token *Token) PackSymbol() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackSymbol is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x95d89b41. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function symbol() returns(string)
|
||||||
|
func (token *Token) TryPackSymbol() ([]byte, error) {
|
||||||
|
return token.abi.Pack("symbol")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackSymbol is the Go binding that unpacks the parameters returned
|
// UnpackSymbol is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x95d89b41.
|
// from invoking the contract method with ID 0x95d89b41.
|
||||||
//
|
//
|
||||||
|
|
@ -235,11 +305,12 @@ func (token *Token) UnpackSymbol(data []byte) (string, error) {
|
||||||
return *new(string), err
|
return *new(string), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(string)).(*string)
|
out0 := *abi.ConvertType(out[0], new(string)).(*string)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackTransfer is the Go binding used to pack the parameters required for calling
|
// PackTransfer is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xa9059cbb.
|
// the contract method with ID 0xa9059cbb. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function transfer(address _to, uint256 _value) returns()
|
// Solidity: function transfer(address _to, uint256 _value) returns()
|
||||||
func (token *Token) PackTransfer(to common.Address, value *big.Int) []byte {
|
func (token *Token) PackTransfer(to common.Address, value *big.Int) []byte {
|
||||||
|
|
@ -250,8 +321,18 @@ func (token *Token) PackTransfer(to common.Address, value *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackTransfer is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xa9059cbb. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function transfer(address _to, uint256 _value) returns()
|
||||||
|
func (token *Token) TryPackTransfer(to common.Address, value *big.Int) ([]byte, error) {
|
||||||
|
return token.abi.Pack("transfer", to, value)
|
||||||
|
}
|
||||||
|
|
||||||
// PackTransferFrom is the Go binding used to pack the parameters required for calling
|
// PackTransferFrom is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x23b872dd.
|
// the contract method with ID 0x23b872dd. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function transferFrom(address _from, address _to, uint256 _value) returns(bool success)
|
// Solidity: function transferFrom(address _from, address _to, uint256 _value) returns(bool success)
|
||||||
func (token *Token) PackTransferFrom(from common.Address, to common.Address, value *big.Int) []byte {
|
func (token *Token) PackTransferFrom(from common.Address, to common.Address, value *big.Int) []byte {
|
||||||
|
|
@ -262,6 +343,15 @@ func (token *Token) PackTransferFrom(from common.Address, to common.Address, val
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackTransferFrom is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x23b872dd. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function transferFrom(address _from, address _to, uint256 _value) returns(bool success)
|
||||||
|
func (token *Token) TryPackTransferFrom(from common.Address, to common.Address, value *big.Int) ([]byte, error) {
|
||||||
|
return token.abi.Pack("transferFrom", from, to, value)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackTransferFrom is the Go binding that unpacks the parameters returned
|
// UnpackTransferFrom is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x23b872dd.
|
// from invoking the contract method with ID 0x23b872dd.
|
||||||
//
|
//
|
||||||
|
|
@ -272,7 +362,7 @@ func (token *Token) UnpackTransferFrom(data []byte) (bool, error) {
|
||||||
return *new(bool), err
|
return *new(bool), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
|
out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// TokenTransfer represents a Transfer event raised by the Token contract.
|
// TokenTransfer represents a Transfer event raised by the Token contract.
|
||||||
|
|
@ -296,7 +386,7 @@ func (TokenTransfer) ContractEventName() string {
|
||||||
// Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
|
// Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
|
||||||
func (token *Token) UnpackTransferEvent(log *types.Log) (*TokenTransfer, error) {
|
func (token *Token) UnpackTransferEvent(log *types.Log) (*TokenTransfer, error) {
|
||||||
event := "Transfer"
|
event := "Transfer"
|
||||||
if log.Topics[0] != token.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != token.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(TokenTransfer)
|
out := new(TokenTransfer)
|
||||||
|
|
|
||||||
43
accounts/abi/abigen/testdata/v2/tuple.go.txt
vendored
43
accounts/abi/abigen/testdata/v2/tuple.go.txt
vendored
|
|
@ -77,7 +77,8 @@ func (c *Tuple) Instance(backend bind.ContractBackend, addr common.Address) *bin
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackFunc1 is the Go binding used to pack the parameters required for calling
|
// PackFunc1 is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x443c79b4.
|
// the contract method with ID 0x443c79b4. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function func1((uint256,uint256[],(uint256,uint256)[]) a, (uint256,uint256)[2][] b, (uint256,uint256)[][2] c, (uint256,uint256[],(uint256,uint256)[])[] d, uint256[] e) pure returns((uint256,uint256[],(uint256,uint256)[]), (uint256,uint256)[2][], (uint256,uint256)[][2], (uint256,uint256[],(uint256,uint256)[])[], uint256[])
|
// Solidity: function func1((uint256,uint256[],(uint256,uint256)[]) a, (uint256,uint256)[2][] b, (uint256,uint256)[][2] c, (uint256,uint256[],(uint256,uint256)[])[] d, uint256[] e) pure returns((uint256,uint256[],(uint256,uint256)[]), (uint256,uint256)[2][], (uint256,uint256)[][2], (uint256,uint256[],(uint256,uint256)[])[], uint256[])
|
||||||
func (tuple *Tuple) PackFunc1(a TupleS, b [][2]TupleT, c [2][]TupleT, d []TupleS, e []*big.Int) []byte {
|
func (tuple *Tuple) PackFunc1(a TupleS, b [][2]TupleT, c [2][]TupleT, d []TupleS, e []*big.Int) []byte {
|
||||||
|
|
@ -88,6 +89,15 @@ func (tuple *Tuple) PackFunc1(a TupleS, b [][2]TupleT, c [2][]TupleT, d []TupleS
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackFunc1 is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x443c79b4. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function func1((uint256,uint256[],(uint256,uint256)[]) a, (uint256,uint256)[2][] b, (uint256,uint256)[][2] c, (uint256,uint256[],(uint256,uint256)[])[] d, uint256[] e) pure returns((uint256,uint256[],(uint256,uint256)[]), (uint256,uint256)[2][], (uint256,uint256)[][2], (uint256,uint256[],(uint256,uint256)[])[], uint256[])
|
||||||
|
func (tuple *Tuple) TryPackFunc1(a TupleS, b [][2]TupleT, c [2][]TupleT, d []TupleS, e []*big.Int) ([]byte, error) {
|
||||||
|
return tuple.abi.Pack("func1", a, b, c, d, e)
|
||||||
|
}
|
||||||
|
|
||||||
// Func1Output serves as a container for the return parameters of contract
|
// Func1Output serves as a container for the return parameters of contract
|
||||||
// method Func1.
|
// method Func1.
|
||||||
type Func1Output struct {
|
type Func1Output struct {
|
||||||
|
|
@ -113,12 +123,12 @@ func (tuple *Tuple) UnpackFunc1(data []byte) (Func1Output, error) {
|
||||||
outstruct.Arg2 = *abi.ConvertType(out[2], new([2][]TupleT)).(*[2][]TupleT)
|
outstruct.Arg2 = *abi.ConvertType(out[2], new([2][]TupleT)).(*[2][]TupleT)
|
||||||
outstruct.Arg3 = *abi.ConvertType(out[3], new([]TupleS)).(*[]TupleS)
|
outstruct.Arg3 = *abi.ConvertType(out[3], new([]TupleS)).(*[]TupleS)
|
||||||
outstruct.Arg4 = *abi.ConvertType(out[4], new([]*big.Int)).(*[]*big.Int)
|
outstruct.Arg4 = *abi.ConvertType(out[4], new([]*big.Int)).(*[]*big.Int)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackFunc2 is the Go binding used to pack the parameters required for calling
|
// PackFunc2 is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xd0062cdd.
|
// the contract method with ID 0xd0062cdd. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function func2((uint256,uint256[],(uint256,uint256)[]) a, (uint256,uint256)[2][] b, (uint256,uint256)[][2] c, (uint256,uint256[],(uint256,uint256)[])[] d, uint256[] e) returns()
|
// Solidity: function func2((uint256,uint256[],(uint256,uint256)[]) a, (uint256,uint256)[2][] b, (uint256,uint256)[][2] c, (uint256,uint256[],(uint256,uint256)[])[] d, uint256[] e) returns()
|
||||||
func (tuple *Tuple) PackFunc2(a TupleS, b [][2]TupleT, c [2][]TupleT, d []TupleS, e []*big.Int) []byte {
|
func (tuple *Tuple) PackFunc2(a TupleS, b [][2]TupleT, c [2][]TupleT, d []TupleS, e []*big.Int) []byte {
|
||||||
|
|
@ -129,8 +139,18 @@ func (tuple *Tuple) PackFunc2(a TupleS, b [][2]TupleT, c [2][]TupleT, d []TupleS
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackFunc2 is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xd0062cdd. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function func2((uint256,uint256[],(uint256,uint256)[]) a, (uint256,uint256)[2][] b, (uint256,uint256)[][2] c, (uint256,uint256[],(uint256,uint256)[])[] d, uint256[] e) returns()
|
||||||
|
func (tuple *Tuple) TryPackFunc2(a TupleS, b [][2]TupleT, c [2][]TupleT, d []TupleS, e []*big.Int) ([]byte, error) {
|
||||||
|
return tuple.abi.Pack("func2", a, b, c, d, e)
|
||||||
|
}
|
||||||
|
|
||||||
// PackFunc3 is the Go binding used to pack the parameters required for calling
|
// PackFunc3 is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xe4d9a43b.
|
// the contract method with ID 0xe4d9a43b. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function func3((uint16,uint16)[] ) pure returns()
|
// Solidity: function func3((uint16,uint16)[] ) pure returns()
|
||||||
func (tuple *Tuple) PackFunc3(arg0 []TupleQ) []byte {
|
func (tuple *Tuple) PackFunc3(arg0 []TupleQ) []byte {
|
||||||
|
|
@ -141,6 +161,15 @@ func (tuple *Tuple) PackFunc3(arg0 []TupleQ) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackFunc3 is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xe4d9a43b. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function func3((uint16,uint16)[] ) pure returns()
|
||||||
|
func (tuple *Tuple) TryPackFunc3(arg0 []TupleQ) ([]byte, error) {
|
||||||
|
return tuple.abi.Pack("func3", arg0)
|
||||||
|
}
|
||||||
|
|
||||||
// TupleTupleEvent represents a TupleEvent event raised by the Tuple contract.
|
// TupleTupleEvent represents a TupleEvent event raised by the Tuple contract.
|
||||||
type TupleTupleEvent struct {
|
type TupleTupleEvent struct {
|
||||||
A TupleS
|
A TupleS
|
||||||
|
|
@ -164,7 +193,7 @@ func (TupleTupleEvent) ContractEventName() string {
|
||||||
// Solidity: event TupleEvent((uint256,uint256[],(uint256,uint256)[]) a, (uint256,uint256)[2][] b, (uint256,uint256)[][2] c, (uint256,uint256[],(uint256,uint256)[])[] d, uint256[] e)
|
// Solidity: event TupleEvent((uint256,uint256[],(uint256,uint256)[]) a, (uint256,uint256)[2][] b, (uint256,uint256)[][2] c, (uint256,uint256[],(uint256,uint256)[])[] d, uint256[] e)
|
||||||
func (tuple *Tuple) UnpackTupleEventEvent(log *types.Log) (*TupleTupleEvent, error) {
|
func (tuple *Tuple) UnpackTupleEventEvent(log *types.Log) (*TupleTupleEvent, error) {
|
||||||
event := "TupleEvent"
|
event := "TupleEvent"
|
||||||
if log.Topics[0] != tuple.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != tuple.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(TupleTupleEvent)
|
out := new(TupleTupleEvent)
|
||||||
|
|
@ -205,7 +234,7 @@ func (TupleTupleEvent2) ContractEventName() string {
|
||||||
// Solidity: event TupleEvent2((uint8,uint8)[] arg0)
|
// Solidity: event TupleEvent2((uint8,uint8)[] arg0)
|
||||||
func (tuple *Tuple) UnpackTupleEvent2Event(log *types.Log) (*TupleTupleEvent2, error) {
|
func (tuple *Tuple) UnpackTupleEvent2Event(log *types.Log) (*TupleTupleEvent2, error) {
|
||||||
event := "TupleEvent2"
|
event := "TupleEvent2"
|
||||||
if log.Topics[0] != tuple.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != tuple.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(TupleTupleEvent2)
|
out := new(TupleTupleEvent2)
|
||||||
|
|
|
||||||
15
accounts/abi/abigen/testdata/v2/tupler.go.txt
vendored
15
accounts/abi/abigen/testdata/v2/tupler.go.txt
vendored
|
|
@ -52,7 +52,8 @@ func (c *Tupler) Instance(backend bind.ContractBackend, addr common.Address) *bi
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackTuple is the Go binding used to pack the parameters required for calling
|
// PackTuple is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x3175aae2.
|
// the contract method with ID 0x3175aae2. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function tuple() returns(string a, int256 b, bytes32 c)
|
// Solidity: function tuple() returns(string a, int256 b, bytes32 c)
|
||||||
func (tupler *Tupler) PackTuple() []byte {
|
func (tupler *Tupler) PackTuple() []byte {
|
||||||
|
|
@ -63,6 +64,15 @@ func (tupler *Tupler) PackTuple() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackTuple is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x3175aae2. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function tuple() returns(string a, int256 b, bytes32 c)
|
||||||
|
func (tupler *Tupler) TryPackTuple() ([]byte, error) {
|
||||||
|
return tupler.abi.Pack("tuple")
|
||||||
|
}
|
||||||
|
|
||||||
// TupleOutput serves as a container for the return parameters of contract
|
// TupleOutput serves as a container for the return parameters of contract
|
||||||
// method Tuple.
|
// method Tuple.
|
||||||
type TupleOutput struct {
|
type TupleOutput struct {
|
||||||
|
|
@ -84,6 +94,5 @@ func (tupler *Tupler) UnpackTuple(data []byte) (TupleOutput, error) {
|
||||||
outstruct.A = *abi.ConvertType(out[0], new(string)).(*string)
|
outstruct.A = *abi.ConvertType(out[0], new(string)).(*string)
|
||||||
outstruct.B = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
outstruct.B = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
||||||
outstruct.C = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte)
|
outstruct.C = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
119
accounts/abi/abigen/testdata/v2/underscorer.go.txt
vendored
119
accounts/abi/abigen/testdata/v2/underscorer.go.txt
vendored
|
|
@ -52,7 +52,8 @@ func (c *Underscorer) Instance(backend bind.ContractBackend, addr common.Address
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackAllPurelyUnderscoredOutput is the Go binding used to pack the parameters required for calling
|
// PackAllPurelyUnderscoredOutput is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xb564b34d.
|
// the contract method with ID 0xb564b34d. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function AllPurelyUnderscoredOutput() view returns(int256 _, int256 __)
|
// Solidity: function AllPurelyUnderscoredOutput() view returns(int256 _, int256 __)
|
||||||
func (underscorer *Underscorer) PackAllPurelyUnderscoredOutput() []byte {
|
func (underscorer *Underscorer) PackAllPurelyUnderscoredOutput() []byte {
|
||||||
|
|
@ -63,6 +64,15 @@ func (underscorer *Underscorer) PackAllPurelyUnderscoredOutput() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackAllPurelyUnderscoredOutput is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xb564b34d. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function AllPurelyUnderscoredOutput() view returns(int256 _, int256 __)
|
||||||
|
func (underscorer *Underscorer) TryPackAllPurelyUnderscoredOutput() ([]byte, error) {
|
||||||
|
return underscorer.abi.Pack("AllPurelyUnderscoredOutput")
|
||||||
|
}
|
||||||
|
|
||||||
// AllPurelyUnderscoredOutputOutput serves as a container for the return parameters of contract
|
// AllPurelyUnderscoredOutputOutput serves as a container for the return parameters of contract
|
||||||
// method AllPurelyUnderscoredOutput.
|
// method AllPurelyUnderscoredOutput.
|
||||||
type AllPurelyUnderscoredOutputOutput struct {
|
type AllPurelyUnderscoredOutputOutput struct {
|
||||||
|
|
@ -82,12 +92,12 @@ func (underscorer *Underscorer) UnpackAllPurelyUnderscoredOutput(data []byte) (A
|
||||||
}
|
}
|
||||||
outstruct.Arg0 = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
outstruct.Arg0 = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
outstruct.Arg1 = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
outstruct.Arg1 = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackLowerLowerCollision is the Go binding used to pack the parameters required for calling
|
// PackLowerLowerCollision is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xe409ca45.
|
// the contract method with ID 0xe409ca45. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function LowerLowerCollision() view returns(int256 _res, int256 res)
|
// Solidity: function LowerLowerCollision() view returns(int256 _res, int256 res)
|
||||||
func (underscorer *Underscorer) PackLowerLowerCollision() []byte {
|
func (underscorer *Underscorer) PackLowerLowerCollision() []byte {
|
||||||
|
|
@ -98,6 +108,15 @@ func (underscorer *Underscorer) PackLowerLowerCollision() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackLowerLowerCollision is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xe409ca45. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function LowerLowerCollision() view returns(int256 _res, int256 res)
|
||||||
|
func (underscorer *Underscorer) TryPackLowerLowerCollision() ([]byte, error) {
|
||||||
|
return underscorer.abi.Pack("LowerLowerCollision")
|
||||||
|
}
|
||||||
|
|
||||||
// LowerLowerCollisionOutput serves as a container for the return parameters of contract
|
// LowerLowerCollisionOutput serves as a container for the return parameters of contract
|
||||||
// method LowerLowerCollision.
|
// method LowerLowerCollision.
|
||||||
type LowerLowerCollisionOutput struct {
|
type LowerLowerCollisionOutput struct {
|
||||||
|
|
@ -117,12 +136,12 @@ func (underscorer *Underscorer) UnpackLowerLowerCollision(data []byte) (LowerLow
|
||||||
}
|
}
|
||||||
outstruct.Res = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
outstruct.Res = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
outstruct.Res0 = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
outstruct.Res0 = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackLowerUpperCollision is the Go binding used to pack the parameters required for calling
|
// PackLowerUpperCollision is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x03a59213.
|
// the contract method with ID 0x03a59213. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function LowerUpperCollision() view returns(int256 _res, int256 Res)
|
// Solidity: function LowerUpperCollision() view returns(int256 _res, int256 Res)
|
||||||
func (underscorer *Underscorer) PackLowerUpperCollision() []byte {
|
func (underscorer *Underscorer) PackLowerUpperCollision() []byte {
|
||||||
|
|
@ -133,6 +152,15 @@ func (underscorer *Underscorer) PackLowerUpperCollision() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackLowerUpperCollision is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x03a59213. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function LowerUpperCollision() view returns(int256 _res, int256 Res)
|
||||||
|
func (underscorer *Underscorer) TryPackLowerUpperCollision() ([]byte, error) {
|
||||||
|
return underscorer.abi.Pack("LowerUpperCollision")
|
||||||
|
}
|
||||||
|
|
||||||
// LowerUpperCollisionOutput serves as a container for the return parameters of contract
|
// LowerUpperCollisionOutput serves as a container for the return parameters of contract
|
||||||
// method LowerUpperCollision.
|
// method LowerUpperCollision.
|
||||||
type LowerUpperCollisionOutput struct {
|
type LowerUpperCollisionOutput struct {
|
||||||
|
|
@ -152,12 +180,12 @@ func (underscorer *Underscorer) UnpackLowerUpperCollision(data []byte) (LowerUpp
|
||||||
}
|
}
|
||||||
outstruct.Res = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
outstruct.Res = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
outstruct.Res0 = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
outstruct.Res0 = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackPurelyUnderscoredOutput is the Go binding used to pack the parameters required for calling
|
// PackPurelyUnderscoredOutput is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x9df48485.
|
// the contract method with ID 0x9df48485. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function PurelyUnderscoredOutput() view returns(int256 _, int256 res)
|
// Solidity: function PurelyUnderscoredOutput() view returns(int256 _, int256 res)
|
||||||
func (underscorer *Underscorer) PackPurelyUnderscoredOutput() []byte {
|
func (underscorer *Underscorer) PackPurelyUnderscoredOutput() []byte {
|
||||||
|
|
@ -168,6 +196,15 @@ func (underscorer *Underscorer) PackPurelyUnderscoredOutput() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackPurelyUnderscoredOutput is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x9df48485. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function PurelyUnderscoredOutput() view returns(int256 _, int256 res)
|
||||||
|
func (underscorer *Underscorer) TryPackPurelyUnderscoredOutput() ([]byte, error) {
|
||||||
|
return underscorer.abi.Pack("PurelyUnderscoredOutput")
|
||||||
|
}
|
||||||
|
|
||||||
// PurelyUnderscoredOutputOutput serves as a container for the return parameters of contract
|
// PurelyUnderscoredOutputOutput serves as a container for the return parameters of contract
|
||||||
// method PurelyUnderscoredOutput.
|
// method PurelyUnderscoredOutput.
|
||||||
type PurelyUnderscoredOutputOutput struct {
|
type PurelyUnderscoredOutputOutput struct {
|
||||||
|
|
@ -187,12 +224,12 @@ func (underscorer *Underscorer) UnpackPurelyUnderscoredOutput(data []byte) (Pure
|
||||||
}
|
}
|
||||||
outstruct.Arg0 = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
outstruct.Arg0 = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
outstruct.Res = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
outstruct.Res = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackUnderscoredOutput is the Go binding used to pack the parameters required for calling
|
// PackUnderscoredOutput is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x67e6633d.
|
// the contract method with ID 0x67e6633d. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function UnderscoredOutput() view returns(int256 _int, string _string)
|
// Solidity: function UnderscoredOutput() view returns(int256 _int, string _string)
|
||||||
func (underscorer *Underscorer) PackUnderscoredOutput() []byte {
|
func (underscorer *Underscorer) PackUnderscoredOutput() []byte {
|
||||||
|
|
@ -203,6 +240,15 @@ func (underscorer *Underscorer) PackUnderscoredOutput() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackUnderscoredOutput is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x67e6633d. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function UnderscoredOutput() view returns(int256 _int, string _string)
|
||||||
|
func (underscorer *Underscorer) TryPackUnderscoredOutput() ([]byte, error) {
|
||||||
|
return underscorer.abi.Pack("UnderscoredOutput")
|
||||||
|
}
|
||||||
|
|
||||||
// UnderscoredOutputOutput serves as a container for the return parameters of contract
|
// UnderscoredOutputOutput serves as a container for the return parameters of contract
|
||||||
// method UnderscoredOutput.
|
// method UnderscoredOutput.
|
||||||
type UnderscoredOutputOutput struct {
|
type UnderscoredOutputOutput struct {
|
||||||
|
|
@ -222,12 +268,12 @@ func (underscorer *Underscorer) UnpackUnderscoredOutput(data []byte) (Underscore
|
||||||
}
|
}
|
||||||
outstruct.Int = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
outstruct.Int = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
outstruct.String = *abi.ConvertType(out[1], new(string)).(*string)
|
outstruct.String = *abi.ConvertType(out[1], new(string)).(*string)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackUpperLowerCollision is the Go binding used to pack the parameters required for calling
|
// PackUpperLowerCollision is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xaf7486ab.
|
// the contract method with ID 0xaf7486ab. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function UpperLowerCollision() view returns(int256 _Res, int256 res)
|
// Solidity: function UpperLowerCollision() view returns(int256 _Res, int256 res)
|
||||||
func (underscorer *Underscorer) PackUpperLowerCollision() []byte {
|
func (underscorer *Underscorer) PackUpperLowerCollision() []byte {
|
||||||
|
|
@ -238,6 +284,15 @@ func (underscorer *Underscorer) PackUpperLowerCollision() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackUpperLowerCollision is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xaf7486ab. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function UpperLowerCollision() view returns(int256 _Res, int256 res)
|
||||||
|
func (underscorer *Underscorer) TryPackUpperLowerCollision() ([]byte, error) {
|
||||||
|
return underscorer.abi.Pack("UpperLowerCollision")
|
||||||
|
}
|
||||||
|
|
||||||
// UpperLowerCollisionOutput serves as a container for the return parameters of contract
|
// UpperLowerCollisionOutput serves as a container for the return parameters of contract
|
||||||
// method UpperLowerCollision.
|
// method UpperLowerCollision.
|
||||||
type UpperLowerCollisionOutput struct {
|
type UpperLowerCollisionOutput struct {
|
||||||
|
|
@ -257,12 +312,12 @@ func (underscorer *Underscorer) UnpackUpperLowerCollision(data []byte) (UpperLow
|
||||||
}
|
}
|
||||||
outstruct.Res = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
outstruct.Res = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
outstruct.Res0 = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
outstruct.Res0 = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackUpperUpperCollision is the Go binding used to pack the parameters required for calling
|
// PackUpperUpperCollision is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xe02ab24d.
|
// the contract method with ID 0xe02ab24d. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function UpperUpperCollision() view returns(int256 _Res, int256 Res)
|
// Solidity: function UpperUpperCollision() view returns(int256 _Res, int256 Res)
|
||||||
func (underscorer *Underscorer) PackUpperUpperCollision() []byte {
|
func (underscorer *Underscorer) PackUpperUpperCollision() []byte {
|
||||||
|
|
@ -273,6 +328,15 @@ func (underscorer *Underscorer) PackUpperUpperCollision() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackUpperUpperCollision is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xe02ab24d. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function UpperUpperCollision() view returns(int256 _Res, int256 Res)
|
||||||
|
func (underscorer *Underscorer) TryPackUpperUpperCollision() ([]byte, error) {
|
||||||
|
return underscorer.abi.Pack("UpperUpperCollision")
|
||||||
|
}
|
||||||
|
|
||||||
// UpperUpperCollisionOutput serves as a container for the return parameters of contract
|
// UpperUpperCollisionOutput serves as a container for the return parameters of contract
|
||||||
// method UpperUpperCollision.
|
// method UpperUpperCollision.
|
||||||
type UpperUpperCollisionOutput struct {
|
type UpperUpperCollisionOutput struct {
|
||||||
|
|
@ -292,12 +356,12 @@ func (underscorer *Underscorer) UnpackUpperUpperCollision(data []byte) (UpperUpp
|
||||||
}
|
}
|
||||||
outstruct.Res = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
outstruct.Res = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
outstruct.Res0 = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
outstruct.Res0 = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackUnderScoredFunc is the Go binding used to pack the parameters required for calling
|
// PackUnderScoredFunc is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x46546dbe.
|
// the contract method with ID 0x46546dbe. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function _under_scored_func() view returns(int256 _int)
|
// Solidity: function _under_scored_func() view returns(int256 _int)
|
||||||
func (underscorer *Underscorer) PackUnderScoredFunc() []byte {
|
func (underscorer *Underscorer) PackUnderScoredFunc() []byte {
|
||||||
|
|
@ -308,6 +372,15 @@ func (underscorer *Underscorer) PackUnderScoredFunc() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackUnderScoredFunc is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x46546dbe. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function _under_scored_func() view returns(int256 _int)
|
||||||
|
func (underscorer *Underscorer) TryPackUnderScoredFunc() ([]byte, error) {
|
||||||
|
return underscorer.abi.Pack("_under_scored_func")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackUnderScoredFunc is the Go binding that unpacks the parameters returned
|
// UnpackUnderScoredFunc is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x46546dbe.
|
// from invoking the contract method with ID 0x46546dbe.
|
||||||
//
|
//
|
||||||
|
|
@ -318,5 +391,5 @@ func (underscorer *Underscorer) UnpackUnderScoredFunc(data []byte) (*big.Int, er
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,11 @@ func NewBoundContract(address common.Address, abi abi.ABI, caller ContractCaller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Address returns the deployment address of the contract.
|
||||||
|
func (c *BoundContract) Address() common.Address {
|
||||||
|
return c.address
|
||||||
|
}
|
||||||
|
|
||||||
// Call invokes the (constant) contract method with params as input values and
|
// Call invokes the (constant) contract method with params as input values and
|
||||||
// sets the output to result. The result type might be a single field for simple
|
// sets the output to result. The result type might be a single field for simple
|
||||||
// returns, a slice of interfaces for anonymous returns and a struct for named
|
// returns, a slice of interfaces for anonymous returns and a struct for named
|
||||||
|
|
@ -272,8 +277,10 @@ func (c *BoundContract) RawCreationTransact(opts *TransactOpts, calldata []byte)
|
||||||
// Transfer initiates a plain transaction to move funds to the contract, calling
|
// Transfer initiates a plain transaction to move funds to the contract, calling
|
||||||
// its default method if one is available.
|
// its default method if one is available.
|
||||||
func (c *BoundContract) Transfer(opts *TransactOpts) (*types.Transaction, error) {
|
func (c *BoundContract) Transfer(opts *TransactOpts) (*types.Transaction, error) {
|
||||||
// todo(rjl493456442) check the payable fallback or receive is defined
|
// Check if payable fallback or receive is defined
|
||||||
// or not, reject invalid transaction at the first place
|
if !c.abi.HasReceive() && !(c.abi.HasFallback() && c.abi.Fallback.IsPayable()) {
|
||||||
|
return nil, fmt.Errorf("contract does not have a payable fallback or receive function")
|
||||||
|
}
|
||||||
return c.transact(opts, &c.address, nil)
|
return c.transact(opts, &c.address, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,8 @@ func (c *DB) Instance(backend bind.ContractBackend, addr common.Address) *bind.B
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackGet is the Go binding used to pack the parameters required for calling
|
// PackGet is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x9507d39a.
|
// the contract method with ID 0x9507d39a. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function get(uint256 k) returns(uint256)
|
// Solidity: function get(uint256 k) returns(uint256)
|
||||||
func (dB *DB) PackGet(k *big.Int) []byte {
|
func (dB *DB) PackGet(k *big.Int) []byte {
|
||||||
|
|
@ -70,6 +71,15 @@ func (dB *DB) PackGet(k *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackGet is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x9507d39a. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function get(uint256 k) returns(uint256)
|
||||||
|
func (dB *DB) TryPackGet(k *big.Int) ([]byte, error) {
|
||||||
|
return dB.abi.Pack("get", k)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackGet is the Go binding that unpacks the parameters returned
|
// UnpackGet is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x9507d39a.
|
// from invoking the contract method with ID 0x9507d39a.
|
||||||
//
|
//
|
||||||
|
|
@ -80,11 +90,12 @@ func (dB *DB) UnpackGet(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackGetNamedStatParams is the Go binding used to pack the parameters required for calling
|
// PackGetNamedStatParams is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xe369ba3b.
|
// the contract method with ID 0xe369ba3b. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function getNamedStatParams() view returns(uint256 gets, uint256 inserts, uint256 mods)
|
// Solidity: function getNamedStatParams() view returns(uint256 gets, uint256 inserts, uint256 mods)
|
||||||
func (dB *DB) PackGetNamedStatParams() []byte {
|
func (dB *DB) PackGetNamedStatParams() []byte {
|
||||||
|
|
@ -95,6 +106,15 @@ func (dB *DB) PackGetNamedStatParams() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackGetNamedStatParams is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xe369ba3b. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function getNamedStatParams() view returns(uint256 gets, uint256 inserts, uint256 mods)
|
||||||
|
func (dB *DB) TryPackGetNamedStatParams() ([]byte, error) {
|
||||||
|
return dB.abi.Pack("getNamedStatParams")
|
||||||
|
}
|
||||||
|
|
||||||
// GetNamedStatParamsOutput serves as a container for the return parameters of contract
|
// GetNamedStatParamsOutput serves as a container for the return parameters of contract
|
||||||
// method GetNamedStatParams.
|
// method GetNamedStatParams.
|
||||||
type GetNamedStatParamsOutput struct {
|
type GetNamedStatParamsOutput struct {
|
||||||
|
|
@ -116,12 +136,12 @@ func (dB *DB) UnpackGetNamedStatParams(data []byte) (GetNamedStatParamsOutput, e
|
||||||
outstruct.Gets = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
outstruct.Gets = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
outstruct.Inserts = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
outstruct.Inserts = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
||||||
outstruct.Mods = abi.ConvertType(out[2], new(big.Int)).(*big.Int)
|
outstruct.Mods = abi.ConvertType(out[2], new(big.Int)).(*big.Int)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackGetStatParams is the Go binding used to pack the parameters required for calling
|
// PackGetStatParams is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x6fcb9c70.
|
// the contract method with ID 0x6fcb9c70. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function getStatParams() view returns(uint256, uint256, uint256)
|
// Solidity: function getStatParams() view returns(uint256, uint256, uint256)
|
||||||
func (dB *DB) PackGetStatParams() []byte {
|
func (dB *DB) PackGetStatParams() []byte {
|
||||||
|
|
@ -132,6 +152,15 @@ func (dB *DB) PackGetStatParams() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackGetStatParams is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x6fcb9c70. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function getStatParams() view returns(uint256, uint256, uint256)
|
||||||
|
func (dB *DB) TryPackGetStatParams() ([]byte, error) {
|
||||||
|
return dB.abi.Pack("getStatParams")
|
||||||
|
}
|
||||||
|
|
||||||
// GetStatParamsOutput serves as a container for the return parameters of contract
|
// GetStatParamsOutput serves as a container for the return parameters of contract
|
||||||
// method GetStatParams.
|
// method GetStatParams.
|
||||||
type GetStatParamsOutput struct {
|
type GetStatParamsOutput struct {
|
||||||
|
|
@ -153,12 +182,12 @@ func (dB *DB) UnpackGetStatParams(data []byte) (GetStatParamsOutput, error) {
|
||||||
outstruct.Arg0 = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
outstruct.Arg0 = abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
outstruct.Arg1 = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
outstruct.Arg1 = abi.ConvertType(out[1], new(big.Int)).(*big.Int)
|
||||||
outstruct.Arg2 = abi.ConvertType(out[2], new(big.Int)).(*big.Int)
|
outstruct.Arg2 = abi.ConvertType(out[2], new(big.Int)).(*big.Int)
|
||||||
return *outstruct, err
|
return *outstruct, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackGetStatsStruct is the Go binding used to pack the parameters required for calling
|
// PackGetStatsStruct is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xee8161e0.
|
// the contract method with ID 0xee8161e0. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function getStatsStruct() view returns((uint256,uint256,uint256))
|
// Solidity: function getStatsStruct() view returns((uint256,uint256,uint256))
|
||||||
func (dB *DB) PackGetStatsStruct() []byte {
|
func (dB *DB) PackGetStatsStruct() []byte {
|
||||||
|
|
@ -169,6 +198,15 @@ func (dB *DB) PackGetStatsStruct() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackGetStatsStruct is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xee8161e0. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function getStatsStruct() view returns((uint256,uint256,uint256))
|
||||||
|
func (dB *DB) TryPackGetStatsStruct() ([]byte, error) {
|
||||||
|
return dB.abi.Pack("getStatsStruct")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackGetStatsStruct is the Go binding that unpacks the parameters returned
|
// UnpackGetStatsStruct is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xee8161e0.
|
// from invoking the contract method with ID 0xee8161e0.
|
||||||
//
|
//
|
||||||
|
|
@ -179,11 +217,12 @@ func (dB *DB) UnpackGetStatsStruct(data []byte) (DBStats, error) {
|
||||||
return *new(DBStats), err
|
return *new(DBStats), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new(DBStats)).(*DBStats)
|
out0 := *abi.ConvertType(out[0], new(DBStats)).(*DBStats)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackInsert is the Go binding used to pack the parameters required for calling
|
// PackInsert is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x1d834a1b.
|
// the contract method with ID 0x1d834a1b. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function insert(uint256 k, uint256 v) returns(uint256)
|
// Solidity: function insert(uint256 k, uint256 v) returns(uint256)
|
||||||
func (dB *DB) PackInsert(k *big.Int, v *big.Int) []byte {
|
func (dB *DB) PackInsert(k *big.Int, v *big.Int) []byte {
|
||||||
|
|
@ -194,6 +233,15 @@ func (dB *DB) PackInsert(k *big.Int, v *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackInsert is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x1d834a1b. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function insert(uint256 k, uint256 v) returns(uint256)
|
||||||
|
func (dB *DB) TryPackInsert(k *big.Int, v *big.Int) ([]byte, error) {
|
||||||
|
return dB.abi.Pack("insert", k, v)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackInsert is the Go binding that unpacks the parameters returned
|
// UnpackInsert is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x1d834a1b.
|
// from invoking the contract method with ID 0x1d834a1b.
|
||||||
//
|
//
|
||||||
|
|
@ -204,7 +252,7 @@ func (dB *DB) UnpackInsert(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DBInsert represents a Insert event raised by the DB contract.
|
// DBInsert represents a Insert event raised by the DB contract.
|
||||||
|
|
@ -228,7 +276,7 @@ func (DBInsert) ContractEventName() string {
|
||||||
// Solidity: event Insert(uint256 key, uint256 value, uint256 length)
|
// Solidity: event Insert(uint256 key, uint256 value, uint256 length)
|
||||||
func (dB *DB) UnpackInsertEvent(log *types.Log) (*DBInsert, error) {
|
func (dB *DB) UnpackInsertEvent(log *types.Log) (*DBInsert, error) {
|
||||||
event := "Insert"
|
event := "Insert"
|
||||||
if log.Topics[0] != dB.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != dB.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(DBInsert)
|
out := new(DBInsert)
|
||||||
|
|
@ -270,7 +318,7 @@ func (DBKeyedInsert) ContractEventName() string {
|
||||||
// Solidity: event KeyedInsert(uint256 indexed key, uint256 value)
|
// Solidity: event KeyedInsert(uint256 indexed key, uint256 value)
|
||||||
func (dB *DB) UnpackKeyedInsertEvent(log *types.Log) (*DBKeyedInsert, error) {
|
func (dB *DB) UnpackKeyedInsertEvent(log *types.Log) (*DBKeyedInsert, error) {
|
||||||
event := "KeyedInsert"
|
event := "KeyedInsert"
|
||||||
if log.Topics[0] != dB.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != dB.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(DBKeyedInsert)
|
out := new(DBKeyedInsert)
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,8 @@ func (c *C) Instance(backend bind.ContractBackend, addr common.Address) *bind.Bo
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackEmitMulti is the Go binding used to pack the parameters required for calling
|
// PackEmitMulti is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xcb493749.
|
// the contract method with ID 0xcb493749. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function EmitMulti() returns()
|
// Solidity: function EmitMulti() returns()
|
||||||
func (c *C) PackEmitMulti() []byte {
|
func (c *C) PackEmitMulti() []byte {
|
||||||
|
|
@ -63,8 +64,18 @@ func (c *C) PackEmitMulti() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackEmitMulti is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xcb493749. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function EmitMulti() returns()
|
||||||
|
func (c *C) TryPackEmitMulti() ([]byte, error) {
|
||||||
|
return c.abi.Pack("EmitMulti")
|
||||||
|
}
|
||||||
|
|
||||||
// PackEmitOne is the Go binding used to pack the parameters required for calling
|
// PackEmitOne is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xe8e49a71.
|
// the contract method with ID 0xe8e49a71. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function EmitOne() returns()
|
// Solidity: function EmitOne() returns()
|
||||||
func (c *C) PackEmitOne() []byte {
|
func (c *C) PackEmitOne() []byte {
|
||||||
|
|
@ -75,6 +86,15 @@ func (c *C) PackEmitOne() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackEmitOne is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xe8e49a71. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function EmitOne() returns()
|
||||||
|
func (c *C) TryPackEmitOne() ([]byte, error) {
|
||||||
|
return c.abi.Pack("EmitOne")
|
||||||
|
}
|
||||||
|
|
||||||
// CBasic1 represents a basic1 event raised by the C contract.
|
// CBasic1 represents a basic1 event raised by the C contract.
|
||||||
type CBasic1 struct {
|
type CBasic1 struct {
|
||||||
Id *big.Int
|
Id *big.Int
|
||||||
|
|
@ -95,7 +115,7 @@ func (CBasic1) ContractEventName() string {
|
||||||
// Solidity: event basic1(uint256 indexed id, uint256 data)
|
// Solidity: event basic1(uint256 indexed id, uint256 data)
|
||||||
func (c *C) UnpackBasic1Event(log *types.Log) (*CBasic1, error) {
|
func (c *C) UnpackBasic1Event(log *types.Log) (*CBasic1, error) {
|
||||||
event := "basic1"
|
event := "basic1"
|
||||||
if log.Topics[0] != c.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != c.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(CBasic1)
|
out := new(CBasic1)
|
||||||
|
|
@ -137,7 +157,7 @@ func (CBasic2) ContractEventName() string {
|
||||||
// Solidity: event basic2(bool indexed flag, uint256 data)
|
// Solidity: event basic2(bool indexed flag, uint256 data)
|
||||||
func (c *C) UnpackBasic2Event(log *types.Log) (*CBasic2, error) {
|
func (c *C) UnpackBasic2Event(log *types.Log) (*CBasic2, error) {
|
||||||
event := "basic2"
|
event := "basic2"
|
||||||
if log.Topics[0] != c.abi.Events[event].ID {
|
if len(log.Topics) == 0 || log.Topics[0] != c.abi.Events[event].ID {
|
||||||
return nil, errors.New("event signature mismatch")
|
return nil, errors.New("event signature mismatch")
|
||||||
}
|
}
|
||||||
out := new(CBasic2)
|
out := new(CBasic2)
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,8 @@ func (c1 *C1) PackConstructor(v1 *big.Int, v2 *big.Int) []byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackDo is the Go binding used to pack the parameters required for calling
|
// PackDo is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x2ad11272.
|
// the contract method with ID 0x2ad11272. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function Do(uint256 val) pure returns(uint256 res)
|
// Solidity: function Do(uint256 val) pure returns(uint256 res)
|
||||||
func (c1 *C1) PackDo(val *big.Int) []byte {
|
func (c1 *C1) PackDo(val *big.Int) []byte {
|
||||||
|
|
@ -79,6 +80,15 @@ func (c1 *C1) PackDo(val *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackDo is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x2ad11272. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function Do(uint256 val) pure returns(uint256 res)
|
||||||
|
func (c1 *C1) TryPackDo(val *big.Int) ([]byte, error) {
|
||||||
|
return c1.abi.Pack("Do", val)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackDo is the Go binding that unpacks the parameters returned
|
// UnpackDo is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x2ad11272.
|
// from invoking the contract method with ID 0x2ad11272.
|
||||||
//
|
//
|
||||||
|
|
@ -89,7 +99,7 @@ func (c1 *C1) UnpackDo(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// C2MetaData contains all meta data concerning the C2 contract.
|
// C2MetaData contains all meta data concerning the C2 contract.
|
||||||
|
|
@ -136,7 +146,8 @@ func (c2 *C2) PackConstructor(v1 *big.Int, v2 *big.Int) []byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackDo is the Go binding used to pack the parameters required for calling
|
// PackDo is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x2ad11272.
|
// the contract method with ID 0x2ad11272. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function Do(uint256 val) pure returns(uint256 res)
|
// Solidity: function Do(uint256 val) pure returns(uint256 res)
|
||||||
func (c2 *C2) PackDo(val *big.Int) []byte {
|
func (c2 *C2) PackDo(val *big.Int) []byte {
|
||||||
|
|
@ -147,6 +158,15 @@ func (c2 *C2) PackDo(val *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackDo is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x2ad11272. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function Do(uint256 val) pure returns(uint256 res)
|
||||||
|
func (c2 *C2) TryPackDo(val *big.Int) ([]byte, error) {
|
||||||
|
return c2.abi.Pack("Do", val)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackDo is the Go binding that unpacks the parameters returned
|
// UnpackDo is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x2ad11272.
|
// from invoking the contract method with ID 0x2ad11272.
|
||||||
//
|
//
|
||||||
|
|
@ -157,7 +177,7 @@ func (c2 *C2) UnpackDo(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// L1MetaData contains all meta data concerning the L1 contract.
|
// L1MetaData contains all meta data concerning the L1 contract.
|
||||||
|
|
@ -188,7 +208,8 @@ func (c *L1) Instance(backend bind.ContractBackend, addr common.Address) *bind.B
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackDo is the Go binding used to pack the parameters required for calling
|
// PackDo is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x2ad11272.
|
// the contract method with ID 0x2ad11272. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function Do(uint256 val) pure returns(uint256)
|
// Solidity: function Do(uint256 val) pure returns(uint256)
|
||||||
func (l1 *L1) PackDo(val *big.Int) []byte {
|
func (l1 *L1) PackDo(val *big.Int) []byte {
|
||||||
|
|
@ -199,6 +220,15 @@ func (l1 *L1) PackDo(val *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackDo is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x2ad11272. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function Do(uint256 val) pure returns(uint256)
|
||||||
|
func (l1 *L1) TryPackDo(val *big.Int) ([]byte, error) {
|
||||||
|
return l1.abi.Pack("Do", val)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackDo is the Go binding that unpacks the parameters returned
|
// UnpackDo is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x2ad11272.
|
// from invoking the contract method with ID 0x2ad11272.
|
||||||
//
|
//
|
||||||
|
|
@ -209,7 +239,7 @@ func (l1 *L1) UnpackDo(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// L2MetaData contains all meta data concerning the L2 contract.
|
// L2MetaData contains all meta data concerning the L2 contract.
|
||||||
|
|
@ -243,7 +273,8 @@ func (c *L2) Instance(backend bind.ContractBackend, addr common.Address) *bind.B
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackDo is the Go binding used to pack the parameters required for calling
|
// PackDo is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x2ad11272.
|
// the contract method with ID 0x2ad11272. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function Do(uint256 val) pure returns(uint256)
|
// Solidity: function Do(uint256 val) pure returns(uint256)
|
||||||
func (l2 *L2) PackDo(val *big.Int) []byte {
|
func (l2 *L2) PackDo(val *big.Int) []byte {
|
||||||
|
|
@ -254,6 +285,15 @@ func (l2 *L2) PackDo(val *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackDo is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x2ad11272. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function Do(uint256 val) pure returns(uint256)
|
||||||
|
func (l2 *L2) TryPackDo(val *big.Int) ([]byte, error) {
|
||||||
|
return l2.abi.Pack("Do", val)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackDo is the Go binding that unpacks the parameters returned
|
// UnpackDo is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x2ad11272.
|
// from invoking the contract method with ID 0x2ad11272.
|
||||||
//
|
//
|
||||||
|
|
@ -264,7 +304,7 @@ func (l2 *L2) UnpackDo(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// L2bMetaData contains all meta data concerning the L2b contract.
|
// L2bMetaData contains all meta data concerning the L2b contract.
|
||||||
|
|
@ -298,7 +338,8 @@ func (c *L2b) Instance(backend bind.ContractBackend, addr common.Address) *bind.
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackDo is the Go binding used to pack the parameters required for calling
|
// PackDo is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x2ad11272.
|
// the contract method with ID 0x2ad11272. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function Do(uint256 val) pure returns(uint256)
|
// Solidity: function Do(uint256 val) pure returns(uint256)
|
||||||
func (l2b *L2b) PackDo(val *big.Int) []byte {
|
func (l2b *L2b) PackDo(val *big.Int) []byte {
|
||||||
|
|
@ -309,6 +350,15 @@ func (l2b *L2b) PackDo(val *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackDo is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x2ad11272. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function Do(uint256 val) pure returns(uint256)
|
||||||
|
func (l2b *L2b) TryPackDo(val *big.Int) ([]byte, error) {
|
||||||
|
return l2b.abi.Pack("Do", val)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackDo is the Go binding that unpacks the parameters returned
|
// UnpackDo is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x2ad11272.
|
// from invoking the contract method with ID 0x2ad11272.
|
||||||
//
|
//
|
||||||
|
|
@ -319,7 +369,7 @@ func (l2b *L2b) UnpackDo(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// L3MetaData contains all meta data concerning the L3 contract.
|
// L3MetaData contains all meta data concerning the L3 contract.
|
||||||
|
|
@ -350,7 +400,8 @@ func (c *L3) Instance(backend bind.ContractBackend, addr common.Address) *bind.B
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackDo is the Go binding used to pack the parameters required for calling
|
// PackDo is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x2ad11272.
|
// the contract method with ID 0x2ad11272. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function Do(uint256 val) pure returns(uint256)
|
// Solidity: function Do(uint256 val) pure returns(uint256)
|
||||||
func (l3 *L3) PackDo(val *big.Int) []byte {
|
func (l3 *L3) PackDo(val *big.Int) []byte {
|
||||||
|
|
@ -361,6 +412,15 @@ func (l3 *L3) PackDo(val *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackDo is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x2ad11272. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function Do(uint256 val) pure returns(uint256)
|
||||||
|
func (l3 *L3) TryPackDo(val *big.Int) ([]byte, error) {
|
||||||
|
return l3.abi.Pack("Do", val)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackDo is the Go binding that unpacks the parameters returned
|
// UnpackDo is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x2ad11272.
|
// from invoking the contract method with ID 0x2ad11272.
|
||||||
//
|
//
|
||||||
|
|
@ -371,7 +431,7 @@ func (l3 *L3) UnpackDo(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// L4MetaData contains all meta data concerning the L4 contract.
|
// L4MetaData contains all meta data concerning the L4 contract.
|
||||||
|
|
@ -406,7 +466,8 @@ func (c *L4) Instance(backend bind.ContractBackend, addr common.Address) *bind.B
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackDo is the Go binding used to pack the parameters required for calling
|
// PackDo is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x2ad11272.
|
// the contract method with ID 0x2ad11272. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function Do(uint256 val) pure returns(uint256)
|
// Solidity: function Do(uint256 val) pure returns(uint256)
|
||||||
func (l4 *L4) PackDo(val *big.Int) []byte {
|
func (l4 *L4) PackDo(val *big.Int) []byte {
|
||||||
|
|
@ -417,6 +478,15 @@ func (l4 *L4) PackDo(val *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackDo is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x2ad11272. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function Do(uint256 val) pure returns(uint256)
|
||||||
|
func (l4 *L4) TryPackDo(val *big.Int) ([]byte, error) {
|
||||||
|
return l4.abi.Pack("Do", val)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackDo is the Go binding that unpacks the parameters returned
|
// UnpackDo is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x2ad11272.
|
// from invoking the contract method with ID 0x2ad11272.
|
||||||
//
|
//
|
||||||
|
|
@ -427,7 +497,7 @@ func (l4 *L4) UnpackDo(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// L4bMetaData contains all meta data concerning the L4b contract.
|
// L4bMetaData contains all meta data concerning the L4b contract.
|
||||||
|
|
@ -461,7 +531,8 @@ func (c *L4b) Instance(backend bind.ContractBackend, addr common.Address) *bind.
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackDo is the Go binding used to pack the parameters required for calling
|
// PackDo is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0x2ad11272.
|
// the contract method with ID 0x2ad11272. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function Do(uint256 val) pure returns(uint256)
|
// Solidity: function Do(uint256 val) pure returns(uint256)
|
||||||
func (l4b *L4b) PackDo(val *big.Int) []byte {
|
func (l4b *L4b) PackDo(val *big.Int) []byte {
|
||||||
|
|
@ -472,6 +543,15 @@ func (l4b *L4b) PackDo(val *big.Int) []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackDo is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0x2ad11272. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function Do(uint256 val) pure returns(uint256)
|
||||||
|
func (l4b *L4b) TryPackDo(val *big.Int) ([]byte, error) {
|
||||||
|
return l4b.abi.Pack("Do", val)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackDo is the Go binding that unpacks the parameters returned
|
// UnpackDo is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0x2ad11272.
|
// from invoking the contract method with ID 0x2ad11272.
|
||||||
//
|
//
|
||||||
|
|
@ -482,5 +562,5 @@ func (l4b *L4b) UnpackDo(data []byte) (*big.Int, error) {
|
||||||
return new(big.Int), err
|
return new(big.Int), err
|
||||||
}
|
}
|
||||||
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
out0 := abi.ConvertType(out[0], new(big.Int)).(*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,8 @@ func (c *C) Instance(backend bind.ContractBackend, addr common.Address) *bind.Bo
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackBar is the Go binding used to pack the parameters required for calling
|
// PackBar is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xb0a378b0.
|
// the contract method with ID 0xb0a378b0. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function Bar() pure returns()
|
// Solidity: function Bar() pure returns()
|
||||||
func (c *C) PackBar() []byte {
|
func (c *C) PackBar() []byte {
|
||||||
|
|
@ -63,8 +64,18 @@ func (c *C) PackBar() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackBar is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xb0a378b0. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function Bar() pure returns()
|
||||||
|
func (c *C) TryPackBar() ([]byte, error) {
|
||||||
|
return c.abi.Pack("Bar")
|
||||||
|
}
|
||||||
|
|
||||||
// PackFoo is the Go binding used to pack the parameters required for calling
|
// PackFoo is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xbfb4ebcf.
|
// the contract method with ID 0xbfb4ebcf. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function Foo() pure returns()
|
// Solidity: function Foo() pure returns()
|
||||||
func (c *C) PackFoo() []byte {
|
func (c *C) PackFoo() []byte {
|
||||||
|
|
@ -75,6 +86,15 @@ func (c *C) PackFoo() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackFoo is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xbfb4ebcf. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function Foo() pure returns()
|
||||||
|
func (c *C) TryPackFoo() ([]byte, error) {
|
||||||
|
return c.abi.Pack("Foo")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackError attempts to decode the provided error data using user-defined
|
// UnpackError attempts to decode the provided error data using user-defined
|
||||||
// error definitions.
|
// error definitions.
|
||||||
func (c *C) UnpackError(raw []byte) (any, error) {
|
func (c *C) UnpackError(raw []byte) (any, error) {
|
||||||
|
|
@ -169,7 +189,8 @@ func (c *C2) Instance(backend bind.ContractBackend, addr common.Address) *bind.B
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackFoo is the Go binding used to pack the parameters required for calling
|
// PackFoo is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xbfb4ebcf.
|
// the contract method with ID 0xbfb4ebcf. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function Foo() pure returns()
|
// Solidity: function Foo() pure returns()
|
||||||
func (c2 *C2) PackFoo() []byte {
|
func (c2 *C2) PackFoo() []byte {
|
||||||
|
|
@ -180,6 +201,15 @@ func (c2 *C2) PackFoo() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackFoo is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xbfb4ebcf. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function Foo() pure returns()
|
||||||
|
func (c2 *C2) TryPackFoo() ([]byte, error) {
|
||||||
|
return c2.abi.Pack("Foo")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackError attempts to decode the provided error data using user-defined
|
// UnpackError attempts to decode the provided error data using user-defined
|
||||||
// error definitions.
|
// error definitions.
|
||||||
func (c2 *C2) UnpackError(raw []byte) (any, error) {
|
func (c2 *C2) UnpackError(raw []byte) (any, error) {
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,8 @@ func (c *MyContract) Instance(backend bind.ContractBackend, addr common.Address)
|
||||||
}
|
}
|
||||||
|
|
||||||
// PackGetNums is the Go binding used to pack the parameters required for calling
|
// PackGetNums is the Go binding used to pack the parameters required for calling
|
||||||
// the contract method with ID 0xbd6d1007.
|
// the contract method with ID 0xbd6d1007. This method will panic if any
|
||||||
|
// invalid/nil inputs are passed.
|
||||||
//
|
//
|
||||||
// Solidity: function GetNums() pure returns(uint256[5])
|
// Solidity: function GetNums() pure returns(uint256[5])
|
||||||
func (myContract *MyContract) PackGetNums() []byte {
|
func (myContract *MyContract) PackGetNums() []byte {
|
||||||
|
|
@ -63,6 +64,15 @@ func (myContract *MyContract) PackGetNums() []byte {
|
||||||
return enc
|
return enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryPackGetNums is the Go binding used to pack the parameters required for calling
|
||||||
|
// the contract method with ID 0xbd6d1007. This method will return an error
|
||||||
|
// if any inputs are invalid/nil.
|
||||||
|
//
|
||||||
|
// Solidity: function GetNums() pure returns(uint256[5])
|
||||||
|
func (myContract *MyContract) TryPackGetNums() ([]byte, error) {
|
||||||
|
return myContract.abi.Pack("GetNums")
|
||||||
|
}
|
||||||
|
|
||||||
// UnpackGetNums is the Go binding that unpacks the parameters returned
|
// UnpackGetNums is the Go binding that unpacks the parameters returned
|
||||||
// from invoking the contract method with ID 0xbd6d1007.
|
// from invoking the contract method with ID 0xbd6d1007.
|
||||||
//
|
//
|
||||||
|
|
@ -73,5 +83,5 @@ func (myContract *MyContract) UnpackGetNums(data []byte) ([5]*big.Int, error) {
|
||||||
return *new([5]*big.Int), err
|
return *new([5]*big.Int), err
|
||||||
}
|
}
|
||||||
out0 := *abi.ConvertType(out[0], new([5]*big.Int)).(*[5]*big.Int)
|
out0 := *abi.ConvertType(out[0], new([5]*big.Int)).(*[5]*big.Int)
|
||||||
return out0, err
|
return out0, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ package bind
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"math/big"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum"
|
"github.com/ethereum/go-ethereum"
|
||||||
"github.com/ethereum/go-ethereum/accounts/abi"
|
"github.com/ethereum/go-ethereum/accounts/abi"
|
||||||
|
|
@ -241,3 +242,27 @@ func DefaultDeployer(opts *TransactOpts, backend ContractBackend) DeployFn {
|
||||||
return addr, tx, nil
|
return addr, tx, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeployerWithNonceAssignment is basically identical to DefaultDeployer,
|
||||||
|
// but it additionally tracks the nonce to enable automatic assignment.
|
||||||
|
//
|
||||||
|
// This is especially useful when deploying multiple contracts
|
||||||
|
// from the same address — whether they are independent contracts
|
||||||
|
// or part of a dependency chain that must be deployed in order.
|
||||||
|
func DeployerWithNonceAssignment(opts *TransactOpts, backend ContractBackend) DeployFn {
|
||||||
|
var pendingNonce int64
|
||||||
|
if opts.Nonce != nil {
|
||||||
|
pendingNonce = opts.Nonce.Int64()
|
||||||
|
}
|
||||||
|
return func(input []byte, deployer []byte) (common.Address, *types.Transaction, error) {
|
||||||
|
if pendingNonce != 0 {
|
||||||
|
opts.Nonce = big.NewInt(pendingNonce)
|
||||||
|
}
|
||||||
|
addr, tx, err := DeployContract(opts, deployer, backend, input)
|
||||||
|
if err != nil {
|
||||||
|
return common.Address{}, nil, err
|
||||||
|
}
|
||||||
|
pendingNonce = int64(tx.Nonce() + 1)
|
||||||
|
return addr, tx, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,14 @@ func makeTestDeployer(backend simulated.Client) func(input, deployer []byte) (co
|
||||||
return bind.DefaultDeployer(bind.NewKeyedTransactor(testKey, chainId), backend)
|
return bind.DefaultDeployer(bind.NewKeyedTransactor(testKey, chainId), backend)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// makeTestDeployerWithNonceAssignment is similar to makeTestDeployer,
|
||||||
|
// but it returns a deployer that automatically tracks nonce,
|
||||||
|
// enabling the deployment of multiple contracts from the same account.
|
||||||
|
func makeTestDeployerWithNonceAssignment(backend simulated.Client) func(input, deployer []byte) (common.Address, *types.Transaction, error) {
|
||||||
|
chainId, _ := backend.ChainID(context.Background())
|
||||||
|
return bind.DeployerWithNonceAssignment(bind.NewKeyedTransactor(testKey, chainId), backend)
|
||||||
|
}
|
||||||
|
|
||||||
// test that deploying a contract with library dependencies works,
|
// test that deploying a contract with library dependencies works,
|
||||||
// verifying by calling method on the deployed contract.
|
// verifying by calling method on the deployed contract.
|
||||||
func TestDeploymentLibraries(t *testing.T) {
|
func TestDeploymentLibraries(t *testing.T) {
|
||||||
|
|
@ -80,7 +88,7 @@ func TestDeploymentLibraries(t *testing.T) {
|
||||||
Contracts: []*bind.MetaData{&nested_libraries.C1MetaData},
|
Contracts: []*bind.MetaData{&nested_libraries.C1MetaData},
|
||||||
Inputs: map[string][]byte{nested_libraries.C1MetaData.ID: constructorInput},
|
Inputs: map[string][]byte{nested_libraries.C1MetaData.ID: constructorInput},
|
||||||
}
|
}
|
||||||
res, err := bind.LinkAndDeploy(deploymentParams, makeTestDeployer(bindBackend.Client))
|
res, err := bind.LinkAndDeploy(deploymentParams, makeTestDeployerWithNonceAssignment(bindBackend.Client))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %+v\n", err)
|
t.Fatalf("err: %+v\n", err)
|
||||||
}
|
}
|
||||||
|
|
@ -122,7 +130,7 @@ func TestDeploymentWithOverrides(t *testing.T) {
|
||||||
deploymentParams := &bind.DeploymentParams{
|
deploymentParams := &bind.DeploymentParams{
|
||||||
Contracts: nested_libraries.C1MetaData.Deps,
|
Contracts: nested_libraries.C1MetaData.Deps,
|
||||||
}
|
}
|
||||||
res, err := bind.LinkAndDeploy(deploymentParams, makeTestDeployer(bindBackend))
|
res, err := bind.LinkAndDeploy(deploymentParams, makeTestDeployerWithNonceAssignment(bindBackend))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %+v\n", err)
|
t.Fatalf("err: %+v\n", err)
|
||||||
}
|
}
|
||||||
|
|
@ -359,3 +367,28 @@ func TestErrors(t *testing.T) {
|
||||||
t.Fatalf("bad unpacked error result: expected Arg4 to be false. got true")
|
t.Fatalf("bad unpacked error result: expected Arg4 to be false. got true")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestEventUnpackEmptyTopics(t *testing.T) {
|
||||||
|
c := events.NewC()
|
||||||
|
|
||||||
|
for _, log := range []*types.Log{
|
||||||
|
{Topics: []common.Hash{}},
|
||||||
|
{Topics: nil},
|
||||||
|
} {
|
||||||
|
_, err := c.UnpackBasic1Event(log)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("expected error when unpacking event with empty topics, got nil")
|
||||||
|
}
|
||||||
|
if err.Error() != "event signature mismatch" {
|
||||||
|
t.Fatalf("expected 'event signature mismatch' error, got: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = c.UnpackBasic2Event(log)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("expected error when unpacking event with empty topics, got nil")
|
||||||
|
}
|
||||||
|
if err.Error() != "event signature mismatch" {
|
||||||
|
t.Fatalf("expected 'event signature mismatch' error, got: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -100,22 +100,29 @@ func TestWaitDeployed(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestWaitDeployedCornerCases(t *testing.T) {
|
func TestWaitDeployedCornerCases(t *testing.T) {
|
||||||
backend := simulated.NewBackend(
|
var (
|
||||||
types.GenesisAlloc{
|
backend = simulated.NewBackend(
|
||||||
crypto.PubkeyToAddress(testKey.PublicKey): {Balance: big.NewInt(10000000000000000)},
|
types.GenesisAlloc{
|
||||||
},
|
crypto.PubkeyToAddress(testKey.PublicKey): {Balance: big.NewInt(10000000000000000)},
|
||||||
|
},
|
||||||
|
)
|
||||||
|
head, _ = backend.Client().HeaderByNumber(t.Context(), nil) // Should be child's, good enough
|
||||||
|
gasPrice = new(big.Int).Add(head.BaseFee, big.NewInt(1))
|
||||||
|
signer = types.LatestSigner(params.AllDevChainProtocolChanges)
|
||||||
|
code = common.FromHex("6060604052600a8060106000396000f360606040526008565b00")
|
||||||
|
ctx, cancel = context.WithCancel(t.Context())
|
||||||
)
|
)
|
||||||
defer backend.Close()
|
defer backend.Close()
|
||||||
|
|
||||||
head, _ := backend.Client().HeaderByNumber(context.Background(), nil) // Should be child's, good enough
|
// 1. WaitDeploy on a transaction that does not deploy a contract, verify it
|
||||||
gasPrice := new(big.Int).Add(head.BaseFee, big.NewInt(1))
|
// returns an error.
|
||||||
|
tx := types.MustSignNewTx(testKey, signer, &types.LegacyTx{
|
||||||
// Create a transaction to an account.
|
Nonce: 0,
|
||||||
code := "6060604052600a8060106000396000f360606040526008565b00"
|
To: &common.Address{0x01},
|
||||||
tx := types.NewTransaction(0, common.HexToAddress("0x01"), big.NewInt(0), 3000000, gasPrice, common.FromHex(code))
|
Gas: 300000,
|
||||||
tx, _ = types.SignTx(tx, types.LatestSigner(params.AllDevChainProtocolChanges), testKey)
|
GasPrice: gasPrice,
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
Data: code,
|
||||||
defer cancel()
|
})
|
||||||
if err := backend.Client().SendTransaction(ctx, tx); err != nil {
|
if err := backend.Client().SendTransaction(ctx, tx); err != nil {
|
||||||
t.Errorf("failed to send transaction: %q", err)
|
t.Errorf("failed to send transaction: %q", err)
|
||||||
}
|
}
|
||||||
|
|
@ -124,14 +131,23 @@ func TestWaitDeployedCornerCases(t *testing.T) {
|
||||||
t.Errorf("error mismatch: want %q, got %q, ", bind.ErrNoAddressInReceipt, err)
|
t.Errorf("error mismatch: want %q, got %q, ", bind.ErrNoAddressInReceipt, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a transaction that is not mined.
|
// 2. Create a contract, but cancel the WaitDeploy before it is mined.
|
||||||
tx = types.NewContractCreation(1, big.NewInt(0), 3000000, gasPrice, common.FromHex(code))
|
tx = types.MustSignNewTx(testKey, signer, &types.LegacyTx{
|
||||||
tx, _ = types.SignTx(tx, types.LatestSigner(params.AllDevChainProtocolChanges), testKey)
|
Nonce: 1,
|
||||||
|
Gas: 300000,
|
||||||
|
GasPrice: gasPrice,
|
||||||
|
Data: code,
|
||||||
|
})
|
||||||
|
|
||||||
|
// Wait in another thread so that we can quickly cancel it after submitting
|
||||||
|
// the transaction.
|
||||||
|
done := make(chan struct{})
|
||||||
go func() {
|
go func() {
|
||||||
contextCanceled := errors.New("context canceled")
|
defer close(done)
|
||||||
if _, err := bind.WaitDeployed(ctx, backend.Client(), tx.Hash()); err.Error() != contextCanceled.Error() {
|
want := errors.New("context canceled")
|
||||||
t.Errorf("error mismatch: want %q, got %q, ", contextCanceled, err)
|
_, err := bind.WaitDeployed(ctx, backend.Client(), tx.Hash())
|
||||||
|
if err == nil || errors.Is(want, err) {
|
||||||
|
t.Errorf("error mismatch: want %v, got %v", want, err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|
@ -139,4 +155,11 @@ func TestWaitDeployedCornerCases(t *testing.T) {
|
||||||
t.Errorf("failed to send transaction: %q", err)
|
t.Errorf("failed to send transaction: %q", err)
|
||||||
}
|
}
|
||||||
cancel()
|
cancel()
|
||||||
|
|
||||||
|
// Wait for goroutine to exit or for a timeout.
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-time.After(time.Second * 2):
|
||||||
|
t.Fatalf("failed to cancel wait deploy")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ func ConvertType(in interface{}, proto interface{}) interface{} {
|
||||||
// indirect recursively dereferences the value until it either gets the value
|
// indirect recursively dereferences the value until it either gets the value
|
||||||
// or finds a big.Int
|
// or finds a big.Int
|
||||||
func indirect(v reflect.Value) reflect.Value {
|
func indirect(v reflect.Value) reflect.Value {
|
||||||
if v.Kind() == reflect.Ptr && v.Elem().Type() != reflect.TypeOf(big.Int{}) {
|
if v.Kind() == reflect.Ptr && v.Elem().Type() != reflect.TypeFor[big.Int]() {
|
||||||
return indirect(v.Elem())
|
return indirect(v.Elem())
|
||||||
}
|
}
|
||||||
return v
|
return v
|
||||||
|
|
@ -65,32 +65,32 @@ func reflectIntType(unsigned bool, size int) reflect.Type {
|
||||||
if unsigned {
|
if unsigned {
|
||||||
switch size {
|
switch size {
|
||||||
case 8:
|
case 8:
|
||||||
return reflect.TypeOf(uint8(0))
|
return reflect.TypeFor[uint8]()
|
||||||
case 16:
|
case 16:
|
||||||
return reflect.TypeOf(uint16(0))
|
return reflect.TypeFor[uint16]()
|
||||||
case 32:
|
case 32:
|
||||||
return reflect.TypeOf(uint32(0))
|
return reflect.TypeFor[uint32]()
|
||||||
case 64:
|
case 64:
|
||||||
return reflect.TypeOf(uint64(0))
|
return reflect.TypeFor[uint64]()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
switch size {
|
switch size {
|
||||||
case 8:
|
case 8:
|
||||||
return reflect.TypeOf(int8(0))
|
return reflect.TypeFor[int8]()
|
||||||
case 16:
|
case 16:
|
||||||
return reflect.TypeOf(int16(0))
|
return reflect.TypeFor[int16]()
|
||||||
case 32:
|
case 32:
|
||||||
return reflect.TypeOf(int32(0))
|
return reflect.TypeFor[int32]()
|
||||||
case 64:
|
case 64:
|
||||||
return reflect.TypeOf(int64(0))
|
return reflect.TypeFor[int64]()
|
||||||
}
|
}
|
||||||
return reflect.TypeOf(&big.Int{})
|
return reflect.TypeFor[*big.Int]()
|
||||||
}
|
}
|
||||||
|
|
||||||
// mustArrayToByteSlice creates a new byte slice with the exact same size as value
|
// mustArrayToByteSlice creates a new byte slice with the exact same size as value
|
||||||
// and copies the bytes in value to the new slice.
|
// and copies the bytes in value to the new slice.
|
||||||
func mustArrayToByteSlice(value reflect.Value) reflect.Value {
|
func mustArrayToByteSlice(value reflect.Value) reflect.Value {
|
||||||
slice := reflect.MakeSlice(reflect.TypeOf([]byte{}), value.Len(), value.Len())
|
slice := reflect.ValueOf(make([]byte, value.Len()))
|
||||||
reflect.Copy(slice, value)
|
reflect.Copy(slice, value)
|
||||||
return slice
|
return slice
|
||||||
}
|
}
|
||||||
|
|
@ -104,7 +104,7 @@ func set(dst, src reflect.Value) error {
|
||||||
switch {
|
switch {
|
||||||
case dstType.Kind() == reflect.Interface && dst.Elem().IsValid() && (dst.Elem().Type().Kind() == reflect.Ptr || dst.Elem().CanSet()):
|
case dstType.Kind() == reflect.Interface && dst.Elem().IsValid() && (dst.Elem().Type().Kind() == reflect.Ptr || dst.Elem().CanSet()):
|
||||||
return set(dst.Elem(), src)
|
return set(dst.Elem(), src)
|
||||||
case dstType.Kind() == reflect.Ptr && dstType.Elem() != reflect.TypeOf(big.Int{}):
|
case dstType.Kind() == reflect.Ptr && dstType.Elem() != reflect.TypeFor[big.Int]():
|
||||||
return set(dst.Elem(), src)
|
return set(dst.Elem(), src)
|
||||||
case srcType.AssignableTo(dstType) && dst.CanSet():
|
case srcType.AssignableTo(dstType) && dst.CanSet():
|
||||||
dst.Set(src)
|
dst.Set(src)
|
||||||
|
|
|
||||||
|
|
@ -204,12 +204,12 @@ func TestConvertType(t *testing.T) {
|
||||||
var fields []reflect.StructField
|
var fields []reflect.StructField
|
||||||
fields = append(fields, reflect.StructField{
|
fields = append(fields, reflect.StructField{
|
||||||
Name: "X",
|
Name: "X",
|
||||||
Type: reflect.TypeOf(new(big.Int)),
|
Type: reflect.TypeFor[*big.Int](),
|
||||||
Tag: "json:\"" + "x" + "\"",
|
Tag: "json:\"" + "x" + "\"",
|
||||||
})
|
})
|
||||||
fields = append(fields, reflect.StructField{
|
fields = append(fields, reflect.StructField{
|
||||||
Name: "Y",
|
Name: "Y",
|
||||||
Type: reflect.TypeOf(new(big.Int)),
|
Type: reflect.TypeFor[*big.Int](),
|
||||||
Tag: "json:\"" + "y" + "\"",
|
Tag: "json:\"" + "y" + "\"",
|
||||||
})
|
})
|
||||||
val := reflect.New(reflect.StructOf(fields))
|
val := reflect.New(reflect.StructOf(fields))
|
||||||
|
|
|
||||||
|
|
@ -238,9 +238,9 @@ func (t Type) GetType() reflect.Type {
|
||||||
case UintTy:
|
case UintTy:
|
||||||
return reflectIntType(true, t.Size)
|
return reflectIntType(true, t.Size)
|
||||||
case BoolTy:
|
case BoolTy:
|
||||||
return reflect.TypeOf(false)
|
return reflect.TypeFor[bool]()
|
||||||
case StringTy:
|
case StringTy:
|
||||||
return reflect.TypeOf("")
|
return reflect.TypeFor[string]()
|
||||||
case SliceTy:
|
case SliceTy:
|
||||||
return reflect.SliceOf(t.Elem.GetType())
|
return reflect.SliceOf(t.Elem.GetType())
|
||||||
case ArrayTy:
|
case ArrayTy:
|
||||||
|
|
@ -248,19 +248,15 @@ func (t Type) GetType() reflect.Type {
|
||||||
case TupleTy:
|
case TupleTy:
|
||||||
return t.TupleType
|
return t.TupleType
|
||||||
case AddressTy:
|
case AddressTy:
|
||||||
return reflect.TypeOf(common.Address{})
|
return reflect.TypeFor[common.Address]()
|
||||||
case FixedBytesTy:
|
case FixedBytesTy:
|
||||||
return reflect.ArrayOf(t.Size, reflect.TypeOf(byte(0)))
|
return reflect.ArrayOf(t.Size, reflect.TypeFor[byte]())
|
||||||
case BytesTy:
|
case BytesTy:
|
||||||
return reflect.SliceOf(reflect.TypeOf(byte(0)))
|
return reflect.TypeFor[[]byte]()
|
||||||
case HashTy:
|
case HashTy, FixedPointTy: // currently not used
|
||||||
// hashtype currently not used
|
return reflect.TypeFor[[32]byte]()
|
||||||
return reflect.ArrayOf(32, reflect.TypeOf(byte(0)))
|
|
||||||
case FixedPointTy:
|
|
||||||
// fixedpoint type currently not used
|
|
||||||
return reflect.ArrayOf(32, reflect.TypeOf(byte(0)))
|
|
||||||
case FunctionTy:
|
case FunctionTy:
|
||||||
return reflect.ArrayOf(24, reflect.TypeOf(byte(0)))
|
return reflect.TypeFor[[24]byte]()
|
||||||
default:
|
default:
|
||||||
panic("Invalid type")
|
panic("Invalid type")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
// Package keystore implements encrypted storage of secp256k1 private keys.
|
// Package keystore implements encrypted storage of secp256k1 private keys.
|
||||||
//
|
//
|
||||||
// Keys are stored as encrypted JSON files according to the Web3 Secret Storage specification.
|
// Keys are stored as encrypted JSON files according to the Web3 Secret Storage specification.
|
||||||
// See https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition for more information.
|
// See https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage/ for more information.
|
||||||
package keystore
|
package keystore
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
@ -50,7 +50,7 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
// KeyStoreType is the reflect type of a keystore backend.
|
// KeyStoreType is the reflect type of a keystore backend.
|
||||||
var KeyStoreType = reflect.TypeOf(&KeyStore{})
|
var KeyStoreType = reflect.TypeFor[*KeyStore]()
|
||||||
|
|
||||||
// KeyStoreScheme is the protocol scheme prefixing account and wallet URLs.
|
// KeyStoreScheme is the protocol scheme prefixing account and wallet URLs.
|
||||||
const KeyStoreScheme = "keystore"
|
const KeyStoreScheme = "keystore"
|
||||||
|
|
@ -99,9 +99,10 @@ func (ks *KeyStore) init(keydir string) {
|
||||||
// TODO: In order for this finalizer to work, there must be no references
|
// TODO: In order for this finalizer to work, there must be no references
|
||||||
// to ks. addressCache doesn't keep a reference but unlocked keys do,
|
// to ks. addressCache doesn't keep a reference but unlocked keys do,
|
||||||
// so the finalizer will not trigger until all timed unlocks have expired.
|
// so the finalizer will not trigger until all timed unlocks have expired.
|
||||||
runtime.SetFinalizer(ks, func(m *KeyStore) {
|
runtime.AddCleanup(ks, func(c *accountCache) {
|
||||||
m.cache.close()
|
c.close()
|
||||||
})
|
}, ks.cache)
|
||||||
|
|
||||||
// Create the initial list of wallets from the cache
|
// Create the initial list of wallets from the cache
|
||||||
accs := ks.cache.accounts()
|
accs := ks.cache.accounts()
|
||||||
ks.wallets = make([]accounts.Wallet, len(accs))
|
ks.wallets = make([]accounts.Wallet, len(accs))
|
||||||
|
|
@ -195,11 +196,14 @@ func (ks *KeyStore) Subscribe(sink chan<- accounts.WalletEvent) event.Subscripti
|
||||||
// forces a manual refresh (only triggers for systems where the filesystem notifier
|
// forces a manual refresh (only triggers for systems where the filesystem notifier
|
||||||
// is not running).
|
// is not running).
|
||||||
func (ks *KeyStore) updater() {
|
func (ks *KeyStore) updater() {
|
||||||
|
ticker := time.NewTicker(walletRefreshCycle)
|
||||||
|
defer ticker.Stop()
|
||||||
|
|
||||||
for {
|
for {
|
||||||
// Wait for an account update or a refresh timeout
|
// Wait for an account update or a refresh timeout
|
||||||
select {
|
select {
|
||||||
case <-ks.changes:
|
case <-ks.changes:
|
||||||
case <-time.After(walletRefreshCycle):
|
case <-ticker.C:
|
||||||
}
|
}
|
||||||
// Run the wallet refresher
|
// Run the wallet refresher
|
||||||
ks.refreshWallets()
|
ks.refreshWallets()
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
This key store behaves as KeyStorePlain with the difference that
|
This key store behaves as KeyStorePlain with the difference that
|
||||||
the private key is encrypted and on disk uses another JSON encoding.
|
the private key is encrypted and on disk uses another JSON encoding.
|
||||||
|
|
||||||
The crypto is documented at https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition
|
The crypto is documented at https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage/
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -93,9 +93,6 @@ func NewManager(config *Config, backends ...Backend) *Manager {
|
||||||
|
|
||||||
// Close terminates the account manager's internal notification processes.
|
// Close terminates the account manager's internal notification processes.
|
||||||
func (am *Manager) Close() error {
|
func (am *Manager) Close() error {
|
||||||
for _, w := range am.wallets {
|
|
||||||
w.Close()
|
|
||||||
}
|
|
||||||
errc := make(chan error)
|
errc := make(chan error)
|
||||||
am.quit <- errc
|
am.quit <- errc
|
||||||
return <-errc
|
return <-errc
|
||||||
|
|
@ -149,6 +146,10 @@ func (am *Manager) update() {
|
||||||
am.lock.Unlock()
|
am.lock.Unlock()
|
||||||
close(event.processed)
|
close(event.processed)
|
||||||
case errc := <-am.quit:
|
case errc := <-am.quit:
|
||||||
|
// Close all owned wallets
|
||||||
|
for _, w := range am.wallets {
|
||||||
|
w.Close()
|
||||||
|
}
|
||||||
// Manager terminating, return
|
// Manager terminating, return
|
||||||
errc <- nil
|
errc <- nil
|
||||||
// Signals event emitters the loop is not receiving values
|
// Signals event emitters the loop is not receiving values
|
||||||
|
|
|
||||||
|
|
@ -472,6 +472,11 @@ func (w *Wallet) selfDerive() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
pairing := w.Hub.pairing(w)
|
pairing := w.Hub.pairing(w)
|
||||||
|
if pairing == nil {
|
||||||
|
w.lock.Unlock()
|
||||||
|
reqc <- struct{}{}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
// Device lock obtained, derive the next batch of accounts
|
// Device lock obtained, derive the next batch of accounts
|
||||||
var (
|
var (
|
||||||
|
|
@ -631,13 +636,13 @@ func (w *Wallet) Derive(path accounts.DerivationPath, pin bool) (accounts.Accoun
|
||||||
}
|
}
|
||||||
|
|
||||||
if pin {
|
if pin {
|
||||||
pairing := w.Hub.pairing(w)
|
if pairing := w.Hub.pairing(w); pairing != nil {
|
||||||
pairing.Accounts[account.Address] = path
|
pairing.Accounts[account.Address] = path
|
||||||
if err := w.Hub.setPairing(w, pairing); err != nil {
|
if err := w.Hub.setPairing(w, pairing); err != nil {
|
||||||
return accounts.Account{}, err
|
return accounts.Account{}, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return account, nil
|
return account, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -774,11 +779,11 @@ func (w *Wallet) SignTxWithPassphrase(account accounts.Account, passphrase strin
|
||||||
// It first checks for the address in the list of pinned accounts, and if it is
|
// It first checks for the address in the list of pinned accounts, and if it is
|
||||||
// not found, attempts to parse the derivation path from the account's URL.
|
// not found, attempts to parse the derivation path from the account's URL.
|
||||||
func (w *Wallet) findAccountPath(account accounts.Account) (accounts.DerivationPath, error) {
|
func (w *Wallet) findAccountPath(account accounts.Account) (accounts.DerivationPath, error) {
|
||||||
pairing := w.Hub.pairing(w)
|
if pairing := w.Hub.pairing(w); pairing != nil {
|
||||||
if path, ok := pairing.Accounts[account.Address]; ok {
|
if path, ok := pairing.Accounts[account.Address]; ok {
|
||||||
return path, nil
|
return path, nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Look for the path in the URL
|
// Look for the path in the URL
|
||||||
if account.URL.Scheme != w.Hub.scheme {
|
if account.URL.Scheme != w.Hub.scheme {
|
||||||
return nil, fmt.Errorf("scheme %s does not match wallet scheme %s", account.URL.Scheme, w.Hub.scheme)
|
return nil, fmt.Errorf("scheme %s does not match wallet scheme %s", account.URL.Scheme, w.Hub.scheme)
|
||||||
|
|
|
||||||
|
|
@ -166,7 +166,7 @@ func (w *ledgerDriver) SignTx(path accounts.DerivationPath, tx *types.Transactio
|
||||||
return common.Address{}, nil, accounts.ErrWalletClosed
|
return common.Address{}, nil, accounts.ErrWalletClosed
|
||||||
}
|
}
|
||||||
// Ensure the wallet is capable of signing the given transaction
|
// Ensure the wallet is capable of signing the given transaction
|
||||||
if chainID != nil && w.version[0] <= 1 && w.version[1] <= 0 && w.version[2] <= 2 {
|
if chainID != nil && (w.version[0] < 1 || (w.version[0] == 1 && w.version[1] == 0 && w.version[2] < 3)) {
|
||||||
//lint:ignore ST1005 brand name displayed on the console
|
//lint:ignore ST1005 brand name displayed on the console
|
||||||
return common.Address{}, nil, fmt.Errorf("Ledger v%d.%d.%d doesn't support signing this transaction, please update to v1.0.3 at least", w.version[0], w.version[1], w.version[2])
|
return common.Address{}, nil, fmt.Errorf("Ledger v%d.%d.%d doesn't support signing this transaction, please update to v1.0.3 at least", w.version[0], w.version[1], w.version[2])
|
||||||
}
|
}
|
||||||
|
|
|
||||||
22
appveyor.yml
22
appveyor.yml
|
|
@ -2,7 +2,6 @@ clone_depth: 5
|
||||||
version: "{branch}.{build}"
|
version: "{branch}.{build}"
|
||||||
|
|
||||||
image:
|
image:
|
||||||
- Ubuntu
|
|
||||||
- Visual Studio 2019
|
- Visual Studio 2019
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
|
|
@ -17,25 +16,6 @@ install:
|
||||||
- go version
|
- go version
|
||||||
|
|
||||||
for:
|
for:
|
||||||
# Linux has its own script without -arch and -cc.
|
|
||||||
# The linux builder also runs lint.
|
|
||||||
- matrix:
|
|
||||||
only:
|
|
||||||
- image: Ubuntu
|
|
||||||
build_script:
|
|
||||||
- go run build/ci.go lint
|
|
||||||
- go run build/ci.go check_generate
|
|
||||||
- go run build/ci.go check_baddeps
|
|
||||||
- go run build/ci.go install -dlgo
|
|
||||||
test_script:
|
|
||||||
- go run build/ci.go test -dlgo -short
|
|
||||||
|
|
||||||
# linux/386 is disabled.
|
|
||||||
- matrix:
|
|
||||||
exclude:
|
|
||||||
- image: Ubuntu
|
|
||||||
GETH_ARCH: 386
|
|
||||||
|
|
||||||
# Windows builds for amd64 + 386.
|
# Windows builds for amd64 + 386.
|
||||||
- matrix:
|
- matrix:
|
||||||
only:
|
only:
|
||||||
|
|
@ -56,4 +36,4 @@ for:
|
||||||
- go run build/ci.go archive -arch %GETH_ARCH% -type zip -signer WINDOWS_SIGNING_KEY -upload gethstore/builds
|
- go run build/ci.go archive -arch %GETH_ARCH% -type zip -signer WINDOWS_SIGNING_KEY -upload gethstore/builds
|
||||||
- go run build/ci.go nsis -arch %GETH_ARCH% -signer WINDOWS_SIGNING_KEY -upload gethstore/builds
|
- go run build/ci.go nsis -arch %GETH_ARCH% -signer WINDOWS_SIGNING_KEY -upload gethstore/builds
|
||||||
test_script:
|
test_script:
|
||||||
- go run build/ci.go test -dlgo -arch %GETH_ARCH% -cc %GETH_CC% -short
|
- go run build/ci.go test -dlgo -arch %GETH_ARCH% -cc %GETH_CC% -short -skip-spectests
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ var (
|
||||||
testServer2 = testServer("testServer2")
|
testServer2 = testServer("testServer2")
|
||||||
|
|
||||||
testBlock1 = types.NewBeaconBlock(&deneb.BeaconBlock{
|
testBlock1 = types.NewBeaconBlock(&deneb.BeaconBlock{
|
||||||
Slot: 123,
|
Slot: 127,
|
||||||
Body: deneb.BeaconBlockBody{
|
Body: deneb.BeaconBlockBody{
|
||||||
ExecutionPayload: deneb.ExecutionPayload{
|
ExecutionPayload: deneb.ExecutionPayload{
|
||||||
BlockNumber: 456,
|
BlockNumber: 456,
|
||||||
|
|
@ -41,7 +41,7 @@ var (
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
testBlock2 = types.NewBeaconBlock(&deneb.BeaconBlock{
|
testBlock2 = types.NewBeaconBlock(&deneb.BeaconBlock{
|
||||||
Slot: 124,
|
Slot: 128,
|
||||||
Body: deneb.BeaconBlockBody{
|
Body: deneb.BeaconBlockBody{
|
||||||
ExecutionPayload: deneb.ExecutionPayload{
|
ExecutionPayload: deneb.ExecutionPayload{
|
||||||
BlockNumber: 457,
|
BlockNumber: 457,
|
||||||
|
|
@ -49,6 +49,14 @@ var (
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
testFinal1 = types.NewExecutionHeader(&deneb.ExecutionPayloadHeader{
|
||||||
|
BlockNumber: 395,
|
||||||
|
BlockHash: zrntcommon.Hash32(common.HexToHash("abbe7625624bf8ddd84723709e2758956289465dd23475f02387e0854942666")),
|
||||||
|
})
|
||||||
|
testFinal2 = types.NewExecutionHeader(&deneb.ExecutionPayloadHeader{
|
||||||
|
BlockNumber: 420,
|
||||||
|
BlockHash: zrntcommon.Hash32(common.HexToHash("9182a6ef8723654de174283750932ccc092378549836bf4873657eeec474598")),
|
||||||
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
type testServer string
|
type testServer string
|
||||||
|
|
@ -66,9 +74,10 @@ func TestBlockSync(t *testing.T) {
|
||||||
ts.AddServer(testServer1, 1)
|
ts.AddServer(testServer1, 1)
|
||||||
ts.AddServer(testServer2, 1)
|
ts.AddServer(testServer2, 1)
|
||||||
|
|
||||||
expHeadBlock := func(expHead *types.BeaconBlock) {
|
expHeadEvent := func(expHead *types.BeaconBlock, expFinal *types.ExecutionHeader) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
var expNumber, headNumber uint64
|
var expNumber, headNumber uint64
|
||||||
|
var expFinalHash, finalHash common.Hash
|
||||||
if expHead != nil {
|
if expHead != nil {
|
||||||
p, err := expHead.ExecutionPayload()
|
p, err := expHead.ExecutionPayload()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -76,19 +85,26 @@ func TestBlockSync(t *testing.T) {
|
||||||
}
|
}
|
||||||
expNumber = p.NumberU64()
|
expNumber = p.NumberU64()
|
||||||
}
|
}
|
||||||
|
if expFinal != nil {
|
||||||
|
expFinalHash = expFinal.BlockHash()
|
||||||
|
}
|
||||||
select {
|
select {
|
||||||
case event := <-headCh:
|
case event := <-headCh:
|
||||||
headNumber = event.Block.NumberU64()
|
headNumber = event.Block.NumberU64()
|
||||||
|
finalHash = event.Finalized
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
if headNumber != expNumber {
|
if headNumber != expNumber {
|
||||||
t.Errorf("Wrong head block, expected block number %d, got %d)", expNumber, headNumber)
|
t.Errorf("Wrong head block, expected block number %d, got %d)", expNumber, headNumber)
|
||||||
}
|
}
|
||||||
|
if finalHash != expFinalHash {
|
||||||
|
t.Errorf("Wrong finalized block, expected block hash %064x, got %064x)", expFinalHash[:], finalHash[:])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// no block requests expected until head tracker knows about a head
|
// no block requests expected until head tracker knows about a head
|
||||||
ts.Run(1)
|
ts.Run(1)
|
||||||
expHeadBlock(nil)
|
expHeadEvent(nil, nil)
|
||||||
|
|
||||||
// set block 1 as prefetch head, announced by server 2
|
// set block 1 as prefetch head, announced by server 2
|
||||||
head1 := blockHeadInfo(testBlock1)
|
head1 := blockHeadInfo(testBlock1)
|
||||||
|
|
@ -103,12 +119,13 @@ func TestBlockSync(t *testing.T) {
|
||||||
ts.AddAllowance(testServer2, 1)
|
ts.AddAllowance(testServer2, 1)
|
||||||
ts.Run(3)
|
ts.Run(3)
|
||||||
// head block still not expected as the fetched block is not the validated head yet
|
// head block still not expected as the fetched block is not the validated head yet
|
||||||
expHeadBlock(nil)
|
expHeadEvent(nil, nil)
|
||||||
|
|
||||||
// set as validated head, expect no further requests but block 1 set as head block
|
// set as validated head, expect no further requests but block 1 set as head block
|
||||||
ht.validated.Header = testBlock1.Header()
|
ht.validated.Header = testBlock1.Header()
|
||||||
|
ht.finalized, ht.finalizedPayload = testBlock1.Header(), testFinal1
|
||||||
ts.Run(4)
|
ts.Run(4)
|
||||||
expHeadBlock(testBlock1)
|
expHeadEvent(testBlock1, testFinal1)
|
||||||
|
|
||||||
// set block 2 as prefetch head, announced by server 1
|
// set block 2 as prefetch head, announced by server 1
|
||||||
head2 := blockHeadInfo(testBlock2)
|
head2 := blockHeadInfo(testBlock2)
|
||||||
|
|
@ -126,17 +143,26 @@ func TestBlockSync(t *testing.T) {
|
||||||
// expect req2 retry to server 2
|
// expect req2 retry to server 2
|
||||||
ts.Run(7, testServer2, sync.ReqBeaconBlock(head2.BlockRoot))
|
ts.Run(7, testServer2, sync.ReqBeaconBlock(head2.BlockRoot))
|
||||||
// now head block should be unavailable again
|
// now head block should be unavailable again
|
||||||
expHeadBlock(nil)
|
expHeadEvent(nil, nil)
|
||||||
|
|
||||||
// valid response, now head block should be block 2 immediately as it is already validated
|
// valid response, now head block should be block 2 immediately as it is already validated
|
||||||
|
// but head event is still not expected because an epoch boundary was crossed and the
|
||||||
|
// expected finality update has not arrived yet
|
||||||
ts.RequestEvent(request.EvResponse, ts.Request(7, 1), testBlock2)
|
ts.RequestEvent(request.EvResponse, ts.Request(7, 1), testBlock2)
|
||||||
ts.Run(8)
|
ts.Run(8)
|
||||||
expHeadBlock(testBlock2)
|
expHeadEvent(nil, nil)
|
||||||
|
|
||||||
|
// expected finality update arrived, now a head event is expected
|
||||||
|
ht.finalized, ht.finalizedPayload = testBlock2.Header(), testFinal2
|
||||||
|
ts.Run(9)
|
||||||
|
expHeadEvent(testBlock2, testFinal2)
|
||||||
}
|
}
|
||||||
|
|
||||||
type testHeadTracker struct {
|
type testHeadTracker struct {
|
||||||
prefetch types.HeadInfo
|
prefetch types.HeadInfo
|
||||||
validated types.SignedHeader
|
validated types.SignedHeader
|
||||||
|
finalized types.Header
|
||||||
|
finalizedPayload *types.ExecutionHeader
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *testHeadTracker) PrefetchHead() types.HeadInfo {
|
func (h *testHeadTracker) PrefetchHead() types.HeadInfo {
|
||||||
|
|
@ -151,13 +177,14 @@ func (h *testHeadTracker) ValidatedOptimistic() (types.OptimisticUpdate, bool) {
|
||||||
}, h.validated.Header != (types.Header{})
|
}, h.validated.Header != (types.Header{})
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO add test case for finality
|
|
||||||
func (h *testHeadTracker) ValidatedFinality() (types.FinalityUpdate, bool) {
|
func (h *testHeadTracker) ValidatedFinality() (types.FinalityUpdate, bool) {
|
||||||
finalized := types.NewExecutionHeader(new(deneb.ExecutionPayloadHeader))
|
if h.validated.Header == (types.Header{}) || h.finalizedPayload == nil {
|
||||||
|
return types.FinalityUpdate{}, false
|
||||||
|
}
|
||||||
return types.FinalityUpdate{
|
return types.FinalityUpdate{
|
||||||
Attested: types.HeaderWithExecProof{Header: h.validated.Header},
|
Attested: types.HeaderWithExecProof{Header: h.finalized},
|
||||||
Finalized: types.HeaderWithExecProof{PayloadHeader: finalized},
|
Finalized: types.HeaderWithExecProof{Header: h.finalized, PayloadHeader: h.finalizedPayload},
|
||||||
Signature: h.validated.Signature,
|
Signature: h.validated.Signature,
|
||||||
SignatureSlot: h.validated.SignatureSlot,
|
SignatureSlot: h.validated.SignatureSlot,
|
||||||
}, h.validated.Header != (types.Header{})
|
}, true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ func (e ExecutionPayloadEnvelope) MarshalJSON() ([]byte, error) {
|
||||||
type ExecutionPayloadEnvelope struct {
|
type ExecutionPayloadEnvelope struct {
|
||||||
ExecutionPayload *ExecutableData `json:"executionPayload" gencodec:"required"`
|
ExecutionPayload *ExecutableData `json:"executionPayload" gencodec:"required"`
|
||||||
BlockValue *hexutil.Big `json:"blockValue" gencodec:"required"`
|
BlockValue *hexutil.Big `json:"blockValue" gencodec:"required"`
|
||||||
BlobsBundle *BlobsBundleV1 `json:"blobsBundle"`
|
BlobsBundle *BlobsBundle `json:"blobsBundle"`
|
||||||
Requests []hexutil.Bytes `json:"executionRequests"`
|
Requests []hexutil.Bytes `json:"executionRequests"`
|
||||||
Override bool `json:"shouldOverrideBuilder"`
|
Override bool `json:"shouldOverrideBuilder"`
|
||||||
Witness *hexutil.Bytes `json:"witness,omitempty"`
|
Witness *hexutil.Bytes `json:"witness,omitempty"`
|
||||||
|
|
@ -42,7 +42,7 @@ func (e *ExecutionPayloadEnvelope) UnmarshalJSON(input []byte) error {
|
||||||
type ExecutionPayloadEnvelope struct {
|
type ExecutionPayloadEnvelope struct {
|
||||||
ExecutionPayload *ExecutableData `json:"executionPayload" gencodec:"required"`
|
ExecutionPayload *ExecutableData `json:"executionPayload" gencodec:"required"`
|
||||||
BlockValue *hexutil.Big `json:"blockValue" gencodec:"required"`
|
BlockValue *hexutil.Big `json:"blockValue" gencodec:"required"`
|
||||||
BlobsBundle *BlobsBundleV1 `json:"blobsBundle"`
|
BlobsBundle *BlobsBundle `json:"blobsBundle"`
|
||||||
Requests []hexutil.Bytes `json:"executionRequests"`
|
Requests []hexutil.Bytes `json:"executionRequests"`
|
||||||
Override *bool `json:"shouldOverrideBuilder"`
|
Override *bool `json:"shouldOverrideBuilder"`
|
||||||
Witness *hexutil.Bytes `json:"witness,omitempty"`
|
Witness *hexutil.Bytes `json:"witness,omitempty"`
|
||||||
|
|
|
||||||
|
|
@ -33,8 +33,22 @@ import (
|
||||||
type PayloadVersion byte
|
type PayloadVersion byte
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
// PayloadV1 is the identifier of ExecutionPayloadV1 introduced in paris fork.
|
||||||
|
// https://github.com/ethereum/execution-apis/blob/main/src/engine/paris.md#executionpayloadv1
|
||||||
PayloadV1 PayloadVersion = 0x1
|
PayloadV1 PayloadVersion = 0x1
|
||||||
|
|
||||||
|
// PayloadV2 is the identifier of ExecutionPayloadV2 introduced in shanghai fork.
|
||||||
|
//
|
||||||
|
// https://github.com/ethereum/execution-apis/blob/main/src/engine/shanghai.md#executionpayloadv2
|
||||||
|
// ExecutionPayloadV2 has the syntax of ExecutionPayloadV1 and appends a
|
||||||
|
// single field: withdrawals.
|
||||||
PayloadV2 PayloadVersion = 0x2
|
PayloadV2 PayloadVersion = 0x2
|
||||||
|
|
||||||
|
// PayloadV3 is the identifier of ExecutionPayloadV3 introduced in cancun fork.
|
||||||
|
//
|
||||||
|
// https://github.com/ethereum/execution-apis/blob/main/src/engine/cancun.md#executionpayloadv3
|
||||||
|
// ExecutionPayloadV3 has the syntax of ExecutionPayloadV2 and appends the new
|
||||||
|
// fields: blobGasUsed and excessBlobGas.
|
||||||
PayloadV3 PayloadVersion = 0x3
|
PayloadV3 PayloadVersion = 0x3
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -106,13 +120,18 @@ type StatelessPayloadStatusV1 struct {
|
||||||
type ExecutionPayloadEnvelope struct {
|
type ExecutionPayloadEnvelope struct {
|
||||||
ExecutionPayload *ExecutableData `json:"executionPayload" gencodec:"required"`
|
ExecutionPayload *ExecutableData `json:"executionPayload" gencodec:"required"`
|
||||||
BlockValue *big.Int `json:"blockValue" gencodec:"required"`
|
BlockValue *big.Int `json:"blockValue" gencodec:"required"`
|
||||||
BlobsBundle *BlobsBundleV1 `json:"blobsBundle"`
|
BlobsBundle *BlobsBundle `json:"blobsBundle"`
|
||||||
Requests [][]byte `json:"executionRequests"`
|
Requests [][]byte `json:"executionRequests"`
|
||||||
Override bool `json:"shouldOverrideBuilder"`
|
Override bool `json:"shouldOverrideBuilder"`
|
||||||
Witness *hexutil.Bytes `json:"witness,omitempty"`
|
Witness *hexutil.Bytes `json:"witness,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type BlobsBundleV1 struct {
|
// BlobsBundle includes the marshalled sidecar data. Note this structure is
|
||||||
|
// shared by BlobsBundleV1 and BlobsBundleV2 for the sake of simplicity.
|
||||||
|
//
|
||||||
|
// - BlobsBundleV1: proofs contain exactly len(blobs) kzg proofs.
|
||||||
|
// - BlobsBundleV2: proofs contain exactly CELLS_PER_EXT_BLOB * len(blobs) cell proofs.
|
||||||
|
type BlobsBundle struct {
|
||||||
Commitments []hexutil.Bytes `json:"commitments"`
|
Commitments []hexutil.Bytes `json:"commitments"`
|
||||||
Proofs []hexutil.Bytes `json:"proofs"`
|
Proofs []hexutil.Bytes `json:"proofs"`
|
||||||
Blobs []hexutil.Bytes `json:"blobs"`
|
Blobs []hexutil.Bytes `json:"blobs"`
|
||||||
|
|
@ -125,7 +144,7 @@ type BlobAndProofV1 struct {
|
||||||
|
|
||||||
type BlobAndProofV2 struct {
|
type BlobAndProofV2 struct {
|
||||||
Blob hexutil.Bytes `json:"blob"`
|
Blob hexutil.Bytes `json:"blob"`
|
||||||
CellProofs []hexutil.Bytes `json:"proofs"`
|
CellProofs []hexutil.Bytes `json:"proofs"` // proofs MUST contain exactly CELLS_PER_EXT_BLOB cell proofs.
|
||||||
}
|
}
|
||||||
|
|
||||||
// JSON type overrides for ExecutionPayloadEnvelope.
|
// JSON type overrides for ExecutionPayloadEnvelope.
|
||||||
|
|
@ -327,18 +346,27 @@ func BlockToExecutableData(block *types.Block, fees *big.Int, sidecars []*types.
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add blobs.
|
// Add blobs.
|
||||||
bundle := BlobsBundleV1{
|
bundle := BlobsBundle{
|
||||||
Commitments: make([]hexutil.Bytes, 0),
|
Commitments: make([]hexutil.Bytes, 0),
|
||||||
Blobs: make([]hexutil.Bytes, 0),
|
Blobs: make([]hexutil.Bytes, 0),
|
||||||
Proofs: make([]hexutil.Bytes, 0),
|
Proofs: make([]hexutil.Bytes, 0),
|
||||||
}
|
}
|
||||||
for _, sidecar := range sidecars {
|
for _, sidecar := range sidecars {
|
||||||
for j := range sidecar.Blobs {
|
for j := range sidecar.Blobs {
|
||||||
bundle.Blobs = append(bundle.Blobs, hexutil.Bytes(sidecar.Blobs[j][:]))
|
bundle.Blobs = append(bundle.Blobs, sidecar.Blobs[j][:])
|
||||||
bundle.Commitments = append(bundle.Commitments, hexutil.Bytes(sidecar.Commitments[j][:]))
|
bundle.Commitments = append(bundle.Commitments, sidecar.Commitments[j][:])
|
||||||
}
|
}
|
||||||
|
// - Before the Osaka fork, only version-0 blob transactions should be packed,
|
||||||
|
// with the proof length equal to len(blobs).
|
||||||
|
//
|
||||||
|
// - After the Osaka fork, only version-1 blob transactions should be packed,
|
||||||
|
// with the proof length equal to CELLS_PER_EXT_BLOB * len(blobs).
|
||||||
|
//
|
||||||
|
// Ideally, length validation should be performed based on the bundle version.
|
||||||
|
// In practice, this is unnecessary because blob transaction filtering is
|
||||||
|
// already done during payload construction.
|
||||||
for _, proof := range sidecar.Proofs {
|
for _, proof := range sidecar.Proofs {
|
||||||
bundle.Proofs = append(bundle.Proofs, hexutil.Bytes(proof[:]))
|
bundle.Proofs = append(bundle.Proofs, proof[:])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,21 +34,13 @@ func TestBlobs(t *testing.T) {
|
||||||
header := types.Header{}
|
header := types.Header{}
|
||||||
block := types.NewBlock(&header, &types.Body{}, nil, nil)
|
block := types.NewBlock(&header, &types.Body{}, nil, nil)
|
||||||
|
|
||||||
sidecarWithoutCellProofs := &types.BlobTxSidecar{
|
sidecarWithoutCellProofs := types.NewBlobTxSidecar(types.BlobSidecarVersion0, []kzg4844.Blob{*emptyBlob}, []kzg4844.Commitment{emptyBlobCommit}, []kzg4844.Proof{emptyBlobProof})
|
||||||
Blobs: []kzg4844.Blob{*emptyBlob},
|
|
||||||
Commitments: []kzg4844.Commitment{emptyBlobCommit},
|
|
||||||
Proofs: []kzg4844.Proof{emptyBlobProof},
|
|
||||||
}
|
|
||||||
env := BlockToExecutableData(block, common.Big0, []*types.BlobTxSidecar{sidecarWithoutCellProofs}, nil)
|
env := BlockToExecutableData(block, common.Big0, []*types.BlobTxSidecar{sidecarWithoutCellProofs}, nil)
|
||||||
if len(env.BlobsBundle.Proofs) != 1 {
|
if len(env.BlobsBundle.Proofs) != 1 {
|
||||||
t.Fatalf("Expect 1 proof in blobs bundle, got %v", len(env.BlobsBundle.Proofs))
|
t.Fatalf("Expect 1 proof in blobs bundle, got %v", len(env.BlobsBundle.Proofs))
|
||||||
}
|
}
|
||||||
|
|
||||||
sidecarWithCellProofs := &types.BlobTxSidecar{
|
sidecarWithCellProofs := types.NewBlobTxSidecar(types.BlobSidecarVersion0, []kzg4844.Blob{*emptyBlob}, []kzg4844.Commitment{emptyBlobCommit}, emptyCellProof)
|
||||||
Blobs: []kzg4844.Blob{*emptyBlob},
|
|
||||||
Commitments: []kzg4844.Commitment{emptyBlobCommit},
|
|
||||||
Proofs: emptyCellProof,
|
|
||||||
}
|
|
||||||
env = BlockToExecutableData(block, common.Big0, []*types.BlobTxSidecar{sidecarWithCellProofs}, nil)
|
env = BlockToExecutableData(block, common.Big0, []*types.BlobTxSidecar{sidecarWithCellProofs}, nil)
|
||||||
if len(env.BlobsBundle.Proofs) != 128 {
|
if len(env.BlobsBundle.Proofs) != 128 {
|
||||||
t.Fatalf("Expect 128 proofs in blobs bundle, got %v", len(env.BlobsBundle.Proofs))
|
t.Fatalf("Expect 128 proofs in blobs bundle, got %v", len(env.BlobsBundle.Proofs))
|
||||||
|
|
|
||||||
|
|
@ -269,7 +269,7 @@ func (s *Scheduler) addEvent(event Event) {
|
||||||
s.Trigger()
|
s.Trigger()
|
||||||
}
|
}
|
||||||
|
|
||||||
// filterEvent sorts each Event either as a request event or a server event,
|
// filterEvents sorts each Event either as a request event or a server event,
|
||||||
// depending on its type. Request events are also sorted in a map based on the
|
// depending on its type. Request events are also sorted in a map based on the
|
||||||
// module that originally initiated the request. It also ensures that no events
|
// module that originally initiated the request. It also ensures that no events
|
||||||
// related to a server are returned before EvRegistered or after EvUnregistered.
|
// related to a server are returned before EvRegistered or after EvUnregistered.
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ type Value [32]byte
|
||||||
// Values represent a series of merkle tree leaves/nodes.
|
// Values represent a series of merkle tree leaves/nodes.
|
||||||
type Values []Value
|
type Values []Value
|
||||||
|
|
||||||
var valueT = reflect.TypeOf(Value{})
|
var valueT = reflect.TypeFor[Value]()
|
||||||
|
|
||||||
// UnmarshalJSON parses a merkle value in hex syntax.
|
// UnmarshalJSON parses a merkle value in hex syntax.
|
||||||
func (m *Value) UnmarshalJSON(input []byte) error {
|
func (m *Value) UnmarshalJSON(input []byte) error {
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
0xd60e5310c5d52ced44cfb13be4e9f22a1e6a6dc56964c3cccd429182d26d72d0
|
0x4bae4b97deda095724560012cab1f80a5221ce0a37a4b5236d8ab63f595f29d9
|
||||||
1
beacon/params/checkpoint_hoodi.hex
Normal file
1
beacon/params/checkpoint_hoodi.hex
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
0x1bbf958008172591b6cbdb3d8d52e26998258e83d4bdb9eec10969d84519a6bd
|
||||||
|
|
@ -1 +1 @@
|
||||||
0x02f0bb348b0d45f95a9b7e2bb5705768ad06548876cee03d880a2c9dabb1ff88
|
0x2fe39a39b6f7cbd549e0f74d259de6db486005a65bd3bd92840dd6ce21d6f4c8
|
||||||
|
|
@ -1 +1 @@
|
||||||
0xa0dad451a230c01be6f2492980ec5bb412d8cf33351a75e8b172b5b84a5fd03a
|
0x86686b2b366e24134e0e3969a9c5f3759f92e5d2b04785b42e22cc7d468c2107
|
||||||
|
|
@ -20,6 +20,7 @@ import (
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
|
"math/big"
|
||||||
"os"
|
"os"
|
||||||
"slices"
|
"slices"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
@ -90,12 +91,8 @@ func (c *ChainConfig) AddFork(name string, epoch uint64, version []byte) *ChainC
|
||||||
|
|
||||||
// LoadForks parses the beacon chain configuration file (config.yaml) and extracts
|
// LoadForks parses the beacon chain configuration file (config.yaml) and extracts
|
||||||
// the list of forks.
|
// the list of forks.
|
||||||
func (c *ChainConfig) LoadForks(path string) error {
|
func (c *ChainConfig) LoadForks(file []byte) error {
|
||||||
file, err := os.ReadFile(path)
|
config := make(map[string]any)
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to read beacon chain config file: %v", err)
|
|
||||||
}
|
|
||||||
config := make(map[string]string)
|
|
||||||
if err := yaml.Unmarshal(file, &config); err != nil {
|
if err := yaml.Unmarshal(file, &config); err != nil {
|
||||||
return fmt.Errorf("failed to parse beacon chain config file: %v", err)
|
return fmt.Errorf("failed to parse beacon chain config file: %v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -108,18 +105,36 @@ func (c *ChainConfig) LoadForks(path string) error {
|
||||||
for key, value := range config {
|
for key, value := range config {
|
||||||
if strings.HasSuffix(key, "_FORK_VERSION") {
|
if strings.HasSuffix(key, "_FORK_VERSION") {
|
||||||
name := key[:len(key)-len("_FORK_VERSION")]
|
name := key[:len(key)-len("_FORK_VERSION")]
|
||||||
if v, err := hexutil.Decode(value); err == nil {
|
switch version := value.(type) {
|
||||||
|
case int:
|
||||||
|
versions[name] = new(big.Int).SetUint64(uint64(version)).FillBytes(make([]byte, 4))
|
||||||
|
case uint64:
|
||||||
|
versions[name] = new(big.Int).SetUint64(version).FillBytes(make([]byte, 4))
|
||||||
|
case string:
|
||||||
|
v, err := hexutil.Decode(version)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to decode hex fork id %q in beacon chain config file: %v", version, err)
|
||||||
|
}
|
||||||
versions[name] = v
|
versions[name] = v
|
||||||
} else {
|
default:
|
||||||
return fmt.Errorf("failed to decode hex fork id %q in beacon chain config file: %v", value, err)
|
return fmt.Errorf("invalid fork version %q in beacon chain config file", version)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if strings.HasSuffix(key, "_FORK_EPOCH") {
|
if strings.HasSuffix(key, "_FORK_EPOCH") {
|
||||||
name := key[:len(key)-len("_FORK_EPOCH")]
|
name := key[:len(key)-len("_FORK_EPOCH")]
|
||||||
if v, err := strconv.ParseUint(value, 10, 64); err == nil {
|
switch epoch := value.(type) {
|
||||||
|
case int:
|
||||||
|
epochs[name] = uint64(epoch)
|
||||||
|
case uint64:
|
||||||
|
epochs[name] = epoch
|
||||||
|
case string:
|
||||||
|
v, err := strconv.ParseUint(epoch, 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to parse epoch number %q in beacon chain config file: %v", epoch, err)
|
||||||
|
}
|
||||||
epochs[name] = v
|
epochs[name] = v
|
||||||
} else {
|
default:
|
||||||
return fmt.Errorf("failed to parse epoch number %q in beacon chain config file: %v", value, err)
|
return fmt.Errorf("invalid fork epoch %q in beacon chain config file", epoch)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
34
beacon/params/config_test.go
Normal file
34
beacon/params/config_test.go
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
package params
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestChainConfig_LoadForks(t *testing.T) {
|
||||||
|
const config = `
|
||||||
|
GENESIS_FORK_VERSION: 0x00000000
|
||||||
|
|
||||||
|
ALTAIR_FORK_VERSION: 0x00000001
|
||||||
|
ALTAIR_FORK_EPOCH: 1
|
||||||
|
|
||||||
|
EIP7928_FORK_VERSION: 0xb0000038
|
||||||
|
EIP7928_FORK_EPOCH: 18446744073709551615
|
||||||
|
|
||||||
|
BLOB_SCHEDULE: []
|
||||||
|
`
|
||||||
|
c := &ChainConfig{}
|
||||||
|
err := c.LoadForks([]byte(config))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, fork := range c.Forks {
|
||||||
|
if fork.Name == "GENESIS" && (fork.Epoch != 0) {
|
||||||
|
t.Errorf("unexpected genesis fork epoch %d", fork.Epoch)
|
||||||
|
}
|
||||||
|
if fork.Name == "ALTAIR" && (fork.Epoch != 1 || !bytes.Equal(fork.Version, []byte{0, 0, 0, 1})) {
|
||||||
|
t.Errorf("unexpected altair fork epoch %d version %x", fork.Epoch, fork.Version)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -31,6 +31,9 @@ var checkpointSepolia string
|
||||||
//go:embed checkpoint_holesky.hex
|
//go:embed checkpoint_holesky.hex
|
||||||
var checkpointHolesky string
|
var checkpointHolesky string
|
||||||
|
|
||||||
|
//go:embed checkpoint_hoodi.hex
|
||||||
|
var checkpointHoodi string
|
||||||
|
|
||||||
var (
|
var (
|
||||||
MainnetLightConfig = (&ChainConfig{
|
MainnetLightConfig = (&ChainConfig{
|
||||||
GenesisValidatorsRoot: common.HexToHash("0x4b363db94e286120d76eb905340fdd4e54bfe9f06bf33ff6cf5ad27f511bfe95"),
|
GenesisValidatorsRoot: common.HexToHash("0x4b363db94e286120d76eb905340fdd4e54bfe9f06bf33ff6cf5ad27f511bfe95"),
|
||||||
|
|
@ -71,7 +74,7 @@ var (
|
||||||
HoodiLightConfig = (&ChainConfig{
|
HoodiLightConfig = (&ChainConfig{
|
||||||
GenesisValidatorsRoot: common.HexToHash("0x212f13fc4df078b6cb7db228f1c8307566dcecf900867401a92023d7ba99cb5f"),
|
GenesisValidatorsRoot: common.HexToHash("0x212f13fc4df078b6cb7db228f1c8307566dcecf900867401a92023d7ba99cb5f"),
|
||||||
GenesisTime: 1742212800,
|
GenesisTime: 1742212800,
|
||||||
Checkpoint: common.HexToHash(""),
|
Checkpoint: common.HexToHash(checkpointHoodi),
|
||||||
}).
|
}).
|
||||||
AddFork("GENESIS", 0, common.FromHex("0x10000910")).
|
AddFork("GENESIS", 0, common.FromHex("0x10000910")).
|
||||||
AddFork("ALTAIR", 0, common.FromHex("0x20000910")).
|
AddFork("ALTAIR", 0, common.FromHex("0x20000910")).
|
||||||
|
|
|
||||||
|
|
@ -1,113 +1,85 @@
|
||||||
# This file contains sha256 checksums of optional build dependencies.
|
# This file contains sha256 checksums of optional build dependencies.
|
||||||
|
|
||||||
# version:spec-tests v4.5.0
|
# version:spec-tests v5.1.0
|
||||||
# https://github.com/ethereum/execution-spec-tests/releases
|
# https://github.com/ethereum/execution-spec-tests/releases
|
||||||
# https://github.com/ethereum/execution-spec-tests/releases/download/v4.5.0/
|
# https://github.com/ethereum/execution-spec-tests/releases/download/v5.1.0
|
||||||
58afb92a0075a2cb7c4dec1281f7cb88b21b02afbedad096b580f3f8cc14c54c fixtures_develop.tar.gz
|
a3192784375acec7eaec492799d5c5d0c47a2909a3cc40178898e4ecd20cc416 fixtures_develop.tar.gz
|
||||||
|
|
||||||
# version:golang 1.24.3
|
# version:golang 1.25.1
|
||||||
# https://go.dev/dl/
|
# https://go.dev/dl/
|
||||||
229c08b600b1446798109fae1f569228102c8473caba8104b6418cb5bc032878 go1.24.3.src.tar.gz
|
d010c109cee94d80efe681eab46bdea491ac906bf46583c32e9f0dbb0bd1a594 go1.25.1.src.tar.gz
|
||||||
6f6901497547db3b77c14f7f953fbcef9fa5fb84199ee2ee14a5686e66bed5a6 go1.24.3.aix-ppc64.tar.gz
|
1d622468f767a1b9fe1e1e67bd6ce6744d04e0c68712adc689748bbeccb126bb go1.25.1.darwin-amd64.tar.gz
|
||||||
a05fa7e4043a4fec66897135219e3b8ab2202b5ef351c60c2fbb531dfb8f2900 go1.24.3.darwin-amd64.pkg
|
68deebb214f39d542e518ebb0598a406ab1b5a22bba8ec9ade9f55fb4dd94a6c go1.25.1.darwin-arm64.tar.gz
|
||||||
13e6fe3fcf65689d77d40e633de1e31c6febbdbcb846eb05fc2434ed2213e92b go1.24.3.darwin-amd64.tar.gz
|
d03cdcbc9bd8baf5cf028de390478e9e2b3e4d0afe5a6582dedc19bfe6a263b2 go1.25.1.linux-386.tar.gz
|
||||||
97055ff4214043b39dc32e043fdd5c565df7c0a4e2fc0174e779a134c347ae0e go1.24.3.darwin-arm64.pkg
|
7716a0d940a0f6ae8e1f3b3f4f36299dc53e31b16840dbd171254312c41ca12e go1.25.1.linux-amd64.tar.gz
|
||||||
64a3fa22142f627e78fac3018ce3d4aeace68b743eff0afda8aae0411df5e4fb go1.24.3.darwin-arm64.tar.gz
|
65a3e34fb2126f55b34e1edfc709121660e1be2dee6bdf405fc399a63a95a87d go1.25.1.linux-arm64.tar.gz
|
||||||
32de3fd44d5055973978436a7f1f0ffbaae85c1b603ec6105e5c38d8a674c721 go1.24.3.dragonfly-amd64.tar.gz
|
eb949be683e82a99e9861dafd7057e31ea40b161eae6c4cd18fdc0e8c4ae6225 go1.25.1.linux-armv6l.tar.gz
|
||||||
9fe6101b3797919bd7337ee5ce591954f85d59db7ae88983904db29fd64c3dd1 go1.24.3.freebsd-386.tar.gz
|
be13d5479b8c75438f2efcaa8c191fba3af684b3228abc9c99c7aa8502f34424 go1.25.1.windows-386.zip
|
||||||
6ccf4cca287e90cc28cd7954b6172f5d177a17e20b072b65f7f39636c325e2fb go1.24.3.freebsd-amd64.tar.gz
|
4a974de310e7ee1d523d2fcedb114ba5fa75408c98eb3652023e55ccf3fa7cab go1.25.1.windows-amd64.zip
|
||||||
ce45ebf389066f82a7b056b66dd650efb51fde6f8bf92a2a3ab6990f02788ebf go1.24.3.freebsd-arm.tar.gz
|
45ab4290adbd6ee9e7f18f0d57eaa9008fdbef590882778ed93eac3c8cca06c5 go1.25.1.aix-ppc64.tar.gz
|
||||||
8f6494a12a874d0ea57c67987829359e016960ce3ba0673273609d6ac2af589a go1.24.3.freebsd-arm64.tar.gz
|
2e3c1549bed3124763774d648f291ac42611232f48320ebbd23517c909c09b81 go1.25.1.dragonfly-amd64.tar.gz
|
||||||
f9db392560cf0851f0bc8f2190e1978e01b4603038c27fecfc8658a695b71616 go1.24.3.freebsd-riscv64.tar.gz
|
dc0198dd4ec520e13f26798def8750544edf6448d8e9c43fd2a814e4885932af go1.25.1.freebsd-386.tar.gz
|
||||||
01717fff64c5d98457272002fa825d0a15e307bf6e189f2b0c23817fa033b61c go1.24.3.illumos-amd64.tar.gz
|
c4f1a7e7b258406e6f3b677ecdbd97bbb23ff9c0d44be4eb238a07d360f69ac8 go1.25.1.freebsd-amd64.tar.gz
|
||||||
41b1051063e68cbd2b919bf12326764fe33937cf1d32b5c529dd1a4f43dce578 go1.24.3.linux-386.tar.gz
|
7772fc5ff71ed39297ec0c1599fc54e399642c9b848eac989601040923b0de9c go1.25.1.freebsd-arm.tar.gz
|
||||||
3333f6ea53afa971e9078895eaa4ac7204a8c6b5c68c10e6bc9a33e8e391bdd8 go1.24.3.linux-amd64.tar.gz
|
5bb011d5d5b6218b12189f07aa0be618ab2002662fff1ca40afba7389735c207 go1.25.1.freebsd-arm64.tar.gz
|
||||||
a463cb59382bd7ae7d8f4c68846e73c4d589f223c589ac76871b66811ded7836 go1.24.3.linux-arm64.tar.gz
|
ccac716240cb049bebfafcb7eebc3758512178a4c51fc26da9cc032035d850c8 go1.25.1.freebsd-riscv64.tar.gz
|
||||||
17a392d7e826625dd12a32099df0b00b85c32d8132ed86fe917183ee5c3f88ed go1.24.3.linux-armv6l.tar.gz
|
cc53910ffb9fcfdd988a9fa25b5423bae1cfa01b19616be646700e1f5453b466 go1.25.1.illumos-amd64.tar.gz
|
||||||
e4b003c04c902edc140153d279b42167f1ad7c229f48f1f729bbef5e65e88d1f go1.24.3.linux-loong64.tar.gz
|
efe809f923bcedab44bf7be2b3af8d182b512b1bf9c07d302e0c45d26c8f56f3 go1.25.1.linux-loong64.tar.gz
|
||||||
1c79d89edf835edf9d4336ccea7cb89bc5c0ca82b12b36b218d599a5400d60fe go1.24.3.linux-mips.tar.gz
|
c0de33679f6ed68991dc42dc4a602e74a666e3e166c1748ee1b5d1a7ea2ffbb2 go1.25.1.linux-mips.tar.gz
|
||||||
0b64fe147d69f4d681d8e8a035c760477531432f83d831f18d37cb9bf3652488 go1.24.3.linux-mips64.tar.gz
|
c270f7b0c0bdfbcd54fef4481227c40d41bb518f9ae38ee930870f04a0a6a589 go1.25.1.linux-mips64.tar.gz
|
||||||
396b784c255b64512dc00c302c053e43a3cbfc77518664c6ac5569aafad4d1e6 go1.24.3.linux-mips64le.tar.gz
|
80be871ba9c944f34d1868cdf5047e1cf2e1289fe08cdb90e2453d2f0d6965ae go1.25.1.linux-mips64le.tar.gz
|
||||||
93898313887f14e8efbe9d7386d5da4792b2d6c492bee562993fd4c9daa75c6d go1.24.3.linux-mipsle.tar.gz
|
9f09defa9bb22ebf2cde76162f40958564e57ce5c2b3649bc063bebcbc9294c1 go1.25.1.linux-mipsle.tar.gz
|
||||||
873ae3a6a6655a7b6f820e095d9965507e8dfd3cf76bc92d75c564ecbca385f6 go1.24.3.linux-ppc64.tar.gz
|
2c76b7d278c1d43ad19d478ad3f0f05e7b782b64b90870701b314fa48b5f43c6 go1.25.1.linux-ppc64.tar.gz
|
||||||
341a749d168f47b1d4dad25e32cae70849b7ceed7c290823b853c9e6b0df0856 go1.24.3.linux-ppc64le.tar.gz
|
8b0c8d3ee5b1b5c28b6bd63dc4438792012e01d03b4bf7a61d985c87edab7d1f go1.25.1.linux-ppc64le.tar.gz
|
||||||
fa482f53ccb4ba280316b8c5751ea67291507280d9166f2a38fe4d9b5d5fb64b go1.24.3.linux-riscv64.tar.gz
|
22fe934a9d0c9c57275716c55b92d46ebd887cec3177c9140705efa9f84ba1e2 go1.25.1.linux-riscv64.tar.gz
|
||||||
a87b0c2a079a0bece1620fb29a00e02b4dba17507850f837e754af7d57cda282 go1.24.3.linux-s390x.tar.gz
|
9cfe517ba423f59f3738ca5c3d907c103253cffbbcc2987142f79c5de8c1bf93 go1.25.1.linux-s390x.tar.gz
|
||||||
63155382308db1306200aff7821aa26bf2a2dda23537dd637a9704b485b6ddf0 go1.24.3.netbsd-386.tar.gz
|
6af8a08353e76205d5b743dd7a3f0126684f96f62be0a31b75daf9837e512c46 go1.25.1.netbsd-386.tar.gz
|
||||||
fe2c5c79482958b867c08a4fc2a10a998de9c0206b08d5b3ebcb2232e8d2777c go1.24.3.netbsd-amd64.tar.gz
|
e5d534ff362edb1bd8c8e10892b6a027c4c1482454245d1529167676498684c7 go1.25.1.netbsd-amd64.tar.gz
|
||||||
e8ff77aef21521b5dd94e44282a3243309b80717414cf12f72835a45886a049f go1.24.3.netbsd-arm.tar.gz
|
88bcf39254fdcea6a199c1c27d787831b652427ce60851ae9e41a3d7eb477f45 go1.25.1.netbsd-arm.tar.gz
|
||||||
b337fbaf82822685940ffaa76fbcf4be5d2f0258bc819cd80bc408b491f45c04 go1.24.3.netbsd-arm64.tar.gz
|
d7c2eabe1d04ee47bcaea2816fdd90dbd25d90d4dfa756faa9786c788e4f3a4e go1.25.1.netbsd-arm64.tar.gz
|
||||||
c1bb9dd8418480aa7f65452b08de3759da3bf89702be71b5a9fc084836b24ad5 go1.24.3.openbsd-386.tar.gz
|
14a2845977eb4dde11d929858c437a043467c427db87899935e90cee04a38d72 go1.25.1.openbsd-386.tar.gz
|
||||||
531218de748b0caaf6d1ad18921206fc12baaa89bf483a0a5e60a571c206fe6f go1.24.3.openbsd-amd64.tar.gz
|
d27ac54b38a13a09c81e67c82ac70d387037341c85c3399291c73e13e83fdd8c go1.25.1.openbsd-amd64.tar.gz
|
||||||
bcd0dc959986fc346969b5d4111c3c8031882d8bf8d87a2c2ecf1328962a91f2 go1.24.3.openbsd-arm.tar.gz
|
0f4ab5f02500afa4befd51fed1e8b45e4d07ca050f641cc3acc76eaa4027b2c3 go1.25.1.openbsd-arm.tar.gz
|
||||||
00ee6f8f1c41fd2e28ad386bd7e39acce7cab84af6de835855b29d1c597335c4 go1.24.3.openbsd-arm64.tar.gz
|
d46c3bd156843656f7f3cb0dec27ea51cd926ec3f7b80744bf8156e67c1c812f go1.25.1.openbsd-arm64.tar.gz
|
||||||
9f4ec0a9203ed3c54ce1a2a390ad3d45838cdb7efd85baeff857e37dfde04edd go1.24.3.openbsd-ppc64.tar.gz
|
c550514c67f22e409be10e40eace761e2e43069f4ef086ae6e60aac736c2b679 go1.25.1.openbsd-ppc64.tar.gz
|
||||||
da4d6f80e2373250d8c31c32dcd1e08775c327c0d610923604660cc0e07e8cba go1.24.3.openbsd-riscv64.tar.gz
|
8a09a8714a2556eb13fc1f10b7ce2553fcea4971e3330fc3be0efd24aab45734 go1.25.1.openbsd-riscv64.tar.gz
|
||||||
f5d02149132eedda6c2d46b360d7da462b8a5f9e3f8567db100c2d7bff0ddcd7 go1.24.3.plan9-386.tar.gz
|
b0e1fefaf0c7abd71f139a54eee9767944aff5f0bc9d69c968234804884e552f go1.25.1.plan9-386.tar.gz
|
||||||
175f3d79f4762a3c545d2c6393bf6b8bac24e838026869dafab06b930735c94f go1.24.3.plan9-amd64.tar.gz
|
e94732c94f149690aa0ab11c26090577211b4a988137cb2c03ec0b54e750402e go1.25.1.plan9-amd64.tar.gz
|
||||||
d1e4ac15095da1611659261c2228c2058756cf87d61d9fad262f76755ef26849 go1.24.3.plan9-arm.tar.gz
|
7eb80e9de1e817d9089a54e8c7c5c8d8ed9e5fb4d4a012fc0f18fc422a484f0c go1.25.1.plan9-arm.tar.gz
|
||||||
e644220a6ced3c07a7acc1364193cb709a97737dd8b6792a07a8ec6d9996713e go1.24.3.solaris-amd64.tar.gz
|
1261dfad7c4953c0ab90381bc1242dc54e394db7485c59349428d532b2273343 go1.25.1.solaris-amd64.tar.gz
|
||||||
0d7e7dc0a31ba0cdd487415709d03b02fc9490ef111e8dfd22788a6d63316f37 go1.24.3.windows-386.msi
|
04bc3c078e9e904c4d58d6ac2532a5bdd402bd36a9ff0b5949b3c5e6006a05ee go1.25.1.windows-arm64.zip
|
||||||
c27c463a61ab849266baa0c17a6c5c4256a574ab642f609ba25c96ec965dc184 go1.24.3.windows-386.zip
|
|
||||||
d5b7637e7e138be877d96a4501709d480e050d86a8f402bc950e72112b5aedc5 go1.24.3.windows-amd64.msi
|
|
||||||
be9787cb08998b1860fe3513e48a5fe5b96302d358a321b58e651184fa9638b3 go1.24.3.windows-amd64.zip
|
|
||||||
7efde2e5e8468e9caf2c7fc94f4da78a726a5031a1ed63acff7899527cdddff6 go1.24.3.windows-arm64.msi
|
|
||||||
eec9fa736056b54dd88ecb669db2bfad39b0c48f6f9080f036dfa1ca42dc4bb5 go1.24.3.windows-arm64.zip
|
|
||||||
|
|
||||||
# version:golangci 2.0.2
|
# version:golangci 2.4.0
|
||||||
# https://github.com/golangci/golangci-lint/releases/
|
# https://github.com/golangci/golangci-lint/releases/
|
||||||
# https://github.com/golangci/golangci-lint/releases/download/v2.0.2/
|
# https://github.com/golangci/golangci-lint/releases/download/v2.4.0/
|
||||||
a88cbdc86b483fe44e90bf2dcc3fec2af8c754116e6edf0aa6592cac5baa7a0e golangci-lint-2.0.2-darwin-amd64.tar.gz
|
7904ce63f79db44934939cf7a063086ea0ea98e9b19eba0a9d52ccdd0d21951c golangci-lint-2.4.0-darwin-amd64.tar.gz
|
||||||
664550e7954f5f4451aae99b4f7382c1a47039c66f39ca605f5d9af1a0d32b49 golangci-lint-2.0.2-darwin-arm64.tar.gz
|
cd4dd53fa09b6646baff5fd22b8c64d91db02c21c7496df27992d75d34feec59 golangci-lint-2.4.0-darwin-arm64.tar.gz
|
||||||
bda0f0f27d300502faceda8428834a76ca25986f6d9fc2bd41d201c3ed73f08e golangci-lint-2.0.2-freebsd-386.tar.gz
|
d58f426ebe14cc257e81562b4bf37a488ffb4ffbbb3ec73041eb3b38bb25c0e1 golangci-lint-2.4.0-freebsd-386.tar.gz
|
||||||
1cbd0c7ade3fb027d61d38a646ec1b51be5846952b4b04a5330e7f4687f2270c golangci-lint-2.0.2-freebsd-amd64.tar.gz
|
6ec4a6177fc6c0dd541fbcb3a7612845266d020d35cc6fa92959220cdf64ca39 golangci-lint-2.4.0-freebsd-amd64.tar.gz
|
||||||
1e828a597726198b2e35acdbcc5f3aad85244d79846d2d2bdb05241c5a535f9e golangci-lint-2.0.2-freebsd-armv6.tar.gz
|
4d473e3e71c01feaa915a0604fb35758b41284fb976cdeac3f842118d9ee7e17 golangci-lint-2.4.0-freebsd-armv6.tar.gz
|
||||||
848b49315dc5cddd0c9ce35e96ab33d584db0ea8fb57bcbf9784f1622bec0269 golangci-lint-2.0.2-freebsd-armv7.tar.gz
|
58727746c6530801a3f9a702a5945556a5eb7e88809222536dd9f9d54cafaeff golangci-lint-2.4.0-freebsd-armv7.tar.gz
|
||||||
cabf9a6beab574c7f98581eb237919e580024759e3cdc05c4d516b044dce6770 golangci-lint-2.0.2-illumos-amd64.tar.gz
|
fbf28c662760e24c32f82f8d16dffdb4a82de7726a52ba1fad94f890c22997ea golangci-lint-2.4.0-illumos-amd64.tar.gz
|
||||||
2fde80d15ed6527791f106d606120620e913c3a663c90a8596861d0a4461169e golangci-lint-2.0.2-linux-386.deb
|
a15a000a8981ef665e971e0f67e2acda9066a9e37a59344393b7351d8fb49c81 golangci-lint-2.4.0-linux-386.tar.gz
|
||||||
804bc6e350a8c613aaa0a33d8d45414a80157b0ba1b2c2335ac859f85ad98ebd golangci-lint-2.0.2-linux-386.rpm
|
fae792524c04424c0ac369f5b8076f04b45cf29fc945a370e55d369a8dc11840 golangci-lint-2.4.0-linux-amd64.tar.gz
|
||||||
e64beb72fecf581e57d88ae3adb1c9d4bf022694b6bd92e3c8e460910bbdc37d golangci-lint-2.0.2-linux-386.tar.gz
|
70ac11f55b80ec78fd3a879249cc9255121b8dfd7f7ed4fc46ed137f4abf17e7 golangci-lint-2.4.0-linux-arm64.tar.gz
|
||||||
9c55aed174d7a52bb1d4006b36e7edee9023631f6b814a80cb39c9860d6f75c3 golangci-lint-2.0.2-linux-amd64.deb
|
4acdc40e5cebe99e4e7ced358a05b2e71789f409b41cb4f39bbb86ccfa14b1dc golangci-lint-2.4.0-linux-armv6.tar.gz
|
||||||
c55a2ef741a687b4c679696931f7fd4a467babd64c9457cf17bb9632fd1cecd1 golangci-lint-2.0.2-linux-amd64.rpm
|
2a68749568fa22b4a97cb88dbea655595563c795076536aa6c087f7968784bf3 golangci-lint-2.4.0-linux-armv7.tar.gz
|
||||||
89cc8a7810dc63b9a37900da03e37c3601caf46d42265d774e0f1a5d883d53e2 golangci-lint-2.0.2-linux-amd64.tar.gz
|
9e3369afb023711036dcb0b4f45c9fe2792af962fa1df050c9f6ac101a6c5d73 golangci-lint-2.4.0-linux-loong64.tar.gz
|
||||||
a3e78583c4e7ea1b63e82559f126bb3a5b12788676f158526752d53e67824b99 golangci-lint-2.0.2-linux-arm64.deb
|
bb9143d6329be2c4dbfffef9564078e7da7d88e7dde6c829b6263d98e072229e golangci-lint-2.4.0-linux-mips64.tar.gz
|
||||||
bd5dd52b5c9f18aa7a2904eda9a9f91c628e98623fe70b7afcbb847e2de84422 golangci-lint-2.0.2-linux-arm64.rpm
|
5ad1765b40d56cd04d4afd805b3ba6f4bfd9b36181da93c31e9b17e483d8608d golangci-lint-2.4.0-linux-mips64le.tar.gz
|
||||||
789d5b91219ac68c2336f77d41cd7e33a910420594780f455893f8453d09595b golangci-lint-2.0.2-linux-arm64.tar.gz
|
918936fb9c0d5ba96bef03cf4348b03938634cfcced49be1e9bb29cb5094fa73 golangci-lint-2.4.0-linux-ppc64le.tar.gz
|
||||||
534cd4c464a66178714ed68152c1ed7aa73e5700bf409e4ed1a8363adf96afca golangci-lint-2.0.2-linux-armv6.deb
|
f7474c638e1fb67ebbdc654b55ca0125377ea0bc88e8fee8d964a4f24eacf828 golangci-lint-2.4.0-linux-riscv64.tar.gz
|
||||||
cf7d02905a5fc80b96c9a64621693b4cc7337b1ce29986c19fd72608dafe66c5 golangci-lint-2.0.2-linux-armv6.rpm
|
b617a9543997c8bfceaffa88a75d4e595030c6add69fba800c1e4d8f5fe253dd golangci-lint-2.4.0-linux-s390x.tar.gz
|
||||||
a0d81cb527d8fe878377f2356b5773e219b0b91832a6b59e7b9bcf9a90fe0b0e golangci-lint-2.0.2-linux-armv6.tar.gz
|
7db027b03a9ba328f795215b04f594036837bc7dd0dd7cd16776b02a6167981c golangci-lint-2.4.0-netbsd-386.tar.gz
|
||||||
dedd5be7fff8cba8fe15b658a59347ea90d7d02a9fff87f09c7687e6da05a8b6 golangci-lint-2.0.2-linux-armv7.deb
|
52d8f9393f4313df0a62b752c37775e3af0b818e43e8dd28954351542d7c60bc golangci-lint-2.4.0-netbsd-amd64.tar.gz
|
||||||
85521b6f3ad2f5a2bc9bfe14b9b08623f764964048f75ed6dfcfaf8eb7d57cc1 golangci-lint-2.0.2-linux-armv7.rpm
|
5c0086027fb5a4af3829e530c8115db4b35d11afe1914322eef528eb8cd38c69 golangci-lint-2.4.0-netbsd-arm64.tar.gz
|
||||||
96471046c7780dda4ea680f65e92c2ef56ff58d40bcffaf6cfe9d6d48e3c27aa golangci-lint-2.0.2-linux-armv7.tar.gz
|
6b779d6ed1aed87cefe195cc11759902b97a76551b593312c6833f2635a3488f golangci-lint-2.4.0-netbsd-armv6.tar.gz
|
||||||
815d914a7738e4362466b2d11004e8618b696b49e8ace13df2c2b25f28fb1e17 golangci-lint-2.0.2-linux-loong64.deb
|
f00d1f4b7ec3468a0f9fffd0d9ea036248b029b7621cbc9a59c449ef94356d09 golangci-lint-2.4.0-netbsd-armv7.tar.gz
|
||||||
f16381e3d8a0f011b95e086d83d620248432b915d01f4beab4d29cfe4dc388b0 golangci-lint-2.0.2-linux-loong64.rpm
|
3ce671b0b42b58e35066493aab75a7e2826c9e079988f1ba5d814a4029faaf87 golangci-lint-2.4.0-windows-386.zip
|
||||||
1bd8d7714f9c92db6a0f23bae89f39c85ba047bec8eeb42b8748d30ae3228d18 golangci-lint-2.0.2-linux-loong64.tar.gz
|
003112f7a56746feaabf20b744054bf9acdf900c9e77176383623c4b1d76aaa9 golangci-lint-2.4.0-windows-amd64.zip
|
||||||
ea6e9d4aabb526aa298e47e8b026d8893d918c5eb919ba0ab403e315def74cc5 golangci-lint-2.0.2-linux-mips64.deb
|
dc0c2092af5d47fc2cd31a1dfe7b4c7e765fab22de98bd21ef2ffcc53ad9f54f golangci-lint-2.4.0-windows-arm64.zip
|
||||||
519d8d53af83fdc9c25cc3fba8b663331ac22ef68131d4b0084cb6f425b6f79a golangci-lint-2.0.2-linux-mips64.rpm
|
0263d23e20a260cb1592d35e12a388f99efe2c51b3611fdc66fbd9db1fce664d golangci-lint-2.4.0-windows-armv6.zip
|
||||||
80d655a0a1ac1b19dcef4b58fa2a7dadb646cc50ad08d460b5c53cdb421165e4 golangci-lint-2.0.2-linux-mips64.tar.gz
|
9403c03bf648e6313036e0273149d44bad1b9ad53889b6d00e4ccb842ba3c058 golangci-lint-2.4.0-windows-armv7.zip
|
||||||
aa0e75384bb482c865d4dfc95d23ceb25666bf20461b67a832f0eea6670312ec golangci-lint-2.0.2-linux-mips64le.deb
|
|
||||||
f2a8b500fb69bdea1b01df6267aaa5218fa4a58aeb781c1a20d0d802fe465a52 golangci-lint-2.0.2-linux-mips64le.rpm
|
|
||||||
e66a0c0c9a275f02d27a7caa9576112622306f001d73dfc082cf1ae446fc1242 golangci-lint-2.0.2-linux-mips64le.tar.gz
|
|
||||||
e85ad51aac6428be2d8a37000d053697371a538a5bcbc1644caa7c5e77f6d0af golangci-lint-2.0.2-linux-ppc64le.deb
|
|
||||||
906798365eac1944af2a9b9a303e6fd49ec9043307bc681b7a96277f7f8beea5 golangci-lint-2.0.2-linux-ppc64le.rpm
|
|
||||||
f7f1a271b0af274d6c9ce000f5dc6e1fb194350c67bcc62494f96f791882ba92 golangci-lint-2.0.2-linux-ppc64le.tar.gz
|
|
||||||
eea8bf643a42bf05de9780530db22923e5ab0d588f0e173594dc6518f2a25d2a golangci-lint-2.0.2-linux-riscv64.deb
|
|
||||||
4ff40f9fe2954400836e2a011ba4744d00ffab5068a51368552dfce6aba3b81b golangci-lint-2.0.2-linux-riscv64.rpm
|
|
||||||
531d8f225866674977d630afbf0533eb02f9bec607fb13895f7a2cd7b2e0a648 golangci-lint-2.0.2-linux-riscv64.tar.gz
|
|
||||||
6f827647046c603f40d97ea5aadc6f48cd0bb5d19f7a3d56500c3b833d2a0342 golangci-lint-2.0.2-linux-s390x.deb
|
|
||||||
387a090e9576d19ca86aac738172e58e07c19f2784a13bb387f4f0d75fb9c8d3 golangci-lint-2.0.2-linux-s390x.rpm
|
|
||||||
57de1fb7722a9feb2d11ed0a007a93959d05b9db5929a392abc222e30012467e golangci-lint-2.0.2-linux-s390x.tar.gz
|
|
||||||
ed95e0492ea86bf79eb661f0334474b2a4255093685ff587eccd797c5a54db7e golangci-lint-2.0.2-netbsd-386.tar.gz
|
|
||||||
eab81d729778166415d349a80e568b2f2b3a781745a9be3212a92abb1e732daf golangci-lint-2.0.2-netbsd-amd64.tar.gz
|
|
||||||
d20add73f7c2de2c3b01ed4fd7b63ffcf0a6597d5ea228d1699e92339a3cd047 golangci-lint-2.0.2-netbsd-arm64.tar.gz
|
|
||||||
4e4f44e6057879cd62424ff1800a767d25a595c0e91d6d48809eea9186b4c739 golangci-lint-2.0.2-netbsd-armv6.tar.gz
|
|
||||||
51ec17b16d8743ae4098a0171f04f0ed4d64561e3051b982778b0e6c306a1b03 golangci-lint-2.0.2-netbsd-armv7.tar.gz
|
|
||||||
5482cf27b93fae1765c70ee2a95d4074d038e9dee61bdd61d017ce8893d3a4a8 golangci-lint-2.0.2-source.tar.gz
|
|
||||||
a35d8fdf3e14079a10880dbbb7586b46faec89be96f086b244b3e565aac80313 golangci-lint-2.0.2-windows-386.zip
|
|
||||||
fe4b946cc01366b989001215687003a9c4a7098589921f75e6228d6d8cffc15c golangci-lint-2.0.2-windows-amd64.zip
|
|
||||||
646bd9250ef8c771d85cd22fe8e6f2397ae39599179755e3bbfa9ef97ad44090 golangci-lint-2.0.2-windows-arm64.zip
|
|
||||||
ce1dc0bad6f8a61d64e6b3779eeb773479c175125d6f686b0e67ef9c8432d16e golangci-lint-2.0.2-windows-armv6.zip
|
|
||||||
92684a48faabe792b11ac27ca8b25551eff940b0a1e84ad7244e98b4994962db golangci-lint-2.0.2-windows-armv7.zip
|
|
||||||
|
|
||||||
# This is the builder on PPA that will build Go itself (inception-y), don't modify!
|
# This is the builder on PPA that will build Go itself (inception-y), don't modify!
|
||||||
#
|
#
|
||||||
|
|
|
||||||
142
build/ci.go
142
build/ci.go
|
|
@ -57,6 +57,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/cespare/cp"
|
"github.com/cespare/cp"
|
||||||
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/crypto/signify"
|
"github.com/ethereum/go-ethereum/crypto/signify"
|
||||||
"github.com/ethereum/go-ethereum/internal/build"
|
"github.com/ethereum/go-ethereum/internal/build"
|
||||||
"github.com/ethereum/go-ethereum/internal/download"
|
"github.com/ethereum/go-ethereum/internal/download"
|
||||||
|
|
@ -64,6 +65,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
goModules = []string{
|
||||||
|
".",
|
||||||
|
"./cmd/keeper",
|
||||||
|
}
|
||||||
|
|
||||||
// Files that end up in the geth*.zip archive.
|
// Files that end up in the geth*.zip archive.
|
||||||
gethArchiveFiles = []string{
|
gethArchiveFiles = []string{
|
||||||
"COPYING",
|
"COPYING",
|
||||||
|
|
@ -124,6 +130,7 @@ var (
|
||||||
"jammy", // 22.04, EOL: 04/2032
|
"jammy", // 22.04, EOL: 04/2032
|
||||||
"noble", // 24.04, EOL: 04/2034
|
"noble", // 24.04, EOL: 04/2034
|
||||||
"oracular", // 24.10, EOL: 07/2025
|
"oracular", // 24.10, EOL: 07/2025
|
||||||
|
"plucky", // 25.04, EOL: 01/2026
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is where the tests should be unpacked.
|
// This is where the tests should be unpacked.
|
||||||
|
|
@ -142,7 +149,7 @@ func executablePath(name string) string {
|
||||||
func main() {
|
func main() {
|
||||||
log.SetFlags(log.Lshortfile)
|
log.SetFlags(log.Lshortfile)
|
||||||
|
|
||||||
if !build.FileExist(filepath.Join("build", "ci.go")) {
|
if !common.FileExist(filepath.Join("build", "ci.go")) {
|
||||||
log.Fatal("this script must be run from the root of the repository")
|
log.Fatal("this script must be run from the root of the repository")
|
||||||
}
|
}
|
||||||
if len(os.Args) < 2 {
|
if len(os.Args) < 2 {
|
||||||
|
|
@ -215,7 +222,7 @@ func doInstall(cmdline []string) {
|
||||||
// Default: collect all 'main' packages in cmd/ and build those.
|
// Default: collect all 'main' packages in cmd/ and build those.
|
||||||
packages := flag.Args()
|
packages := flag.Args()
|
||||||
if len(packages) == 0 {
|
if len(packages) == 0 {
|
||||||
packages = build.FindMainPackages("./cmd")
|
packages = build.FindMainPackages(&tc, "./cmd/...")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do the build!
|
// Do the build!
|
||||||
|
|
@ -274,26 +281,33 @@ func buildFlags(env build.Environment, staticLinking bool, buildTags []string) (
|
||||||
|
|
||||||
func doTest(cmdline []string) {
|
func doTest(cmdline []string) {
|
||||||
var (
|
var (
|
||||||
dlgo = flag.Bool("dlgo", false, "Download Go and build with it")
|
dlgo = flag.Bool("dlgo", false, "Download Go and build with it")
|
||||||
arch = flag.String("arch", "", "Run tests for given architecture")
|
arch = flag.String("arch", "", "Run tests for given architecture")
|
||||||
cc = flag.String("cc", "", "Sets C compiler binary")
|
cc = flag.String("cc", "", "Sets C compiler binary")
|
||||||
coverage = flag.Bool("coverage", false, "Whether to record code coverage")
|
coverage = flag.Bool("coverage", false, "Whether to record code coverage")
|
||||||
verbose = flag.Bool("v", false, "Whether to log verbosely")
|
verbose = flag.Bool("v", false, "Whether to log verbosely")
|
||||||
race = flag.Bool("race", false, "Execute the race detector")
|
race = flag.Bool("race", false, "Execute the race detector")
|
||||||
short = flag.Bool("short", false, "Pass the 'short'-flag to go test")
|
short = flag.Bool("short", false, "Pass the 'short'-flag to go test")
|
||||||
cachedir = flag.String("cachedir", "./build/cache", "directory for caching downloads")
|
cachedir = flag.String("cachedir", "./build/cache", "directory for caching downloads")
|
||||||
|
skipspectests = flag.Bool("skip-spectests", false, "Skip downloading execution-spec-tests fixtures")
|
||||||
|
threads = flag.Int("p", 1, "Number of CPU threads to use for testing")
|
||||||
)
|
)
|
||||||
flag.CommandLine.Parse(cmdline)
|
flag.CommandLine.Parse(cmdline)
|
||||||
|
|
||||||
// Get test fixtures.
|
// Load checksums file (needed for both spec tests and dlgo)
|
||||||
csdb := download.MustLoadChecksums("build/checksums.txt")
|
csdb := download.MustLoadChecksums("build/checksums.txt")
|
||||||
downloadSpecTestFixtures(csdb, *cachedir)
|
|
||||||
|
// Get test fixtures.
|
||||||
|
if !*skipspectests {
|
||||||
|
downloadSpecTestFixtures(csdb, *cachedir)
|
||||||
|
}
|
||||||
|
|
||||||
// Configure the toolchain.
|
// Configure the toolchain.
|
||||||
tc := build.GoToolchain{GOARCH: *arch, CC: *cc}
|
tc := build.GoToolchain{GOARCH: *arch, CC: *cc}
|
||||||
if *dlgo {
|
if *dlgo {
|
||||||
tc.Root = build.DownloadGo(csdb)
|
tc.Root = build.DownloadGo(csdb)
|
||||||
}
|
}
|
||||||
|
|
||||||
gotest := tc.Go("test")
|
gotest := tc.Go("test")
|
||||||
|
|
||||||
// CI needs a bit more time for the statetests (default 45m).
|
// CI needs a bit more time for the statetests (default 45m).
|
||||||
|
|
@ -307,7 +321,7 @@ func doTest(cmdline []string) {
|
||||||
|
|
||||||
// Test a single package at a time. CI builders are slow
|
// Test a single package at a time. CI builders are slow
|
||||||
// and some tests run into timeouts under load.
|
// and some tests run into timeouts under load.
|
||||||
gotest.Args = append(gotest.Args, "-p", "1")
|
gotest.Args = append(gotest.Args, "-p", fmt.Sprintf("%d", *threads))
|
||||||
if *coverage {
|
if *coverage {
|
||||||
gotest.Args = append(gotest.Args, "-covermode=atomic", "-cover")
|
gotest.Args = append(gotest.Args, "-covermode=atomic", "-cover")
|
||||||
}
|
}
|
||||||
|
|
@ -321,12 +335,20 @@ func doTest(cmdline []string) {
|
||||||
gotest.Args = append(gotest.Args, "-short")
|
gotest.Args = append(gotest.Args, "-short")
|
||||||
}
|
}
|
||||||
|
|
||||||
packages := []string{"./..."}
|
packages := flag.CommandLine.Args()
|
||||||
if len(flag.CommandLine.Args()) > 0 {
|
if len(packages) > 0 {
|
||||||
packages = flag.CommandLine.Args()
|
gotest.Args = append(gotest.Args, packages...)
|
||||||
|
build.MustRun(gotest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// No packages specified, run all tests for all modules.
|
||||||
|
gotest.Args = append(gotest.Args, "./...")
|
||||||
|
for _, mod := range goModules {
|
||||||
|
test := *gotest
|
||||||
|
test.Dir = mod
|
||||||
|
build.MustRun(&test)
|
||||||
}
|
}
|
||||||
gotest.Args = append(gotest.Args, packages...)
|
|
||||||
build.MustRun(gotest)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// downloadSpecTestFixtures downloads and extracts the execution-spec-tests fixtures.
|
// downloadSpecTestFixtures downloads and extracts the execution-spec-tests fixtures.
|
||||||
|
|
@ -343,10 +365,6 @@ func downloadSpecTestFixtures(csdb *download.ChecksumDB, cachedir string) string
|
||||||
return filepath.Join(cachedir, base)
|
return filepath.Join(cachedir, base)
|
||||||
}
|
}
|
||||||
|
|
||||||
// doCheckTidy assets that the Go modules files are tidied already.
|
|
||||||
func doCheckTidy() {
|
|
||||||
}
|
|
||||||
|
|
||||||
// doCheckGenerate ensures that re-generating generated files does not cause
|
// doCheckGenerate ensures that re-generating generated files does not cause
|
||||||
// any mutations in the source file tree.
|
// any mutations in the source file tree.
|
||||||
func doCheckGenerate() {
|
func doCheckGenerate() {
|
||||||
|
|
@ -354,40 +372,46 @@ func doCheckGenerate() {
|
||||||
cachedir = flag.String("cachedir", "./build/cache", "directory for caching binaries.")
|
cachedir = flag.String("cachedir", "./build/cache", "directory for caching binaries.")
|
||||||
tc = new(build.GoToolchain)
|
tc = new(build.GoToolchain)
|
||||||
)
|
)
|
||||||
// Compute the origin hashes of all the files
|
|
||||||
var hashes map[string][32]byte
|
|
||||||
|
|
||||||
var err error
|
|
||||||
hashes, err = build.HashFolder(".", []string{"tests/testdata", "build/cache", ".git"})
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Error computing hashes", "err", err)
|
|
||||||
}
|
|
||||||
// Run any go generate steps we might be missing
|
// Run any go generate steps we might be missing
|
||||||
var (
|
var (
|
||||||
protocPath = downloadProtoc(*cachedir)
|
protocPath = downloadProtoc(*cachedir)
|
||||||
protocGenGoPath = downloadProtocGenGo(*cachedir)
|
protocGenGoPath = downloadProtocGenGo(*cachedir)
|
||||||
)
|
)
|
||||||
c := tc.Go("generate", "./...")
|
|
||||||
pathList := []string{filepath.Join(protocPath, "bin"), protocGenGoPath, os.Getenv("PATH")}
|
pathList := []string{filepath.Join(protocPath, "bin"), protocGenGoPath, os.Getenv("PATH")}
|
||||||
c.Env = append(c.Env, "PATH="+strings.Join(pathList, string(os.PathListSeparator)))
|
|
||||||
build.MustRun(c)
|
|
||||||
|
|
||||||
// Check if generate file hashes have changed
|
for _, mod := range goModules {
|
||||||
generated, err := build.HashFolder(".", []string{"tests/testdata", "build/cache", ".git"})
|
// Compute the origin hashes of all the files
|
||||||
if err != nil {
|
hashes, err := build.HashFolder(mod, []string{"tests/testdata", "build/cache", ".git"})
|
||||||
log.Fatalf("Error re-computing hashes: %v", err)
|
if err != nil {
|
||||||
}
|
log.Fatal("Error computing hashes", "err", err)
|
||||||
updates := build.DiffHashes(hashes, generated)
|
}
|
||||||
for _, file := range updates {
|
|
||||||
log.Printf("File changed: %s", file)
|
c := tc.Go("generate", "./...")
|
||||||
}
|
c.Env = append(c.Env, "PATH="+strings.Join(pathList, string(os.PathListSeparator)))
|
||||||
if len(updates) != 0 {
|
c.Dir = mod
|
||||||
log.Fatal("One or more generated files were updated by running 'go generate ./...'")
|
build.MustRun(c)
|
||||||
|
// Check if generate file hashes have changed
|
||||||
|
generated, err := build.HashFolder(mod, []string{"tests/testdata", "build/cache", ".git"})
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Error re-computing hashes: %v", err)
|
||||||
|
}
|
||||||
|
updates := build.DiffHashes(hashes, generated)
|
||||||
|
for _, file := range updates {
|
||||||
|
log.Printf("File changed: %s", file)
|
||||||
|
}
|
||||||
|
if len(updates) != 0 {
|
||||||
|
log.Fatal("One or more generated files were updated by running 'go generate ./...'")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fmt.Println("No stale files detected.")
|
fmt.Println("No stale files detected.")
|
||||||
|
|
||||||
// Run go mod tidy check.
|
// Run go mod tidy check.
|
||||||
build.MustRun(tc.Go("mod", "tidy", "-diff"))
|
for _, mod := range goModules {
|
||||||
|
tidy := tc.Go("mod", "tidy", "-diff")
|
||||||
|
tidy.Dir = mod
|
||||||
|
build.MustRun(tidy)
|
||||||
|
}
|
||||||
fmt.Println("No untidy module files detected.")
|
fmt.Println("No untidy module files detected.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -427,14 +451,30 @@ func doLint(cmdline []string) {
|
||||||
cachedir = flag.String("cachedir", "./build/cache", "directory for caching golangci-lint binary.")
|
cachedir = flag.String("cachedir", "./build/cache", "directory for caching golangci-lint binary.")
|
||||||
)
|
)
|
||||||
flag.CommandLine.Parse(cmdline)
|
flag.CommandLine.Parse(cmdline)
|
||||||
packages := []string{"./..."}
|
|
||||||
if len(flag.CommandLine.Args()) > 0 {
|
|
||||||
packages = flag.CommandLine.Args()
|
|
||||||
}
|
|
||||||
|
|
||||||
linter := downloadLinter(*cachedir)
|
linter := downloadLinter(*cachedir)
|
||||||
lflags := []string{"run", "--config", ".golangci.yml"}
|
linter, err := filepath.Abs(linter)
|
||||||
build.MustRunCommandWithOutput(linter, append(lflags, packages...)...)
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
config, err := filepath.Abs(".golangci.yml")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
lflags := []string{"run", "--config", config}
|
||||||
|
packages := flag.CommandLine.Args()
|
||||||
|
if len(packages) > 0 {
|
||||||
|
build.MustRunCommandWithOutput(linter, append(lflags, packages...)...)
|
||||||
|
} else {
|
||||||
|
// Run for all modules in workspace.
|
||||||
|
for _, mod := range goModules {
|
||||||
|
args := append(lflags, "./...")
|
||||||
|
lintcmd := exec.Command(linter, args...)
|
||||||
|
lintcmd.Dir = mod
|
||||||
|
build.MustRunWithOutput(lintcmd)
|
||||||
|
}
|
||||||
|
}
|
||||||
fmt.Println("You have achieved perfection.")
|
fmt.Println("You have achieved perfection.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -862,7 +902,7 @@ func ppaUpload(workdir, ppa, sshUser string, files []string) {
|
||||||
var idfile string
|
var idfile string
|
||||||
if sshkey := getenvBase64("PPA_SSH_KEY"); len(sshkey) > 0 {
|
if sshkey := getenvBase64("PPA_SSH_KEY"); len(sshkey) > 0 {
|
||||||
idfile = filepath.Join(workdir, "sshkey")
|
idfile = filepath.Join(workdir, "sshkey")
|
||||||
if !build.FileExist(idfile) {
|
if !common.FileExist(idfile) {
|
||||||
os.WriteFile(idfile, sshkey, 0600)
|
os.WriteFile(idfile, sshkey, 0600)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -150,7 +150,7 @@ All hex encoded values must be prefixed with `0x`.
|
||||||
|
|
||||||
#### Create new password protected account
|
#### Create new password protected account
|
||||||
|
|
||||||
The signer will generate a new private key, encrypt it according to [web3 keystore spec](https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition) and store it in the keystore directory.
|
The signer will generate a new private key, encrypt it according to [web3 keystore spec](https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage/) and store it in the keystore directory.
|
||||||
The client is responsible for creating a backup of the keystore. If the keystore is lost there is no method of retrieving lost accounts.
|
The client is responsible for creating a backup of the keystore. If the keystore is lost there is no method of retrieving lost accounts.
|
||||||
|
|
||||||
#### Arguments
|
#### Arguments
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ The API-method `account_signGnosisSafeTx` was added. This method takes two param
|
||||||
```
|
```
|
||||||
|
|
||||||
Not all fields are required, though. This method is really just a UX helper, which massages the
|
Not all fields are required, though. This method is really just a UX helper, which massages the
|
||||||
input to conform to the `EIP-712` [specification](https://docs.gnosis.io/safe/docs/contracts_tx_execution/#transaction-hash)
|
input to conform to the `EIP-712` [specification](https://docs.safe.global/core-api/transaction-service-reference/gnosis)
|
||||||
for the Gnosis Safe, and making the output be directly importable to by a relay service.
|
for the Gnosis Safe, and making the output be directly importable to by a relay service.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -129,7 +129,7 @@ func (c *Conn) Write(proto Proto, code uint64, msg any) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var errDisc error = fmt.Errorf("disconnect")
|
var errDisc error = errors.New("disconnect")
|
||||||
|
|
||||||
// ReadEth reads an Eth sub-protocol wire message.
|
// ReadEth reads an Eth sub-protocol wire message.
|
||||||
func (c *Conn) ReadEth() (any, error) {
|
func (c *Conn) ReadEth() (any, error) {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
hivechain generate \
|
hivechain generate \
|
||||||
|
--pos \
|
||||||
--fork-interval 6 \
|
--fork-interval 6 \
|
||||||
--tx-interval 1 \
|
--tx-interval 1 \
|
||||||
--length 500 \
|
--length 600 \
|
||||||
--outdir testdata \
|
--outdir testdata \
|
||||||
--lastfork cancun \
|
--lastfork prague \
|
||||||
--outputs accounts,genesis,chain,headstate,txinfo,headblock,headfcu,newpayload,forkenv
|
--outputs accounts,genesis,chain,headstate,txinfo,headblock,headfcu,newpayload,forkenv
|
||||||
|
|
|
||||||
|
|
@ -86,3 +86,9 @@ func protoOffset(proto Proto) uint64 {
|
||||||
panic("unhandled protocol")
|
panic("unhandled protocol")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// msgTypePtr is the constraint for protocol message types.
|
||||||
|
type msgTypePtr[U any] interface {
|
||||||
|
*U
|
||||||
|
Kind() byte
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -86,9 +86,9 @@ func (s *Suite) TestSnapGetAccountRange(t *utesting.T) {
|
||||||
root: root,
|
root: root,
|
||||||
startingHash: zero,
|
startingHash: zero,
|
||||||
limitHash: ffHash,
|
limitHash: ffHash,
|
||||||
expAccounts: 86,
|
expAccounts: 67,
|
||||||
expFirst: firstKey,
|
expFirst: firstKey,
|
||||||
expLast: common.HexToHash("0x445cb5c1278fdce2f9cbdb681bdd76c52f8e50e41dbd9e220242a69ba99ac099"),
|
expLast: common.HexToHash("0x622e662246601dd04f996289ce8b85e86db7bb15bb17f86487ec9d543ddb6f9a"),
|
||||||
desc: "In this test, we request the entire state range, but limit the response to 4000 bytes.",
|
desc: "In this test, we request the entire state range, but limit the response to 4000 bytes.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -96,9 +96,9 @@ func (s *Suite) TestSnapGetAccountRange(t *utesting.T) {
|
||||||
root: root,
|
root: root,
|
||||||
startingHash: zero,
|
startingHash: zero,
|
||||||
limitHash: ffHash,
|
limitHash: ffHash,
|
||||||
expAccounts: 65,
|
expAccounts: 49,
|
||||||
expFirst: firstKey,
|
expFirst: firstKey,
|
||||||
expLast: common.HexToHash("0x2e6fe1362b3e388184fd7bf08e99e74170b26361624ffd1c5f646da7067b58b6"),
|
expLast: common.HexToHash("0x445cb5c1278fdce2f9cbdb681bdd76c52f8e50e41dbd9e220242a69ba99ac099"),
|
||||||
desc: "In this test, we request the entire state range, but limit the response to 3000 bytes.",
|
desc: "In this test, we request the entire state range, but limit the response to 3000 bytes.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -106,9 +106,9 @@ func (s *Suite) TestSnapGetAccountRange(t *utesting.T) {
|
||||||
root: root,
|
root: root,
|
||||||
startingHash: zero,
|
startingHash: zero,
|
||||||
limitHash: ffHash,
|
limitHash: ffHash,
|
||||||
expAccounts: 44,
|
expAccounts: 34,
|
||||||
expFirst: firstKey,
|
expFirst: firstKey,
|
||||||
expLast: common.HexToHash("0x1c3f74249a4892081ba0634a819aec9ed25f34c7653f5719b9098487e65ab595"),
|
expLast: common.HexToHash("0x2ef46ebd2073cecde499c2e8df028ad79a26d57bfaa812c4c6f7eb4c9617b913"),
|
||||||
desc: "In this test, we request the entire state range, but limit the response to 2000 bytes.",
|
desc: "In this test, we request the entire state range, but limit the response to 2000 bytes.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -177,9 +177,9 @@ The server should return the first available account.`,
|
||||||
root: root,
|
root: root,
|
||||||
startingHash: firstKey,
|
startingHash: firstKey,
|
||||||
limitHash: ffHash,
|
limitHash: ffHash,
|
||||||
expAccounts: 86,
|
expAccounts: 67,
|
||||||
expFirst: firstKey,
|
expFirst: firstKey,
|
||||||
expLast: common.HexToHash("0x445cb5c1278fdce2f9cbdb681bdd76c52f8e50e41dbd9e220242a69ba99ac099"),
|
expLast: common.HexToHash("0x622e662246601dd04f996289ce8b85e86db7bb15bb17f86487ec9d543ddb6f9a"),
|
||||||
desc: `In this test, startingHash is exactly the first available account key.
|
desc: `In this test, startingHash is exactly the first available account key.
|
||||||
The server should return the first available account of the state as the first item.`,
|
The server should return the first available account of the state as the first item.`,
|
||||||
},
|
},
|
||||||
|
|
@ -188,9 +188,9 @@ The server should return the first available account of the state as the first i
|
||||||
root: root,
|
root: root,
|
||||||
startingHash: hashAdd(firstKey, 1),
|
startingHash: hashAdd(firstKey, 1),
|
||||||
limitHash: ffHash,
|
limitHash: ffHash,
|
||||||
expAccounts: 86,
|
expAccounts: 67,
|
||||||
expFirst: secondKey,
|
expFirst: secondKey,
|
||||||
expLast: common.HexToHash("0x4615e5f5df5b25349a00ad313c6cd0436b6c08ee5826e33a018661997f85ebaa"),
|
expLast: common.HexToHash("0x66192e4c757fba1cdc776e6737008f42d50370d3cd801db3624274283bf7cd63"),
|
||||||
desc: `In this test, startingHash is after the first available key.
|
desc: `In this test, startingHash is after the first available key.
|
||||||
The server should return the second account of the state as the first item.`,
|
The server should return the second account of the state as the first item.`,
|
||||||
},
|
},
|
||||||
|
|
@ -226,9 +226,9 @@ server to return no data because genesis is older than 127 blocks.`,
|
||||||
root: s.chain.RootAt(int(s.chain.Head().Number().Uint64()) - 127),
|
root: s.chain.RootAt(int(s.chain.Head().Number().Uint64()) - 127),
|
||||||
startingHash: zero,
|
startingHash: zero,
|
||||||
limitHash: ffHash,
|
limitHash: ffHash,
|
||||||
expAccounts: 84,
|
expAccounts: 66,
|
||||||
expFirst: firstKey,
|
expFirst: firstKey,
|
||||||
expLast: common.HexToHash("0x580aa878e2f92d113a12c0a3ce3c21972b03dbe80786858d49a72097e2c491a3"),
|
expLast: common.HexToHash("0x729953a43ed6c913df957172680a17e5735143ad767bda8f58ac84ec62fbec5e"),
|
||||||
desc: `This test requests data at a state root that is 127 blocks old.
|
desc: `This test requests data at a state root that is 127 blocks old.
|
||||||
We expect the server to have this state available.`,
|
We expect the server to have this state available.`,
|
||||||
},
|
},
|
||||||
|
|
@ -657,8 +657,8 @@ The server should reject the request.`,
|
||||||
// It's a bit unfortunate these are hard-coded, but the result depends on
|
// It's a bit unfortunate these are hard-coded, but the result depends on
|
||||||
// a lot of aspects of the state trie and can't be guessed in a simple
|
// a lot of aspects of the state trie and can't be guessed in a simple
|
||||||
// way. So you'll have to update this when the test chain is changed.
|
// way. So you'll have to update this when the test chain is changed.
|
||||||
common.HexToHash("0x3e963a69401a70224cbfb8c0cc2249b019041a538675d71ccf80c9328d114e2e"),
|
common.HexToHash("0x5bdc0d6057b35642a16d27223ea5454e5a17a400e28f7328971a5f2a87773b76"),
|
||||||
common.HexToHash("0xd0670d09cdfbf3c6320eb3e92c47c57baa6c226551a2d488c05581091e6b1689"),
|
common.HexToHash("0x0a76c9812ca90ffed8ee4d191e683f93386b6e50cfe3679c0760d27510aa7fc5"),
|
||||||
empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty,
|
empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty,
|
||||||
empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty,
|
empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty,
|
||||||
empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty,
|
empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty,
|
||||||
|
|
@ -678,8 +678,8 @@ The server should reject the request.`,
|
||||||
// be updated when the test chain is changed.
|
// be updated when the test chain is changed.
|
||||||
expHashes: []common.Hash{
|
expHashes: []common.Hash{
|
||||||
empty,
|
empty,
|
||||||
common.HexToHash("0xd0670d09cdfbf3c6320eb3e92c47c57baa6c226551a2d488c05581091e6b1689"),
|
common.HexToHash("0x0a76c9812ca90ffed8ee4d191e683f93386b6e50cfe3679c0760d27510aa7fc5"),
|
||||||
common.HexToHash("0x3e963a69401a70224cbfb8c0cc2249b019041a538675d71ccf80c9328d114e2e"),
|
common.HexToHash("0x5bdc0d6057b35642a16d27223ea5454e5a17a400e28f7328971a5f2a87773b76"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ package ethtest
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
@ -195,6 +196,7 @@ to check if the node disconnects after receiving multiple invalid requests.`)
|
||||||
func (s *Suite) TestSimultaneousRequests(t *utesting.T) {
|
func (s *Suite) TestSimultaneousRequests(t *utesting.T) {
|
||||||
t.Log(`This test requests blocks headers from the node, performing two requests
|
t.Log(`This test requests blocks headers from the node, performing two requests
|
||||||
concurrently, with different request IDs.`)
|
concurrently, with different request IDs.`)
|
||||||
|
|
||||||
conn, err := s.dialAndPeer(nil)
|
conn, err := s.dialAndPeer(nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("peering failed: %v", err)
|
t.Fatalf("peering failed: %v", err)
|
||||||
|
|
@ -234,37 +236,36 @@ concurrently, with different request IDs.`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wait for responses.
|
// Wait for responses.
|
||||||
headers1 := new(eth.BlockHeadersPacket)
|
// Note they can arrive in either order.
|
||||||
if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers1); err != nil {
|
resp, err := collectResponses(conn, 2, func(msg *eth.BlockHeadersPacket) uint64 {
|
||||||
t.Fatalf("error reading block headers msg: %v", err)
|
if msg.RequestId != 111 && msg.RequestId != 222 {
|
||||||
}
|
t.Fatalf("response with unknown request ID: %v", msg.RequestId)
|
||||||
if got, want := headers1.RequestId, req1.RequestId; got != want {
|
}
|
||||||
t.Fatalf("unexpected request id in response: got %d, want %d", got, want)
|
return msg.RequestId
|
||||||
}
|
})
|
||||||
headers2 := new(eth.BlockHeadersPacket)
|
if err != nil {
|
||||||
if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers2); err != nil {
|
t.Fatal(err)
|
||||||
t.Fatalf("error reading block headers msg: %v", err)
|
|
||||||
}
|
|
||||||
if got, want := headers2.RequestId, req2.RequestId; got != want {
|
|
||||||
t.Fatalf("unexpected request id in response: got %d, want %d", got, want)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check received headers for accuracy.
|
// Check if headers match.
|
||||||
|
resp1 := resp[111]
|
||||||
if expected, err := s.chain.GetHeaders(req1); err != nil {
|
if expected, err := s.chain.GetHeaders(req1); err != nil {
|
||||||
t.Fatalf("failed to get expected headers for request 1: %v", err)
|
t.Fatalf("failed to get expected headers for request 1: %v", err)
|
||||||
} else if !headersMatch(expected, headers1.BlockHeadersRequest) {
|
} else if !headersMatch(expected, resp1.BlockHeadersRequest) {
|
||||||
t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers1)
|
t.Fatalf("header mismatch for request ID %v: \nexpected %v \ngot %v", 111, expected, resp1)
|
||||||
}
|
}
|
||||||
|
resp2 := resp[222]
|
||||||
if expected, err := s.chain.GetHeaders(req2); err != nil {
|
if expected, err := s.chain.GetHeaders(req2); err != nil {
|
||||||
t.Fatalf("failed to get expected headers for request 2: %v", err)
|
t.Fatalf("failed to get expected headers for request 2: %v", err)
|
||||||
} else if !headersMatch(expected, headers2.BlockHeadersRequest) {
|
} else if !headersMatch(expected, resp2.BlockHeadersRequest) {
|
||||||
t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers2)
|
t.Fatalf("header mismatch for request ID %v: \nexpected %v \ngot %v", 222, expected, resp2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Suite) TestSameRequestID(t *utesting.T) {
|
func (s *Suite) TestSameRequestID(t *utesting.T) {
|
||||||
t.Log(`This test requests block headers, performing two concurrent requests with the
|
t.Log(`This test requests block headers, performing two concurrent requests with the
|
||||||
same request ID. The node should handle the request by responding to both requests.`)
|
same request ID. The node should handle the request by responding to both requests.`)
|
||||||
|
|
||||||
conn, err := s.dialAndPeer(nil)
|
conn, err := s.dialAndPeer(nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("peering failed: %v", err)
|
t.Fatalf("peering failed: %v", err)
|
||||||
|
|
@ -288,7 +289,7 @@ same request ID. The node should handle the request by responding to both reques
|
||||||
Origin: eth.HashOrNumber{
|
Origin: eth.HashOrNumber{
|
||||||
Number: 33,
|
Number: 33,
|
||||||
},
|
},
|
||||||
Amount: 2,
|
Amount: 3,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -300,35 +301,52 @@ same request ID. The node should handle the request by responding to both reques
|
||||||
t.Fatalf("failed to write to connection: %v", err)
|
t.Fatalf("failed to write to connection: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wait for the responses.
|
// Wait for the responses. They can arrive in either order, and we can't tell them
|
||||||
headers1 := new(eth.BlockHeadersPacket)
|
// apart by their request ID, so use the number of headers instead.
|
||||||
if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers1); err != nil {
|
resp, err := collectResponses(conn, 2, func(msg *eth.BlockHeadersPacket) uint64 {
|
||||||
t.Fatalf("error reading from connection: %v", err)
|
id := uint64(len(msg.BlockHeadersRequest))
|
||||||
}
|
if id != 2 && id != 3 {
|
||||||
if got, want := headers1.RequestId, request1.RequestId; got != want {
|
t.Fatalf("invalid number of headers in response: %d", id)
|
||||||
t.Fatalf("unexpected request id: got %d, want %d", got, want)
|
}
|
||||||
}
|
return id
|
||||||
headers2 := new(eth.BlockHeadersPacket)
|
})
|
||||||
if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers2); err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error reading from connection: %v", err)
|
t.Fatal(err)
|
||||||
}
|
|
||||||
if got, want := headers2.RequestId, request2.RequestId; got != want {
|
|
||||||
t.Fatalf("unexpected request id: got %d, want %d", got, want)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if headers match.
|
// Check if headers match.
|
||||||
|
resp1 := resp[2]
|
||||||
if expected, err := s.chain.GetHeaders(request1); err != nil {
|
if expected, err := s.chain.GetHeaders(request1); err != nil {
|
||||||
t.Fatalf("failed to get expected block headers: %v", err)
|
t.Fatalf("failed to get expected headers for request 1: %v", err)
|
||||||
} else if !headersMatch(expected, headers1.BlockHeadersRequest) {
|
} else if !headersMatch(expected, resp1.BlockHeadersRequest) {
|
||||||
t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers1)
|
t.Fatalf("headers mismatch: \nexpected %v \ngot %v", expected, resp1)
|
||||||
}
|
}
|
||||||
|
resp2 := resp[3]
|
||||||
if expected, err := s.chain.GetHeaders(request2); err != nil {
|
if expected, err := s.chain.GetHeaders(request2); err != nil {
|
||||||
t.Fatalf("failed to get expected block headers: %v", err)
|
t.Fatalf("failed to get expected headers for request 2: %v", err)
|
||||||
} else if !headersMatch(expected, headers2.BlockHeadersRequest) {
|
} else if !headersMatch(expected, resp2.BlockHeadersRequest) {
|
||||||
t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers2)
|
t.Fatalf("headers mismatch: \nexpected %v \ngot %v", expected, resp2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// collectResponses waits for n messages of type T on the given connection.
|
||||||
|
// The messsages are collected according to the 'identity' function.
|
||||||
|
func collectResponses[T any, P msgTypePtr[T]](conn *Conn, n int, identity func(P) uint64) (map[uint64]P, error) {
|
||||||
|
resp := make(map[uint64]P, n)
|
||||||
|
for range n {
|
||||||
|
r := new(T)
|
||||||
|
if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, r); err != nil {
|
||||||
|
return resp, fmt.Errorf("read error: %v", err)
|
||||||
|
}
|
||||||
|
id := identity(r)
|
||||||
|
if resp[id] != nil {
|
||||||
|
return resp, fmt.Errorf("duplicate response %v", r)
|
||||||
|
}
|
||||||
|
resp[id] = r
|
||||||
|
}
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Suite) TestZeroRequestID(t *utesting.T) {
|
func (s *Suite) TestZeroRequestID(t *utesting.T) {
|
||||||
t.Log(`This test sends a GetBlockHeaders message with a request-id of zero,
|
t.Log(`This test sends a GetBlockHeaders message with a request-id of zero,
|
||||||
and expects a response.`)
|
and expects a response.`)
|
||||||
|
|
@ -879,18 +897,14 @@ func makeSidecar(data ...byte) *types.BlobTxSidecar {
|
||||||
commitments = append(commitments, c)
|
commitments = append(commitments, c)
|
||||||
proofs = append(proofs, p)
|
proofs = append(proofs, p)
|
||||||
}
|
}
|
||||||
return &types.BlobTxSidecar{
|
return types.NewBlobTxSidecar(types.BlobSidecarVersion0, blobs, commitments, proofs)
|
||||||
Blobs: blobs,
|
|
||||||
Commitments: commitments,
|
|
||||||
Proofs: proofs,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Suite) makeBlobTxs(count, blobs int, discriminator byte) (txs types.Transactions) {
|
func (s *Suite) makeBlobTxs(count, blobs int, discriminator byte) (txs types.Transactions) {
|
||||||
from, nonce := s.chain.GetSender(5)
|
from, nonce := s.chain.GetSender(5)
|
||||||
for i := 0; i < count; i++ {
|
for i := 0; i < count; i++ {
|
||||||
// Make blob data, max of 2 blobs per tx.
|
// Make blob data, max of 2 blobs per tx.
|
||||||
blobdata := make([]byte, blobs%3)
|
blobdata := make([]byte, min(blobs, 2))
|
||||||
for i := range blobdata {
|
for i := range blobdata {
|
||||||
blobdata[i] = discriminator
|
blobdata[i] = discriminator
|
||||||
blobs -= 1
|
blobs -= 1
|
||||||
|
|
@ -988,14 +1002,10 @@ func (s *Suite) TestBlobViolations(t *utesting.T) {
|
||||||
// data has been modified to produce a different commitment hash.
|
// data has been modified to produce a different commitment hash.
|
||||||
func mangleSidecar(tx *types.Transaction) *types.Transaction {
|
func mangleSidecar(tx *types.Transaction) *types.Transaction {
|
||||||
sidecar := tx.BlobTxSidecar()
|
sidecar := tx.BlobTxSidecar()
|
||||||
copy := types.BlobTxSidecar{
|
cpy := sidecar.Copy()
|
||||||
Blobs: append([]kzg4844.Blob{}, sidecar.Blobs...),
|
|
||||||
Commitments: append([]kzg4844.Commitment{}, sidecar.Commitments...),
|
|
||||||
Proofs: append([]kzg4844.Proof{}, sidecar.Proofs...),
|
|
||||||
}
|
|
||||||
// zero the first commitment to alter the sidecar hash
|
// zero the first commitment to alter the sidecar hash
|
||||||
copy.Commitments[0] = kzg4844.Commitment{}
|
cpy.Commitments[0] = kzg4844.Commitment{}
|
||||||
return tx.WithBlobTxSidecar(©)
|
return tx.WithBlobTxSidecar(cpy)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Suite) TestBlobTxWithoutSidecar(t *utesting.T) {
|
func (s *Suite) TestBlobTxWithoutSidecar(t *utesting.T) {
|
||||||
|
|
@ -1100,7 +1110,7 @@ func (s *Suite) testBadBlobTx(t *utesting.T, tx *types.Transaction, badTx *types
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !readUntilDisconnect(conn) {
|
if !readUntilDisconnect(conn) {
|
||||||
errc <- fmt.Errorf("expected bad peer to be disconnected")
|
errc <- errors.New("expected bad peer to be disconnected")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
stage3.Done()
|
stage3.Done()
|
||||||
|
|
@ -1140,14 +1150,17 @@ func (s *Suite) testBadBlobTx(t *utesting.T, tx *types.Transaction, badTx *types
|
||||||
// transmit the same tx but with correct sidecar from the good peer.
|
// transmit the same tx but with correct sidecar from the good peer.
|
||||||
|
|
||||||
var req *eth.GetPooledTransactionsPacket
|
var req *eth.GetPooledTransactionsPacket
|
||||||
req, err = readUntil[eth.GetPooledTransactionsPacket](context.Background(), conn)
|
ctx, cancel := context.WithTimeout(context.Background(), 12*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
req, err = readUntil[eth.GetPooledTransactionsPacket](ctx, conn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errc <- fmt.Errorf("reading pooled tx request failed: %v", err)
|
errc <- fmt.Errorf("reading pooled tx request failed: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if req.GetPooledTransactionsRequest[0] != tx.Hash() {
|
if req.GetPooledTransactionsRequest[0] != tx.Hash() {
|
||||||
errc <- fmt.Errorf("requested unknown tx hash")
|
errc <- errors.New("requested unknown tx hash")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1157,7 +1170,7 @@ func (s *Suite) testBadBlobTx(t *utesting.T, tx *types.Transaction, badTx *types
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if readUntilDisconnect(conn) {
|
if readUntilDisconnect(conn) {
|
||||||
errc <- fmt.Errorf("unexpected disconnect")
|
errc <- errors.New("unexpected disconnect")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
close(errc)
|
close(errc)
|
||||||
|
|
|
||||||
BIN
cmd/devp2p/internal/ethtest/testdata/chain.rlp
vendored
BIN
cmd/devp2p/internal/ethtest/testdata/chain.rlp
vendored
Binary file not shown.
|
|
@ -1,20 +1,27 @@
|
||||||
{
|
{
|
||||||
"HIVE_CANCUN_TIMESTAMP": "840",
|
"HIVE_CANCUN_BLOB_BASE_FEE_UPDATE_FRACTION": "3338477",
|
||||||
|
"HIVE_CANCUN_BLOB_MAX": "6",
|
||||||
|
"HIVE_CANCUN_BLOB_TARGET": "3",
|
||||||
|
"HIVE_CANCUN_TIMESTAMP": "60",
|
||||||
"HIVE_CHAIN_ID": "3503995874084926",
|
"HIVE_CHAIN_ID": "3503995874084926",
|
||||||
"HIVE_FORK_ARROW_GLACIER": "60",
|
"HIVE_FORK_ARROW_GLACIER": "0",
|
||||||
"HIVE_FORK_BERLIN": "48",
|
"HIVE_FORK_BERLIN": "0",
|
||||||
"HIVE_FORK_BYZANTIUM": "18",
|
"HIVE_FORK_BYZANTIUM": "0",
|
||||||
"HIVE_FORK_CONSTANTINOPLE": "24",
|
"HIVE_FORK_CONSTANTINOPLE": "0",
|
||||||
"HIVE_FORK_GRAY_GLACIER": "66",
|
"HIVE_FORK_GRAY_GLACIER": "0",
|
||||||
"HIVE_FORK_HOMESTEAD": "0",
|
"HIVE_FORK_HOMESTEAD": "0",
|
||||||
"HIVE_FORK_ISTANBUL": "36",
|
"HIVE_FORK_ISTANBUL": "0",
|
||||||
"HIVE_FORK_LONDON": "54",
|
"HIVE_FORK_LONDON": "0",
|
||||||
"HIVE_FORK_MUIR_GLACIER": "42",
|
"HIVE_FORK_MUIR_GLACIER": "0",
|
||||||
"HIVE_FORK_PETERSBURG": "30",
|
"HIVE_FORK_PETERSBURG": "0",
|
||||||
"HIVE_FORK_SPURIOUS": "12",
|
"HIVE_FORK_SPURIOUS": "0",
|
||||||
"HIVE_FORK_TANGERINE": "6",
|
"HIVE_FORK_TANGERINE": "0",
|
||||||
"HIVE_MERGE_BLOCK_ID": "72",
|
"HIVE_MERGE_BLOCK_ID": "0",
|
||||||
"HIVE_NETWORK_ID": "3503995874084926",
|
"HIVE_NETWORK_ID": "3503995874084926",
|
||||||
"HIVE_SHANGHAI_TIMESTAMP": "780",
|
"HIVE_PRAGUE_BLOB_BASE_FEE_UPDATE_FRACTION": "5007716",
|
||||||
"HIVE_TERMINAL_TOTAL_DIFFICULTY": "9454784"
|
"HIVE_PRAGUE_BLOB_MAX": "9",
|
||||||
|
"HIVE_PRAGUE_BLOB_TARGET": "6",
|
||||||
|
"HIVE_PRAGUE_TIMESTAMP": "120",
|
||||||
|
"HIVE_SHANGHAI_TIMESTAMP": "0",
|
||||||
|
"HIVE_TERMINAL_TOTAL_DIFFICULTY": "131072"
|
||||||
}
|
}
|
||||||
|
|
@ -2,28 +2,35 @@
|
||||||
"config": {
|
"config": {
|
||||||
"chainId": 3503995874084926,
|
"chainId": 3503995874084926,
|
||||||
"homesteadBlock": 0,
|
"homesteadBlock": 0,
|
||||||
"eip150Block": 6,
|
"eip150Block": 0,
|
||||||
"eip155Block": 12,
|
"eip155Block": 0,
|
||||||
"eip158Block": 12,
|
"eip158Block": 0,
|
||||||
"byzantiumBlock": 18,
|
"byzantiumBlock": 0,
|
||||||
"constantinopleBlock": 24,
|
"constantinopleBlock": 0,
|
||||||
"petersburgBlock": 30,
|
"petersburgBlock": 0,
|
||||||
"istanbulBlock": 36,
|
"istanbulBlock": 0,
|
||||||
"muirGlacierBlock": 42,
|
"muirGlacierBlock": 0,
|
||||||
"berlinBlock": 48,
|
"berlinBlock": 0,
|
||||||
"londonBlock": 54,
|
"londonBlock": 0,
|
||||||
"arrowGlacierBlock": 60,
|
"arrowGlacierBlock": 0,
|
||||||
"grayGlacierBlock": 66,
|
"grayGlacierBlock": 0,
|
||||||
"mergeNetsplitBlock": 72,
|
"mergeNetsplitBlock": 0,
|
||||||
"shanghaiTime": 780,
|
"shanghaiTime": 0,
|
||||||
"cancunTime": 840,
|
"cancunTime": 60,
|
||||||
"terminalTotalDifficulty": 9454784,
|
"pragueTime": 120,
|
||||||
|
"terminalTotalDifficulty": 131072,
|
||||||
|
"depositContractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
"ethash": {},
|
"ethash": {},
|
||||||
"blobSchedule": {
|
"blobSchedule": {
|
||||||
"cancun": {
|
"cancun": {
|
||||||
"target": 3,
|
"target": 3,
|
||||||
"max": 6,
|
"max": 6,
|
||||||
"baseFeeUpdateFraction": 3338477
|
"baseFeeUpdateFraction": 3338477
|
||||||
|
},
|
||||||
|
"prague": {
|
||||||
|
"target": 6,
|
||||||
|
"max": 9,
|
||||||
|
"baseFeeUpdateFraction": 5007716
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -35,6 +42,18 @@
|
||||||
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
"coinbase": "0x0000000000000000000000000000000000000000",
|
"coinbase": "0x0000000000000000000000000000000000000000",
|
||||||
"alloc": {
|
"alloc": {
|
||||||
|
"00000961ef480eb55e80d19ad83579a64c007002": {
|
||||||
|
"code": "0x3373fffffffffffffffffffffffffffffffffffffffe1460cb5760115f54807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146101f457600182026001905f5b5f82111560685781019083028483029004916001019190604d565b909390049250505036603814608857366101f457346101f4575f5260205ff35b34106101f457600154600101600155600354806003026004013381556001015f35815560010160203590553360601b5f5260385f601437604c5fa0600101600355005b6003546002548082038060101160df575060105b5f5b8181146101835782810160030260040181604c02815460601b8152601401816001015481526020019060020154807fffffffffffffffffffffffffffffffff00000000000000000000000000000000168252906010019060401c908160381c81600701538160301c81600601538160281c81600501538160201c81600401538160181c81600301538160101c81600201538160081c81600101535360010160e1565b910180921461019557906002556101a0565b90505f6002555f6003555b5f54807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14156101cd57505f5b6001546002828201116101e25750505f6101e8565b01600290035b5f555f600155604c025ff35b5f5ffd",
|
||||||
|
"balance": "0x1"
|
||||||
|
},
|
||||||
|
"0000bbddc7ce488642fb579f8b00f3a590007251": {
|
||||||
|
"code": "0x3373fffffffffffffffffffffffffffffffffffffffe1460d35760115f54807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461019a57600182026001905f5b5f82111560685781019083028483029004916001019190604d565b9093900492505050366060146088573661019a573461019a575f5260205ff35b341061019a57600154600101600155600354806004026004013381556001015f358155600101602035815560010160403590553360601b5f5260605f60143760745fa0600101600355005b6003546002548082038060021160e7575060025b5f5b8181146101295782810160040260040181607402815460601b815260140181600101548152602001816002015481526020019060030154905260010160e9565b910180921461013b5790600255610146565b90505f6002555f6003555b5f54807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff141561017357505f5b6001546001828201116101885750505f61018e565b01600190035b5f555f6001556074025ff35b5f5ffd",
|
||||||
|
"balance": "0x1"
|
||||||
|
},
|
||||||
|
"0000f90827f1c53a10cb7a02335b175320002935": {
|
||||||
|
"code": "0x3373fffffffffffffffffffffffffffffffffffffffe14604657602036036042575f35600143038111604257611fff81430311604257611fff9006545f5260205ff35b5f5ffd5b5f35611fff60014303065500",
|
||||||
|
"balance": "0x1"
|
||||||
|
},
|
||||||
"000f3df6d732807ef1319fb7b8bb8522d0beac02": {
|
"000f3df6d732807ef1319fb7b8bb8522d0beac02": {
|
||||||
"code": "0x3373fffffffffffffffffffffffffffffffffffffffe14604d57602036146024575f5ffd5b5f35801560495762001fff810690815414603c575f5ffd5b62001fff01545f5260205ff35b5f5ffd5b62001fff42064281555f359062001fff015500",
|
"code": "0x3373fffffffffffffffffffffffffffffffffffffffe14604d57602036146024575f5ffd5b5f35801560495762001fff810690815414603c575f5ffd5b62001fff01545f5260205ff35b5f5ffd5b62001fff42064281555f359062001fff015500",
|
||||||
"balance": "0x2a"
|
"balance": "0x2a"
|
||||||
|
|
@ -81,6 +100,10 @@
|
||||||
"7435ed30a8b4aeb0877cef0c6e8cffe834eb865f": {
|
"7435ed30a8b4aeb0877cef0c6e8cffe834eb865f": {
|
||||||
"balance": "0xc097ce7bc90715b34b9f1000000000"
|
"balance": "0xc097ce7bc90715b34b9f1000000000"
|
||||||
},
|
},
|
||||||
|
"7dcd17433742f4c0ca53122ab541d0ba67fc27df": {
|
||||||
|
"code": "0x3680600080376000206000548082558060010160005560005263656d697460206000a2",
|
||||||
|
"balance": "0x0"
|
||||||
|
},
|
||||||
"83c7e323d189f18725ac510004fdc2941f8c4a78": {
|
"83c7e323d189f18725ac510004fdc2941f8c4a78": {
|
||||||
"balance": "0xc097ce7bc90715b34b9f1000000000"
|
"balance": "0xc097ce7bc90715b34b9f1000000000"
|
||||||
},
|
},
|
||||||
|
|
@ -112,7 +135,7 @@
|
||||||
"number": "0x0",
|
"number": "0x0",
|
||||||
"gasUsed": "0x0",
|
"gasUsed": "0x0",
|
||||||
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
"baseFeePerGas": null,
|
"baseFeePerGas": "0x3b9aca00",
|
||||||
"excessBlobGas": null,
|
"excessBlobGas": null,
|
||||||
"blobGasUsed": null
|
"blobGasUsed": null
|
||||||
}
|
}
|
||||||
|
|
@ -1,16 +1,16 @@
|
||||||
{
|
{
|
||||||
"parentHash": "0x96a73007443980c5e0985dfbb45279aa496dadea16918ad42c65c0bf8122ec39",
|
"parentHash": "0x65151b101682b54cd08ba226f640c14c86176865ff9bfc57e0147dadaeac34bb",
|
||||||
"sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
|
"sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
|
||||||
"miner": "0x0000000000000000000000000000000000000000",
|
"miner": "0x0000000000000000000000000000000000000000",
|
||||||
"stateRoot": "0xea4c1f4d9fa8664c22574c5b2f948a78c4b1a753cebc1861e7fb5b1aa21c5a94",
|
"stateRoot": "0xce423ebc60fc7764a43f09f1fe3ae61eef25e3eb8d09b1108f7e7eb77dfff5e6",
|
||||||
"transactionsRoot": "0xecda39025fc4c609ce778d75eed0aa53b65ce1e3d1373b34bad8578cc31e5b48",
|
"transactionsRoot": "0x7ec1ae3989efa75d7bcc766e5e2443afa8a89a5fda42ebba90050e7e702980f7",
|
||||||
"receiptsRoot": "0x056b23fbba480696b65fe5a59b8f2148a1299103c4f57df839233af2cf4ca2d2",
|
"receiptsRoot": "0xfe160832b1ca85f38c6674cb0aae3a24693bc49be56e2ecdf3698b71a794de86",
|
||||||
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
||||||
"difficulty": "0x0",
|
"difficulty": "0x0",
|
||||||
"number": "0x1f4",
|
"number": "0x258",
|
||||||
"gasLimit": "0x47e7c40",
|
"gasLimit": "0x23f3e20",
|
||||||
"gasUsed": "0x5208",
|
"gasUsed": "0x19d36",
|
||||||
"timestamp": "0x1388",
|
"timestamp": "0x1770",
|
||||||
"extraData": "0x",
|
"extraData": "0x",
|
||||||
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
"nonce": "0x0000000000000000",
|
"nonce": "0x0000000000000000",
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
"withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
"withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
||||||
"blobGasUsed": "0x0",
|
"blobGasUsed": "0x0",
|
||||||
"excessBlobGas": "0x0",
|
"excessBlobGas": "0x0",
|
||||||
"parentBeaconBlockRoot": "0xf653da50cdff4733f13f7a5e338290e883bdf04adf3f112709728063ea965d6c",
|
"parentBeaconBlockRoot": "0xf5003fc8f92358e790a114bce93ce1d9c283c85e1787f8d7d56714d3489b49e6",
|
||||||
"hash": "0x36a166f0dcd160fc5e5c61c9a7c2d7f236d9175bf27f43aaa2150e291f092ef7"
|
"requestsHash": "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||||
|
"hash": "0xce8d86ba17a2ec303155f0e264c58a4b8f94ce3436274cf1924f91acdb7502d0"
|
||||||
}
|
}
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"jsonrpc": "2.0",
|
"jsonrpc": "2.0",
|
||||||
"id": "fcu500",
|
"id": "fcu600",
|
||||||
"method": "engine_forkchoiceUpdatedV3",
|
"method": "engine_forkchoiceUpdatedV3",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
"headBlockHash": "0x36a166f0dcd160fc5e5c61c9a7c2d7f236d9175bf27f43aaa2150e291f092ef7",
|
"headBlockHash": "0xce8d86ba17a2ec303155f0e264c58a4b8f94ce3436274cf1924f91acdb7502d0",
|
||||||
"safeBlockHash": "0x36a166f0dcd160fc5e5c61c9a7c2d7f236d9175bf27f43aaa2150e291f092ef7",
|
"safeBlockHash": "0xce8d86ba17a2ec303155f0e264c58a4b8f94ce3436274cf1924f91acdb7502d0",
|
||||||
"finalizedBlockHash": "0x36a166f0dcd160fc5e5c61c9a7c2d7f236d9175bf27f43aaa2150e291f092ef7"
|
"finalizedBlockHash": "0xce8d86ba17a2ec303155f0e264c58a4b8f94ce3436274cf1924f91acdb7502d0"
|
||||||
},
|
},
|
||||||
null
|
null
|
||||||
]
|
]
|
||||||
|
|
|
||||||
6492
cmd/devp2p/internal/ethtest/testdata/headstate.json
vendored
6492
cmd/devp2p/internal/ethtest/testdata/headstate.json
vendored
File diff suppressed because it is too large
Load diff
15735
cmd/devp2p/internal/ethtest/testdata/newpayload.json
vendored
15735
cmd/devp2p/internal/ethtest/testdata/newpayload.json
vendored
File diff suppressed because it is too large
Load diff
5390
cmd/devp2p/internal/ethtest/testdata/txinfo.json
vendored
5390
cmd/devp2p/internal/ethtest/testdata/txinfo.json
vendored
File diff suppressed because it is too large
Load diff
|
|
@ -27,6 +27,7 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
"github.com/ethereum/go-ethereum/internal/utesting"
|
"github.com/ethereum/go-ethereum/internal/utesting"
|
||||||
"github.com/ethereum/go-ethereum/p2p/discover/v4wire"
|
"github.com/ethereum/go-ethereum/p2p/discover/v4wire"
|
||||||
|
"github.com/ethereum/go-ethereum/p2p/enode"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -501,6 +502,36 @@ func FindnodeAmplificationWrongIP(t *utesting.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ENRRequest(t *utesting.T) {
|
||||||
|
t.Log(`This test sends an ENRRequest packet and expects a response containing a valid ENR.`)
|
||||||
|
|
||||||
|
te := newTestEnv(Remote, Listen1, Listen2)
|
||||||
|
defer te.close()
|
||||||
|
bond(t, te)
|
||||||
|
|
||||||
|
req := &v4wire.ENRRequest{Expiration: futureExpiration()}
|
||||||
|
hash := te.send(te.l1, req)
|
||||||
|
|
||||||
|
response, _, err := te.read(te.l1)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal("read error:", err)
|
||||||
|
}
|
||||||
|
enrResp, ok := response.(*v4wire.ENRResponse)
|
||||||
|
if !ok {
|
||||||
|
t.Fatalf("expected ENRResponse packet, got %T", response)
|
||||||
|
}
|
||||||
|
if !bytes.Equal(enrResp.ReplyTok, hash) {
|
||||||
|
t.Errorf("wrong hash in response packet: got %x, want %x", enrResp.ReplyTok, hash)
|
||||||
|
}
|
||||||
|
node, err := enode.New(enode.ValidSchemes, &enrResp.Record)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("invalid record in response: %v", err)
|
||||||
|
}
|
||||||
|
if node.ID() != te.remote.ID() {
|
||||||
|
t.Errorf("wrong node ID in response: got %v, want %v", node.ID(), te.remote.ID())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var AllTests = []utesting.Test{
|
var AllTests = []utesting.Test{
|
||||||
{Name: "Ping/Basic", Fn: BasicPing},
|
{Name: "Ping/Basic", Fn: BasicPing},
|
||||||
{Name: "Ping/WrongTo", Fn: PingWrongTo},
|
{Name: "Ping/WrongTo", Fn: PingWrongTo},
|
||||||
|
|
@ -510,6 +541,7 @@ var AllTests = []utesting.Test{
|
||||||
{Name: "Ping/PastExpiration", Fn: PingPastExpiration},
|
{Name: "Ping/PastExpiration", Fn: PingPastExpiration},
|
||||||
{Name: "Ping/WrongPacketType", Fn: WrongPacketType},
|
{Name: "Ping/WrongPacketType", Fn: WrongPacketType},
|
||||||
{Name: "Ping/BondThenPingWithWrongFrom", Fn: BondThenPingWithWrongFrom},
|
{Name: "Ping/BondThenPingWithWrongFrom", Fn: BondThenPingWithWrongFrom},
|
||||||
|
{Name: "ENRRequest", Fn: ENRRequest},
|
||||||
{Name: "Findnode/WithoutEndpointProof", Fn: FindnodeWithoutEndpointProof},
|
{Name: "Findnode/WithoutEndpointProof", Fn: FindnodeWithoutEndpointProof},
|
||||||
{Name: "Findnode/BasicFindnode", Fn: BasicFindnode},
|
{Name: "Findnode/BasicFindnode", Fn: BasicFindnode},
|
||||||
{Name: "Findnode/UnsolicitedNeighbors", Fn: UnsolicitedNeighbors},
|
{Name: "Findnode/UnsolicitedNeighbors", Fn: UnsolicitedNeighbors},
|
||||||
|
|
|
||||||
|
|
@ -274,10 +274,10 @@ func checkAccumulator(e *era.Era) error {
|
||||||
for it.Next() {
|
for it.Next() {
|
||||||
// 1) next() walks the block index, so we're able to implicitly verify it.
|
// 1) next() walks the block index, so we're able to implicitly verify it.
|
||||||
if it.Error() != nil {
|
if it.Error() != nil {
|
||||||
return fmt.Errorf("error reading block %d: %w", it.Number(), err)
|
return fmt.Errorf("error reading block %d: %w", it.Number(), it.Error())
|
||||||
}
|
}
|
||||||
block, receipts, err := it.BlockAndReceipts()
|
block, receipts, err := it.BlockAndReceipts()
|
||||||
if it.Error() != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error reading block %d: %w", it.Number(), err)
|
return fmt.Errorf("error reading block %d: %w", it.Number(), err)
|
||||||
}
|
}
|
||||||
// 2) recompute tx root and verify against header.
|
// 2) recompute tx root and verify against header.
|
||||||
|
|
@ -294,6 +294,9 @@ func checkAccumulator(e *era.Era) error {
|
||||||
td.Add(td, block.Difficulty())
|
td.Add(td, block.Difficulty())
|
||||||
tds = append(tds, new(big.Int).Set(td))
|
tds = append(tds, new(big.Int).Set(td))
|
||||||
}
|
}
|
||||||
|
if it.Error() != nil {
|
||||||
|
return fmt.Errorf("error reading block %d: %w", it.Number(), it.Error())
|
||||||
|
}
|
||||||
// 4+5) Verify accumulator and total difficulty.
|
// 4+5) Verify accumulator and total difficulty.
|
||||||
got, err := era.ComputeAccumulator(hashes, tds)
|
got, err := era.ComputeAccumulator(hashes, tds)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ func runBlockTest(ctx *cli.Context, fname string) ([]testResult, error) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
result := &testResult{Name: name, Pass: true}
|
result := &testResult{Name: name, Pass: true}
|
||||||
if err := tests[name].Run(false, rawdb.HashScheme, ctx.Bool(WitnessCrossCheckFlag.Name), tracer, func(res error, chain *core.BlockChain) {
|
if err := tests[name].Run(false, rawdb.PathScheme, ctx.Bool(WitnessCrossCheckFlag.Name), tracer, func(res error, chain *core.BlockChain) {
|
||||||
if ctx.Bool(DumpFlag.Name) {
|
if ctx.Bool(DumpFlag.Name) {
|
||||||
if s, _ := chain.State(); s != nil {
|
if s, _ := chain.State(); s != nil {
|
||||||
result.State = dump(s)
|
result.State = dump(s)
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/core/tracing"
|
"github.com/ethereum/go-ethereum/core/tracing"
|
||||||
"github.com/ethereum/go-ethereum/core/types"
|
"github.com/ethereum/go-ethereum/core/types"
|
||||||
"github.com/ethereum/go-ethereum/core/vm"
|
"github.com/ethereum/go-ethereum/core/vm"
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
|
||||||
"github.com/ethereum/go-ethereum/ethdb"
|
"github.com/ethereum/go-ethereum/ethdb"
|
||||||
"github.com/ethereum/go-ethereum/log"
|
"github.com/ethereum/go-ethereum/log"
|
||||||
"github.com/ethereum/go-ethereum/params"
|
"github.com/ethereum/go-ethereum/params"
|
||||||
|
|
@ -152,7 +151,6 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
|
||||||
gasUsed = uint64(0)
|
gasUsed = uint64(0)
|
||||||
blobGasUsed = uint64(0)
|
blobGasUsed = uint64(0)
|
||||||
receipts = make(types.Receipts, 0)
|
receipts = make(types.Receipts, 0)
|
||||||
txIndex = 0
|
|
||||||
)
|
)
|
||||||
gaspool.AddGas(pre.Env.GasLimit)
|
gaspool.AddGas(pre.Env.GasLimit)
|
||||||
vmContext := vm.BlockContext{
|
vmContext := vm.BlockContext{
|
||||||
|
|
@ -193,6 +191,7 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
|
||||||
Time: pre.Env.ParentTimestamp,
|
Time: pre.Env.ParentTimestamp,
|
||||||
ExcessBlobGas: pre.Env.ParentExcessBlobGas,
|
ExcessBlobGas: pre.Env.ParentExcessBlobGas,
|
||||||
BlobGasUsed: pre.Env.ParentBlobGasUsed,
|
BlobGasUsed: pre.Env.ParentBlobGasUsed,
|
||||||
|
BaseFee: pre.Env.ParentBaseFee,
|
||||||
}
|
}
|
||||||
header := &types.Header{
|
header := &types.Header{
|
||||||
Time: pre.Env.Timestamp,
|
Time: pre.Env.Timestamp,
|
||||||
|
|
@ -250,24 +249,17 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
statedb.SetTxContext(tx.Hash(), txIndex)
|
statedb.SetTxContext(tx.Hash(), len(receipts))
|
||||||
var (
|
var (
|
||||||
snapshot = statedb.Snapshot()
|
snapshot = statedb.Snapshot()
|
||||||
prevGas = gaspool.Gas()
|
prevGas = gaspool.Gas()
|
||||||
)
|
)
|
||||||
if evm.Config.Tracer != nil && evm.Config.Tracer.OnTxStart != nil {
|
receipt, err := core.ApplyTransactionWithEVM(msg, gaspool, statedb, vmContext.BlockNumber, blockHash, pre.Env.Timestamp, tx, &gasUsed, evm)
|
||||||
evm.Config.Tracer.OnTxStart(evm.GetVMContext(), tx, msg.From)
|
|
||||||
}
|
|
||||||
// (ret []byte, usedGas uint64, failed bool, err error)
|
|
||||||
msgResult, err := core.ApplyMessage(evm, msg, gaspool)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
statedb.RevertToSnapshot(snapshot)
|
statedb.RevertToSnapshot(snapshot)
|
||||||
log.Info("rejected tx", "index", i, "hash", tx.Hash(), "from", msg.From, "error", err)
|
log.Info("rejected tx", "index", i, "hash", tx.Hash(), "from", msg.From, "error", err)
|
||||||
rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()})
|
rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()})
|
||||||
gaspool.SetGas(prevGas)
|
gaspool.SetGas(prevGas)
|
||||||
if evm.Config.Tracer != nil && evm.Config.Tracer.OnTxEnd != nil {
|
|
||||||
evm.Config.Tracer.OnTxEnd(nil, err)
|
|
||||||
}
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
includedTxs = append(includedTxs, tx)
|
includedTxs = append(includedTxs, tx)
|
||||||
|
|
@ -275,50 +267,11 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
|
||||||
return nil, nil, nil, NewError(ErrorMissingBlockhash, hashError)
|
return nil, nil, nil, NewError(ErrorMissingBlockhash, hashError)
|
||||||
}
|
}
|
||||||
blobGasUsed += txBlobGas
|
blobGasUsed += txBlobGas
|
||||||
gasUsed += msgResult.UsedGas
|
receipts = append(receipts, receipt)
|
||||||
|
|
||||||
// Receipt:
|
|
||||||
{
|
|
||||||
var root []byte
|
|
||||||
if chainConfig.IsByzantium(vmContext.BlockNumber) {
|
|
||||||
statedb.Finalise(true)
|
|
||||||
} else {
|
|
||||||
root = statedb.IntermediateRoot(chainConfig.IsEIP158(vmContext.BlockNumber)).Bytes()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a new receipt for the transaction, storing the intermediate root and
|
|
||||||
// gas used by the tx.
|
|
||||||
receipt := &types.Receipt{Type: tx.Type(), PostState: root, CumulativeGasUsed: gasUsed}
|
|
||||||
if msgResult.Failed() {
|
|
||||||
receipt.Status = types.ReceiptStatusFailed
|
|
||||||
} else {
|
|
||||||
receipt.Status = types.ReceiptStatusSuccessful
|
|
||||||
}
|
|
||||||
receipt.TxHash = tx.Hash()
|
|
||||||
receipt.GasUsed = msgResult.UsedGas
|
|
||||||
|
|
||||||
// If the transaction created a contract, store the creation address in the receipt.
|
|
||||||
if msg.To == nil {
|
|
||||||
receipt.ContractAddress = crypto.CreateAddress(evm.TxContext.Origin, tx.Nonce())
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the receipt logs and create the bloom filter.
|
|
||||||
receipt.Logs = statedb.GetLogs(tx.Hash(), vmContext.BlockNumber.Uint64(), blockHash, vmContext.Time)
|
|
||||||
receipt.Bloom = types.CreateBloom(receipt)
|
|
||||||
|
|
||||||
// These three are non-consensus fields:
|
|
||||||
//receipt.BlockHash
|
|
||||||
//receipt.BlockNumber
|
|
||||||
receipt.TransactionIndex = uint(txIndex)
|
|
||||||
receipts = append(receipts, receipt)
|
|
||||||
if evm.Config.Tracer != nil && evm.Config.Tracer.OnTxEnd != nil {
|
|
||||||
evm.Config.Tracer.OnTxEnd(receipt, nil)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
txIndex++
|
|
||||||
}
|
}
|
||||||
|
|
||||||
statedb.IntermediateRoot(chainConfig.IsEIP158(vmContext.BlockNumber))
|
statedb.IntermediateRoot(chainConfig.IsEIP158(vmContext.BlockNumber))
|
||||||
|
|
||||||
// Add mining reward? (-1 means rewards are disabled)
|
// Add mining reward? (-1 means rewards are disabled)
|
||||||
if miningReward >= 0 {
|
if miningReward >= 0 {
|
||||||
// Add mining reward. The mining reward may be `0`, which only makes a difference in the cases
|
// Add mining reward. The mining reward may be `0`, which only makes a difference in the cases
|
||||||
|
|
@ -421,9 +374,12 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
|
||||||
func MakePreState(db ethdb.Database, accounts types.GenesisAlloc) *state.StateDB {
|
func MakePreState(db ethdb.Database, accounts types.GenesisAlloc) *state.StateDB {
|
||||||
tdb := triedb.NewDatabase(db, &triedb.Config{Preimages: true})
|
tdb := triedb.NewDatabase(db, &triedb.Config{Preimages: true})
|
||||||
sdb := state.NewDatabase(tdb, nil)
|
sdb := state.NewDatabase(tdb, nil)
|
||||||
statedb, _ := state.New(types.EmptyRootHash, sdb)
|
statedb, err := state.New(types.EmptyRootHash, sdb)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Errorf("failed to create initial state: %v", err))
|
||||||
|
}
|
||||||
for addr, a := range accounts {
|
for addr, a := range accounts {
|
||||||
statedb.SetCode(addr, a.Code)
|
statedb.SetCode(addr, a.Code, tracing.CodeChangeUnspecified)
|
||||||
statedb.SetNonce(addr, a.Nonce, tracing.NonceChangeGenesis)
|
statedb.SetNonce(addr, a.Nonce, tracing.NonceChangeGenesis)
|
||||||
statedb.SetBalance(addr, uint256.MustFromBig(a.Balance), tracing.BalanceIncreaseGenesisBalance)
|
statedb.SetBalance(addr, uint256.MustFromBig(a.Balance), tracing.BalanceIncreaseGenesisBalance)
|
||||||
for k, v := range a.Storage {
|
for k, v := range a.Storage {
|
||||||
|
|
@ -431,8 +387,14 @@ func MakePreState(db ethdb.Database, accounts types.GenesisAlloc) *state.StateDB
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Commit and re-open to start with a clean state.
|
// Commit and re-open to start with a clean state.
|
||||||
root, _ := statedb.Commit(0, false, false)
|
root, err := statedb.Commit(0, false, false)
|
||||||
statedb, _ = state.New(root, sdb)
|
if err != nil {
|
||||||
|
panic(fmt.Errorf("failed to commit initial state: %v", err))
|
||||||
|
}
|
||||||
|
statedb, err = state.New(root, sdb)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Errorf("failed to reopen state after commit: %v", err))
|
||||||
|
}
|
||||||
return statedb
|
return statedb
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -183,6 +183,9 @@ func Transaction(ctx *cli.Context) error {
|
||||||
if chainConfig.IsShanghai(new(big.Int), 0) && tx.To() == nil && len(tx.Data()) > params.MaxInitCodeSize {
|
if chainConfig.IsShanghai(new(big.Int), 0) && tx.To() == nil && len(tx.Data()) > params.MaxInitCodeSize {
|
||||||
r.Error = errors.New("max initcode size exceeded")
|
r.Error = errors.New("max initcode size exceeded")
|
||||||
}
|
}
|
||||||
|
if chainConfig.IsOsaka(new(big.Int), 0) && tx.Gas() > params.MaxTxGas {
|
||||||
|
r.Error = errors.New("gas limit exceeds maximum")
|
||||||
|
}
|
||||||
results = append(results, r)
|
results = append(results, r)
|
||||||
}
|
}
|
||||||
out, err := json.MarshalIndent(results, "", " ")
|
out, err := json.MarshalIndent(results, "", " ")
|
||||||
|
|
|
||||||
|
|
@ -322,7 +322,7 @@ func runCmd(ctx *cli.Context) error {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if len(code) > 0 {
|
if len(code) > 0 {
|
||||||
prestate.SetCode(receiver, code)
|
prestate.SetCode(receiver, code, tracing.CodeChangeUnspecified)
|
||||||
}
|
}
|
||||||
execFunc = func() ([]byte, uint64, error) {
|
execFunc = func() ([]byte, uint64, error) {
|
||||||
// don't mutate the state!
|
// don't mutate the state!
|
||||||
|
|
|
||||||
|
|
@ -296,6 +296,14 @@ func TestT8n(t *testing.T) {
|
||||||
output: t8nOutput{alloc: true, result: true},
|
output: t8nOutput{alloc: true, result: true},
|
||||||
expOut: "exp.json",
|
expOut: "exp.json",
|
||||||
},
|
},
|
||||||
|
{ // Osaka test, EIP-7918 blob gas with parent base fee
|
||||||
|
base: "./testdata/34",
|
||||||
|
input: t8nInput{
|
||||||
|
"alloc.json", "txs.json", "env.json", "Osaka", "",
|
||||||
|
},
|
||||||
|
output: t8nOutput{alloc: true, result: true},
|
||||||
|
expOut: "exp.json",
|
||||||
|
},
|
||||||
} {
|
} {
|
||||||
args := []string{"t8n"}
|
args := []string{"t8n"}
|
||||||
args = append(args, tc.output.get()...)
|
args = append(args, tc.output.get()...)
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/1/exp.json
vendored
3
cmd/evm/testdata/1/exp.json
vendored
|
|
@ -29,7 +29,8 @@
|
||||||
"contractAddress": "0x0000000000000000000000000000000000000000",
|
"contractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
"gasUsed": "0x5208",
|
"gasUsed": "0x5208",
|
||||||
"effectiveGasPrice": null,
|
"effectiveGasPrice": null,
|
||||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"blockHash": "0x1337000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"blockNumber": "0x1",
|
||||||
"transactionIndex": "0x0"
|
"transactionIndex": "0x0"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
||||||
6
cmd/evm/testdata/13/exp2.json
vendored
6
cmd/evm/testdata/13/exp2.json
vendored
|
|
@ -17,7 +17,8 @@
|
||||||
"contractAddress": "0x0000000000000000000000000000000000000000",
|
"contractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
"gasUsed": "0x84d0",
|
"gasUsed": "0x84d0",
|
||||||
"effectiveGasPrice": null,
|
"effectiveGasPrice": null,
|
||||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"blockHash": "0x1337000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"blockNumber": "0x1",
|
||||||
"transactionIndex": "0x0"
|
"transactionIndex": "0x0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -31,7 +32,8 @@
|
||||||
"contractAddress": "0x0000000000000000000000000000000000000000",
|
"contractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
"gasUsed": "0x84d0",
|
"gasUsed": "0x84d0",
|
||||||
"effectiveGasPrice": null,
|
"effectiveGasPrice": null,
|
||||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"blockHash": "0x1337000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"blockNumber": "0x1",
|
||||||
"transactionIndex": "0x1"
|
"transactionIndex": "0x1"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/23/exp.json
vendored
3
cmd/evm/testdata/23/exp.json
vendored
|
|
@ -16,7 +16,8 @@
|
||||||
"contractAddress": "0x0000000000000000000000000000000000000000",
|
"contractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
"gasUsed": "0x520b",
|
"gasUsed": "0x520b",
|
||||||
"effectiveGasPrice": null,
|
"effectiveGasPrice": null,
|
||||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"blockHash": "0x1337000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"blockNumber": "0x5",
|
||||||
"transactionIndex": "0x0"
|
"transactionIndex": "0x0"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
||||||
6
cmd/evm/testdata/24/exp.json
vendored
6
cmd/evm/testdata/24/exp.json
vendored
|
|
@ -32,7 +32,8 @@
|
||||||
"contractAddress": "0x0000000000000000000000000000000000000000",
|
"contractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
"gasUsed": "0xa861",
|
"gasUsed": "0xa861",
|
||||||
"effectiveGasPrice": null,
|
"effectiveGasPrice": null,
|
||||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"blockHash": "0x1337000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"blockNumber": "0x1",
|
||||||
"transactionIndex": "0x0"
|
"transactionIndex": "0x0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -45,7 +46,8 @@
|
||||||
"contractAddress": "0x0000000000000000000000000000000000000000",
|
"contractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
"gasUsed": "0x5aa5",
|
"gasUsed": "0x5aa5",
|
||||||
"effectiveGasPrice": null,
|
"effectiveGasPrice": null,
|
||||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"blockHash": "0x1337000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"blockNumber": "0x1",
|
||||||
"transactionIndex": "0x1"
|
"transactionIndex": "0x1"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/25/exp.json
vendored
3
cmd/evm/testdata/25/exp.json
vendored
|
|
@ -28,7 +28,8 @@
|
||||||
"contractAddress": "0x0000000000000000000000000000000000000000",
|
"contractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
"gasUsed": "0x5208",
|
"gasUsed": "0x5208",
|
||||||
"effectiveGasPrice": null,
|
"effectiveGasPrice": null,
|
||||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"blockHash": "0x1337000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"blockNumber": "0x1",
|
||||||
"transactionIndex": "0x0"
|
"transactionIndex": "0x0"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
||||||
5
cmd/evm/testdata/28/exp.json
vendored
5
cmd/evm/testdata/28/exp.json
vendored
|
|
@ -33,7 +33,10 @@
|
||||||
"contractAddress": "0x0000000000000000000000000000000000000000",
|
"contractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
"gasUsed": "0xa865",
|
"gasUsed": "0xa865",
|
||||||
"effectiveGasPrice": null,
|
"effectiveGasPrice": null,
|
||||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"blobGasUsed": "0x20000",
|
||||||
|
"blobGasPrice": "0x1",
|
||||||
|
"blockHash": "0x1337000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"blockNumber": "0x1",
|
||||||
"transactionIndex": "0x0"
|
"transactionIndex": "0x0"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/29/exp.json
vendored
3
cmd/evm/testdata/29/exp.json
vendored
|
|
@ -31,7 +31,8 @@
|
||||||
"contractAddress": "0x0000000000000000000000000000000000000000",
|
"contractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
"gasUsed": "0x5208",
|
"gasUsed": "0x5208",
|
||||||
"effectiveGasPrice": null,
|
"effectiveGasPrice": null,
|
||||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"blockHash": "0x1337000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"blockNumber": "0x1",
|
||||||
"transactionIndex": "0x0"
|
"transactionIndex": "0x0"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/3/exp.json
vendored
3
cmd/evm/testdata/3/exp.json
vendored
|
|
@ -29,7 +29,8 @@
|
||||||
"contractAddress": "0x0000000000000000000000000000000000000000",
|
"contractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
"gasUsed": "0x521f",
|
"gasUsed": "0x521f",
|
||||||
"effectiveGasPrice": null,
|
"effectiveGasPrice": null,
|
||||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"blockHash": "0x1337000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"blockNumber": "0x5",
|
||||||
"transactionIndex": "0x0"
|
"transactionIndex": "0x0"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
||||||
6
cmd/evm/testdata/30/exp.json
vendored
6
cmd/evm/testdata/30/exp.json
vendored
|
|
@ -30,7 +30,8 @@
|
||||||
"contractAddress": "0x0000000000000000000000000000000000000000",
|
"contractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
"gasUsed": "0x5208",
|
"gasUsed": "0x5208",
|
||||||
"effectiveGasPrice": null,
|
"effectiveGasPrice": null,
|
||||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"blockHash": "0x1337000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"blockNumber": "0x1",
|
||||||
"transactionIndex": "0x0"
|
"transactionIndex": "0x0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -44,7 +45,8 @@
|
||||||
"contractAddress": "0x0000000000000000000000000000000000000000",
|
"contractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
"gasUsed": "0x5208",
|
"gasUsed": "0x5208",
|
||||||
"effectiveGasPrice": null,
|
"effectiveGasPrice": null,
|
||||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"blockHash": "0x1337000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"blockNumber": "0x1",
|
||||||
"transactionIndex": "0x1"
|
"transactionIndex": "0x1"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/33/exp.json
vendored
3
cmd/evm/testdata/33/exp.json
vendored
|
|
@ -48,7 +48,8 @@
|
||||||
"contractAddress": "0x0000000000000000000000000000000000000000",
|
"contractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
"gasUsed": "0x15fa9",
|
"gasUsed": "0x15fa9",
|
||||||
"effectiveGasPrice": null,
|
"effectiveGasPrice": null,
|
||||||
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
"blockHash": "0x1337000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"blockNumber": "0x1",
|
||||||
"transactionIndex": "0x0"
|
"transactionIndex": "0x0"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
||||||
6
cmd/evm/testdata/34/README.md
vendored
Normal file
6
cmd/evm/testdata/34/README.md
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
This test verifies that Osaka fork blob gas calculation works correctly when
|
||||||
|
parentBaseFee is provided. It tests the EIP-7918 reserve price calculation
|
||||||
|
which requires parent.BaseFee to be properly set.
|
||||||
|
|
||||||
|
Regression test for: nil pointer dereference when parent.BaseFee was not
|
||||||
|
included in the parent header during Osaka fork blob gas calculations.
|
||||||
6
cmd/evm/testdata/34/alloc.json
vendored
Normal file
6
cmd/evm/testdata/34/alloc.json
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b": {
|
||||||
|
"balance": "0x1000000000000000000",
|
||||||
|
"nonce": "0x0"
|
||||||
|
}
|
||||||
|
}
|
||||||
18
cmd/evm/testdata/34/env.json
vendored
Normal file
18
cmd/evm/testdata/34/env.json
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"currentCoinbase": "0x0000000000000000000000000000000000000000",
|
||||||
|
"currentDifficulty": "0x0",
|
||||||
|
"currentRandom": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"currentGasLimit": "0x5f5e100",
|
||||||
|
"currentNumber": "0x1",
|
||||||
|
"currentTimestamp": "0x1000",
|
||||||
|
"parentTimestamp": "0x0",
|
||||||
|
"currentBaseFee": "0x10",
|
||||||
|
"parentBaseFee": "0x0a",
|
||||||
|
"parentGasUsed": "0x0",
|
||||||
|
"parentGasLimit": "0x5f5e100",
|
||||||
|
"currentExcessBlobGas": "0x0",
|
||||||
|
"parentExcessBlobGas": "0x0",
|
||||||
|
"parentBlobGasUsed": "0x20000",
|
||||||
|
"parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"withdrawals": []
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue