From 50781216f298825f87989b3173bf84d8b9e1b994 Mon Sep 17 00:00:00 2001 From: Michael Zhou Date: Mon, 7 Dec 2020 04:09:45 +0800 Subject: [PATCH] Add go bindings (#107) * Add go bindings Also update dependencies and fix tests. * Update genfiles and bindings by build bot Truffle v5.1.56 (core: 5.1.56) Solidity - 0.5.17 (solc-js) Node v14.15.1 Web3.js v1.2.9 Co-authored-by: Build Bot --- .circleci/config.yml | 95 +- .eslintrc | 95 +- .gitignore | 1 + bindings/go/mainchain/dpos.go | 6473 ++++++++++++++++++++++++++++++ bindings/go/mainchain/sgn.go | 1864 +++++++++ gen_and_push.sh | 26 +- go.mod | 5 + go.sum | 258 ++ package-lock.json | 1593 ++++---- package.json | 34 +- test/basic_test.js | 28 +- test/gov_test.js | 9 +- test/helper/protoChainFactory.js | 198 +- test/helper/protoChainLoader.js | 28 +- test/helper/sign.js | 78 +- test/helper/timetravel.js | 88 +- test/helper/utilities.js | 22 +- test/multi_validator_test.js | 19 +- test/reward_test.js | 5 +- test/slash_test.js | 13 +- test/subscribe_test.js | 8 - tools/gen_go_binding.sh | 19 +- truffle-config.js | 3 +- 23 files changed, 9769 insertions(+), 1193 deletions(-) create mode 100644 bindings/go/mainchain/dpos.go create mode 100644 bindings/go/mainchain/sgn.go create mode 100644 go.mod create mode 100644 go.sum diff --git a/.circleci/config.yml b/.circleci/config.yml index 995c22d..5f42b99 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,54 +2,51 @@ version: 2 # try to checkout pr merge if it exists, no op if not a pr build checkout_pr_merge: &checkout_pr_merge - run: - name: try to checkout pr merge - command: git fetch origin "+refs/pull/${CIRCLE_PULL_REQUEST##*/}/merge" && git checkout -qf FETCH_HEAD || echo "not pr build" + run: + name: try to checkout pr merge + command: git fetch origin "+refs/pull/${CIRCLE_PULL_REQUEST##*/}/merge" && git checkout -qf FETCH_HEAD || echo "not pr build" jobs: - build: - branches: - ignore: - - gh-pages - docker: - - image: circleci/node:10.15.3 - steps: - - checkout - - <<: *checkout_pr_merge - - restore_cache: - key: npm-cache-{{ checksum "package-lock.json" }} - - run: - name: install node_modules if not exists - command: | - if [ ! -d "node_modules" ]; then - npm install --no-save - fi - - run: - name: fetch abigen binary if not exists - environment: - GETH_TOOL_VER: geth-alltools-linux-amd64-1.9.19-3e064192 - GETH_VER_LOG: node_modules/geth_tool_ver.log - command: | - if [ ! -f "$GETH_VER_LOG" ] || [ $GETH_TOOL_VER != $(cat $GETH_VER_LOG) ]; then - echo "Fetching $GETH_TOOL_VER ..." - echo $GETH_TOOL_VER > $GETH_VER_LOG - curl -sL https://gethstore.blob.core.windows.net/builds/$GETH_TOOL_VER.tar.gz | tar -xz -C node_modules/.bin --strip 1 $GETH_TOOL_VER/abigen - fi - - run: - name: run truffle test - command: | - npm run ganache 2> /dev/null 1> /dev/null & - GANACHE_PID=$! - npm run test - kill -9 $GANACHE_PID - # git checkout -- gas_used_logs/ # discard changes generated during ci tests in gas_used_logs/ - - run: - name: update genfiles and sync go bindings if PR - command: | - if [ -n "${CIRCLE_PULL_REQUEST##*/}" ]; then - bash ./gen_and_push.sh "${CIRCLE_PULL_REQUEST##*/}" "$CIRCLE_BRANCH" - fi - - save_cache: - key: npm-cache-{{ checksum "package-lock.json" }} - paths: - - 'node_modules' + build: + docker: + - image: circleci/node:14.15.1 + steps: + - checkout + - <<: *checkout_pr_merge + - restore_cache: + key: npm-cache-{{ checksum "package-lock.json" }} + - run: + name: install node_modules if not exists + command: | + if [ ! -d "node_modules" ]; then + npm install --no-save + fi + - run: + name: fetch abigen binary if not exists + environment: + GETH_TOOL_VER: geth-alltools-linux-amd64-1.9.24-cc05b050 + GETH_VER_LOG: node_modules/geth_tool_ver.log + command: | + if [ ! -f "$GETH_VER_LOG" ] || [ $GETH_TOOL_VER != $(cat $GETH_VER_LOG) ]; then + echo "Fetching $GETH_TOOL_VER ..." + echo $GETH_TOOL_VER > $GETH_VER_LOG + curl -sL https://gethstore.blob.core.windows.net/builds/$GETH_TOOL_VER.tar.gz | tar -xz -C node_modules/.bin --strip 1 $GETH_TOOL_VER/abigen + fi + - run: + name: run truffle test + command: | + npm run ganache 2> /dev/null 1> /dev/null & + GANACHE_PID=$! + npm run test + kill -9 $GANACHE_PID + # git checkout -- gas_used_logs/ # discard changes generated during ci tests in gas_used_logs/ + - run: + name: update genfiles and sync go bindings if PR + command: | + if [ -n "${CIRCLE_PULL_REQUEST##*/}" ]; then + bash ./gen_and_push.sh "${CIRCLE_PULL_REQUEST##*/}" "$CIRCLE_BRANCH" + fi + - save_cache: + key: npm-cache-{{ checksum "package-lock.json" }} + paths: + - 'node_modules' diff --git a/.eslintrc b/.eslintrc index ae159df..130e0da 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,55 +1,46 @@ { - "parser": "babel-eslint", - "extends": [ - "standard", - "plugin:promise/recommended", - "plugin:prettier/recommended" - ], - "plugins": ["promise"], - "env": { - "browser": true, - "node": true, - "mocha": true, - "jest": true - }, - "globals": { - "artifacts": false, - "contract": false, - "assert": false, - "web3": false - }, - "rules": { - // Strict mode - "strict": ["error", "global"], + "parser": "babel-eslint", + "extends": ["standard", "plugin:promise/recommended", "prettier"], + "plugins": ["promise"], + "env": { + "browser": true, + "node": true, + "mocha": true, + "jest": true + }, + "globals": { + "artifacts": false, + "contract": false, + "assert": false, + "web3": false + }, + "rules": { + // Strict mode + "strict": ["error", "global"], - // Code style - "camelcase": ["error", { "properties": "never" }], - // "comma-dangle": ["error", "always-multiline"], - "comma-spacing": ["error", { "before": false, "after": true }], - "dot-notation": [ - "error", - { "allowKeywords": true, "allowPattern": "" } - ], - "eol-last": ["error", "always"], - "eqeqeq": ["error", "smart"], - "generator-star-spacing": ["error", "before"], - "linebreak-style": ["error", "unix"], - "max-len": ["error", 120, 2], - "no-debugger": "off", - "no-dupe-args": "error", - "no-dupe-keys": "error", - "no-mixed-spaces-and-tabs": ["error", "smart-tabs"], - "no-redeclare": ["error", { "builtinGlobals": true }], - "no-trailing-spaces": ["error", { "skipBlankLines": false }], - "no-undef": "error", - "no-use-before-define": "off", - "no-var": "error", - "object-curly-spacing": ["error", "always"], - "prefer-const": "error", - "quotes": ["error", "single"], - // "semi": ["error", "always"], - - "promise/always-return": "off", - "promise/avoid-new": "off" - } + // Code style + "camelcase": ["error", {"properties": "never"}], + "comma-dangle": ["error", "only-multiline"], + "comma-spacing": ["error", {"before": false, "after": true}], + "dot-notation": ["error", {"allowKeywords": true, "allowPattern": ""}], + "eol-last": ["error", "always"], + "eqeqeq": ["error", "smart"], + "generator-star-spacing": ["error", "before"], + "linebreak-style": ["error", "unix"], + "no-debugger": "off", + "no-dupe-args": "error", + "no-dupe-keys": "error", + "no-mixed-spaces-and-tabs": ["error", "smart-tabs"], + "no-redeclare": ["error", {"builtinGlobals": true}], + "no-trailing-spaces": ["error", {"skipBlankLines": false}], + "no-undef": "error", + "no-use-before-define": "off", + "no-var": "error", + "object-curly-spacing": ["error", "never"], + "prefer-const": "error", + "quotes": ["error", "single", {"allowTemplateLiterals": true}], + "semi": ["error", "always"], + "promise/always-return": "off", + "promise/avoid-new": "off" + } } diff --git a/.gitignore b/.gitignore index 42e8acd..a72b24c 100644 --- a/.gitignore +++ b/.gitignore @@ -101,3 +101,4 @@ ENV/ # my gitignore node_modules/ +.vscode/ diff --git a/bindings/go/mainchain/dpos.go b/bindings/go/mainchain/dpos.go new file mode 100644 index 0000000..d12f177 --- /dev/null +++ b/bindings/go/mainchain/dpos.go @@ -0,0 +1,6473 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package mainchain + +import ( + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// DPoSABI is the input ABI used to generate the binding from. +const DPoSABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_celerTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_governProposalDeposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_governVoteTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_slashTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minValidatorNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxValidatorNum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minStakeInPool\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_advanceNoticePeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_dposGoLiveTimeout\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"candidate\",\"type\":\"address\"}],\"name\":\"CandidateUnbonded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"candidate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"announcedRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"announcedLockEndTime\",\"type\":\"uint256\"}],\"name\":\"CommissionRateAnnouncement\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"indemnitee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Compensate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"passed\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"record\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"ConfirmParamProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"passed\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sidechainAddr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"registered\",\"type\":\"bool\"}],\"name\":\"ConfirmSidechainProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"candidate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ConfirmWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"voteDeadline\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"record\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"CreateParamProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"voteDeadline\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sidechainAddr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"registered\",\"type\":\"bool\"}],\"name\":\"CreateSidechainProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"candidate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newStake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakingPool\",\"type\":\"uint256\"}],\"name\":\"Delegate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"candidate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minSelfStake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"commissionRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rateLockEndTime\",\"type\":\"uint256\"}],\"name\":\"InitializeCandidate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"candidate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposedTime\",\"type\":\"uint256\"}],\"name\":\"IntendWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contributor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"contribution\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"miningPoolSize\",\"type\":\"uint256\"}],\"name\":\"MiningPoolContribution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"miningPool\",\"type\":\"uint256\"}],\"name\":\"RedeemMiningReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Slash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"candidate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newLockEndTime\",\"type\":\"uint256\"}],\"name\":\"UpdateCommissionRate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"candidate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegatorStake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"candidatePool\",\"type\":\"uint256\"}],\"name\":\"UpdateDelegatedStake\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"candidate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minSelfStake\",\"type\":\"uint256\"}],\"name\":\"UpdateMinSelfStake\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ethAddr\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enumIDPoS.ValidatorChangeType\",\"name\":\"changeType\",\"type\":\"uint8\"}],\"name\":\"ValidatorChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enumIGovern.VoteType\",\"name\":\"voteType\",\"type\":\"uint8\"}],\"name\":\"VoteParam\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enumIGovern.VoteType\",\"name\":\"voteType\",\"type\":\"uint8\"}],\"name\":\"VoteSidechain\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"WhitelistAdminAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"WhitelistAdminRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"WhitelistedAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"WhitelistedRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"candidate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawFromUnbondedCandidate\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"COMMISSION_RATE_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"UIntStorage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addWhitelistAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addWhitelisted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"celerToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"checkedValidators\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_record\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"createParamProposal\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sidechainAddr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_registered\",\"type\":\"bool\"}],\"name\":\"createSidechainProposal\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dposGoLiveTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"enableSlash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"enableWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_voter\",\"type\":\"address\"}],\"name\":\"getParamProposalVote\",\"outputs\":[{\"internalType\":\"enumIGovern.VoteType\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_voter\",\"type\":\"address\"}],\"name\":\"getSidechainProposalVote\",\"outputs\":[{\"internalType\":\"enumIGovern.VoteType\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_record\",\"type\":\"uint256\"}],\"name\":\"getUIntValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sidechainAddr\",\"type\":\"address\"}],\"name\":\"isSidechainRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWhitelistAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"miningPool\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nextParamProposalId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nextSidechainProposalId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"paramProposals\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"voteDeadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"record\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"},{\"internalType\":\"enumIGovern.ProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"redeemedMiningReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"registerSidechain\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredSidechains\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"removeWhitelisted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceWhitelistAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceWhitelisted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sidechainProposals\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"voteDeadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sidechainAddr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"registered\",\"type\":\"bool\"},{\"internalType\":\"enumIGovern.ProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"usedPenaltyNonce\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"validatorSet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_enable\",\"type\":\"bool\"}],\"name\":\"updateEnableWhitelist\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_enable\",\"type\":\"bool\"}],\"name\":\"updateEnableSlash\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"drainToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"enumIGovern.VoteType\",\"name\":\"_vote\",\"type\":\"uint8\"}],\"name\":\"voteParam\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"confirmParamProposal\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"enumIGovern.VoteType\",\"name\":\"_vote\",\"type\":\"uint8\"}],\"name\":\"voteSidechain\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"confirmSidechainProposal\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"contributeToMiningPool\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_cumulativeReward\",\"type\":\"uint256\"}],\"name\":\"redeemMiningReward\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minSelfStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_commissionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_rateLockEndTime\",\"type\":\"uint256\"}],\"name\":\"initializeCandidate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newLockEndTime\",\"type\":\"uint256\"}],\"name\":\"nonIncreaseCommissionRate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newLockEndTime\",\"type\":\"uint256\"}],\"name\":\"announceIncreaseCommissionRate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"confirmIncreaseCommissionRate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minSelfStake\",\"type\":\"uint256\"}],\"name\":\"updateMinSelfStake\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_candidateAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"delegate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"claimValidator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_candidateAddr\",\"type\":\"address\"}],\"name\":\"confirmUnbondedCandidate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_candidateAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFromUnbondedCandidate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_candidateAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"intendWithdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_candidateAddr\",\"type\":\"address\"}],\"name\":\"confirmWithdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_penaltyRequest\",\"type\":\"bytes\"}],\"name\":\"slash\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_request\",\"type\":\"bytes\"}],\"name\":\"validateMultiSigMessage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinStakingPool\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_candidateAddr\",\"type\":\"address\"}],\"name\":\"getCandidateInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"minSelfStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stakingPool\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"status\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unbondTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"commissionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rateLockEndTime\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_candidateAddr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegatorAddr\",\"type\":\"address\"}],\"name\":\"getDelegatorInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"delegatedStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"undelegatingStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"intentAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"intentProposedTimes\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isValidDPoS\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isMigrating\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getValidatorNum\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinQuorumStakingPool\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getTotalValidatorStakingPool\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]" + +// DPoSBin is the compiled bytecode used for deploying new contracts. +var DPoSBin = "0x60806040523480156200001157600080fd5b50604051620059113803806200591183398181016040526101208110156200003857600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e088015161010090980151969795969495939492939192909190888888888888888862000090336001600160e01b036200025e16565b600180546001600160a01b0319163317908190556040516001600160a01b0391909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001805460ff60a01b19169055620000fd336001600160e01b03620002b016565b600480546001600160a01b0319166001600160a01b039990991698909817909755600560209081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc969096557f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b949094557f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a929092557fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc0557f3eec716f11ba9e820c81ca75eb978ffb45831ef8b7a53e5e422c26008e1ca6d5557f458b30c2d72bfd2c6317304a4594ecbafe5f729d3111b65fdc3a33bd48e5432d5560066000527f069400f22b28c6c362558d92f66163cec5671cba50b61abd2eecfcd0eaeac518919091556200023c904390839062000302811b620039aa17901c565b60105550506012805461ff00191661010017905550620003ab95505050505050565b620002798160006200031c60201b62004e291790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b620002cb8160026200031c60201b62004e291790919060201c565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b6000828201838110156200031557600080fd5b9392505050565b6001600160a01b0381166200033057600080fd5b6200034582826001600160e01b036200037516565b156200035057600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b0382166200038b57600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61555680620003bb6000396000f3fe608060405234801561001057600080fd5b506004361061041d5760003560e01c8063785f8ffd1161022b578063be57959d11610130578063e64808f3116100b8578063f05e777d11610087578063f05e777d14610d5b578063f2fde38b14610d63578063f64f33f214610d89578063facd743b14610dac578063fb87874914610dd25761041d565b8063e64808f314610c06578063e97b745214610c23578063eab2ed8c14610c7e578063eecefef814610c865761041d565b8063c7ec2f35116100ff578063c7ec2f3514610b7c578063cdfb2b4e14610ba2578063d2bfc1c714610baa578063d6cd947314610bd0578063e433c1ca14610bd85761041d565b8063be57959d14610b20578063bee8380e14610b43578063c1e1671814610b4b578063c6c21e9d14610b745761041d565b806389ed7939116101b3578063934a18ec11610182578063934a18ec14610a83578063a3e814b914610aa0578063aa09fbae14610aa8578063bb5f747b14610ace578063bb9053d014610af45761041d565b806389ed793914610a475780638da5cb5b14610a4f5780638e9472a314610a735780638f32d59b14610a7b5761041d565b80638456cb59116101fa5780638456cb59146109aa5780638515b0e2146109b257806385bfe017146109de578063866c4b1714610a0457806387e53fef14610a215761041d565b8063785f8ffd146108da5780637a3ba4ad146109065780637e5fb8f31461090e57806382dc1ec4146109845761041d565b806339c9563e116103315780635e47655f116102b95780636e997565116102885780636e997565146108945780636ef8d66d1461089c578063715018a6146108a457806373397597146108ac5780637362d9c8146108b45761041d565b80635e47655f146107e257806364c663951461085257806364ed600a1461086f5780636e7cf85d1461088c5761041d565b806349444b711161030057806349444b711461073f5780634b7dba6b146107655780634c5a628c14610782578063581c53c51461078a5780635c975abb146107da5761041d565b806339c9563e146106e35780633af32abf146106eb5780633f4ba83a1461071157806346fbf68e146107195761041d565b806325ed6b35116103b45780632cb57c48116103835780632cb57c48146106365780633090c0e914610655578063325820b3146106785780633361e90a1461069e5780633702db39146106bd5761041d565b806325ed6b351461058257806328bde1e1146105a8578063291d9549146106085780632bf0fe591461062e5761041d565b80631c0efd9d116103f05780631c0efd9d146104b05780631cfe4f0b146105345780631f7b08861461054e57806322da79271461057a5761041d565b8063026e402b1461042257806310154bad14610450578063145aa116146104765780631a06f73714610493575b600080fd5b61044e6004803603604081101561043857600080fd5b506001600160a01b038135169060200135610def565b005b61044e6004803603602081101561046657600080fd5b50356001600160a01b0316610f80565b61044e6004803603602081101561048c57600080fd5b5035610f9e565b61044e600480360360208110156104a957600080fd5b5035610fe2565b610520600480360360208110156104c657600080fd5b8101906020810181356401000000008111156104e157600080fd5b8201836020820111156104f357600080fd5b8035906020019184600183028401116401000000008311171561051557600080fd5b5090925090506110c4565b604080519115158252519081900360200190f35b61053c6111e2565b60408051918252519081900360200190f35b61044e6004803603604081101561056457600080fd5b506001600160a01b038135169060200135611231565b61053c6113a5565b61044e6004803603604081101561059857600080fd5b508035906020013560ff166113ab565b6105ce600480360360208110156105be57600080fd5b50356001600160a01b0316611414565b6040805197151588526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b61044e6004803603602081101561061e57600080fd5b50356001600160a01b0316611529565b61053c611544565b61044e6004803603602081101561064c57600080fd5b5035151561154a565b61044e6004803603604081101561066b57600080fd5b508035906020013561156e565b6105206004803603602081101561068e57600080fd5b50356001600160a01b031661169e565b61044e600480360360208110156106b457600080fd5b503515156116c0565b610520600480360360208110156106d357600080fd5b50356001600160a01b03166116eb565b61053c611700565b6105206004803603602081101561070157600080fd5b50356001600160a01b0316611706565b61044e611719565b6105206004803603602081101561072f57600080fd5b50356001600160a01b0316611783565b6105206004803603602081101561075557600080fd5b50356001600160a01b0316611795565b61044e6004803603602081101561077b57600080fd5b50356117aa565b61044e611843565b6107b6600480360360408110156107a057600080fd5b50803590602001356001600160a01b031661184e565b604051808260038111156107c657fe5b60ff16815260200191505060405180910390f35b61052061187c565b61044e600480360360208110156107f857600080fd5b81019060208101813564010000000081111561081357600080fd5b82018360208201111561082557600080fd5b8035906020019184600183028401116401000000008311171561084757600080fd5b50909250905061188c565b61053c6004803603602081101561086857600080fd5b5035611eee565b61053c6004803603602081101561088557600080fd5b5035611f00565b61044e611f12565b61044e612335565b61044e61242b565b61044e612434565b61053c61248f565b61044e600480360360208110156108ca57600080fd5b50356001600160a01b0316612495565b61044e600480360360408110156108f057600080fd5b506001600160a01b0381351690602001356124b0565b61052061261c565b61092b6004803603602081101561092457600080fd5b503561262a565b60405180876001600160a01b03166001600160a01b0316815260200186815260200185815260200184815260200183815260200182600281111561096b57fe5b60ff168152602001965050505050505060405180910390f35b61044e6004803603602081101561099a57600080fd5b50356001600160a01b031661266c565b61044e612687565b6107b6600480360360408110156109c857600080fd5b50803590602001356001600160a01b03166126f8565b61044e600480360360408110156109f457600080fd5b508035906020013560ff16612727565b61044e60048036036020811015610a1a57600080fd5b503561278c565b61053c60048036036020811015610a3757600080fd5b50356001600160a01b03166128b8565b61053c6128ca565b610a57612928565b604080516001600160a01b039092168252519081900360200190f35b61053c612937565b610520612a17565b61044e60048036036020811015610a9957600080fd5b5035612a28565b61053c612b03565b61044e60048036036020811015610abe57600080fd5b50356001600160a01b0316612b45565b61052060048036036020811015610ae457600080fd5b50356001600160a01b0316612b7a565b61044e60048036036040811015610b0a57600080fd5b506001600160a01b038135169060200135612b8d565b61044e60048036036040811015610b3657600080fd5b5080359060200135612d1b565b61053c612dd8565b61044e60048036036060811015610b6157600080fd5b5080359060208101359060400135612dde565b610a57612f6a565b61044e60048036036020811015610b9257600080fd5b50356001600160a01b0316612f79565b61052061309b565b61044e60048036036020811015610bc057600080fd5b50356001600160a01b03166130a4565b61044e6132a9565b61044e60048036036040811015610bee57600080fd5b506001600160a01b03813516906020013515156132b2565b610a5760048036036020811015610c1c57600080fd5b50356133e7565b610c4060048036036020811015610c3957600080fd5b5035613402565b604080516001600160a01b038089168252602082018890529181018690529084166060820152821515608082015260a0810182600281111561096b57fe5b61052061344a565b610cb460048036036040811015610c9c57600080fd5b506001600160a01b0381358116916020013516613472565b604051808581526020018481526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610d04578181015183820152602001610cec565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610d43578181015183820152602001610d2b565b50505050905001965050505050505060405180910390f35b6105206135b1565b61044e60048036036020811015610d7957600080fd5b50356001600160a01b03166135d5565b61044e60048036036040811015610d9f57600080fd5b50803590602001356135ef565b61052060048036036020811015610dc257600080fd5b50356001600160a01b03166136ee565b61052060048036036020811015610de857600080fd5b5035613723565b600154600160a01b900460ff1615610e0657600080fd5b816001600160a01b038116610e4e576040805162461bcd60e51b815260206004820152600960248201526830206164647265737360b81b604482015290519081900360640190fd5b81670de0b6b3a764000080821015610e975760405162461bcd60e51b815260040180806020018281038252602a815260200180615456602a913960400191505060405180910390fd5b6001600160a01b0385166000908152600e60205260409020805460ff16610ef3576040805162461bcd60e51b815260206004820152601c6024820152600080516020615502833981519152604482015290519081900360640190fd5b33610f02828883896000613738565b600454610f20906001600160a01b031682308963ffffffff61383d16565b866001600160a01b0316816001600160a01b03167f500599802164a08023e87ffc3eed0ba3ae60697b3083ba81d046683679d81c6b888560020154604051808381526020018281526020019250505060405180910390a350505050505050565b610f8933612b7a565b610f9257600080fd5b610f9b816138cd565b50565b600154600160a01b900460ff16610fb457600080fd5b610fbc612a17565b610fc557600080fd5b600454610f9b906001600160a01b0316338363ffffffff61391516565b6000610fef60045b611eee565b90506000805b828110156110775760016000828152600b60205260409020546110229086906001600160a01b03166126f8565b600381111561102d57fe5b141561106f576000818152600b60209081526040808320546001600160a01b03168352600e90915290206002015461106c90839063ffffffff6139aa16565b91505b600101610ff5565b506000611082612b03565b8210159050806110b4576000848152600960205260409020600101546011546110b09163ffffffff6139aa16565b6011555b6110be84826139c3565b50505050565b60006110cf3361169e565b61111b576040805162461bcd60e51b815260206004820152601860248201527714da591958da185a5b881b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b611123615383565b61116284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b6d92505050565b9050600081600001516040518082805190602001908083835b6020831061119a5780518252601f19909201916020918201910161117b565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506111d7818360200151613cc4565b925050505b92915050565b6000806111ef6004610fea565b90506000805b82811015611229576000818152600b60205260409020546001600160a01b031615611221576001909101905b6001016111f5565b509150505b90565b600154600160a01b900460ff161561124857600080fd5b6112513361169e565b61129d576040805162461bcd60e51b815260206004820152601860248201527714da591958da185a5b881b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b6001600160a01b0382166000908152600f60205260408120546112c790839063ffffffff613f2216565b905080601154101561130a5760405162461bcd60e51b81526004018080602001828103825260268152602001806154806026913960400191505060405180910390fd5b6001600160a01b0383166000908152600f60205260409020829055601154611338908263ffffffff613f2216565b601155600454611358906001600160a01b0316848363ffffffff61391516565b60115460408051838152602081019290925280516001600160a01b038616927fc243dafa8ee55923dad771198c225cf6dfcdc5e405eda7d4da42b6c6fa018de792908290030190a2505050565b60075481565b6113b4336136ee565b611405576040805162461bcd60e51b815260206004820152601d60248201527f6d73672073656e646572206973206e6f7420612076616c696461746f72000000604482015290519081900360640190fd5b611410823383613f37565b5050565b600080600080600080600061142761539d565b6001600160a01b0389166000908152600e6020908152604091829020825161016081018452815460ff9081161515825260018301549382019390935260028083015494820194909452600482015490939192606085019291169081111561148a57fe5b600281111561149557fe5b81526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152505090508060000151975080602001519650806040015195508060600151600281111561150657fe5b9450806080015193508060a0015192508060c00151915050919395979092949650565b61153233612b7a565b61153b57600080fd5b610f9b81614106565b600a5481565b611552612a17565b61155b57600080fd5b6012805460ff1916911515919091179055565b600780546000818152600660209081526040822060019384019094558180526005908190527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5484546001600160a01b0319163390811786558486018290559390926115f492915b815260200190815260200160002054436139aa90919063ffffffff16565b600284015560038301859055600480840185905560058401805460ff191660011790555461162d906001600160a01b031683308461383d565b60075460028401546040805160001990930183526001600160a01b038516602084015282810184905260608301919091526080820187905260a08201869052517f40109a070319d6004f4e4b31dba4b605c97bd3474d49865158f55fe093e3b3399181900360c00190a15050505050565b6001600160a01b03811660009081526008602052604090205460ff165b919050565b6116c8612a17565b6116d157600080fd5b601280549115156101000261ff0019909216919091179055565b600d6020526000908152604090205460ff1681565b60105481565b60006111dc60038363ffffffff61414e16565b61172233611783565b61172b57600080fd5b600154600160a01b900460ff1661174157600080fd5b6001805460ff60a01b191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b60006111dc818363ffffffff61414e16565b60086020526000908152604090205460ff1681565b600154600160a01b900460ff16156117c157600080fd5b60115433906117d6908363ffffffff6139aa16565b6011556004546117f7906001600160a01b031682308563ffffffff61383d16565b60115460408051848152602081019290925280516001600160a01b038416927f97e19c4040b6c46d4275e0c4fea68f8f92c81138372ffdb089932c211938f76592908290030190a25050565b61184c33614183565b565b60008281526006602081815260408084206001600160a01b0386168552909201905290205460ff1692915050565b600154600160a01b900460ff1690565b600154600160a01b900460ff16156118a357600080fd5b6118ab61344a565b6118f0576040805162461bcd60e51b815260206004820152601160248201527011141bd4c81a5cc81b9bdd081d985b1a59607a1b604482015290519081900360640190fd5b6118f86135b1565b1561193f576040805162461bcd60e51b8152602060048201526012602482015271636f6e7472616374206d6967726174696e6760701b604482015290519081900360640190fd5b601254610100900460ff1661198f576040805162461bcd60e51b815260206004820152601160248201527014db185cda081a5cc8191a5cd8589b1959607a1b604482015290519081900360640190fd5b611997615383565b6119d683838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506141cb92505050565b90506119e06153f7565b81516119eb90614319565b6040808201516001600160a01b03166000908152600e602052908120919250600482015460ff166002811115611a1d57fe5b1415611a66576040805162461bcd60e51b815260206004820152601360248201527215985b1a59185d1bdc881d5b989bdd5b991959606a1b604482015290519081900360640190fd5b600083600001516040518082805190602001908083835b60208310611a9c5780518252601f199092019160209182019101611a7d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050611ad9818560200151613cc4565b611b145760405162461bcd60e51b81526004018080602001828103825260228152602001806154a66022913960400191505060405180910390fd5b826020015167ffffffffffffffff164310611b68576040805162461bcd60e51b815260206004820152600f60248201526e14195b985b1d1e48195e1c1a5c9959608a1b604482015290519081900360640190fd5b825167ffffffffffffffff166000908152600c602052604090205460ff1615611bcd576040805162461bcd60e51b8152602060048201526012602482015271557365642070656e616c7479206e6f6e636560701b604482015290519081900360640190fd5b825167ffffffffffffffff166000908152600c60205260408120805460ff19166001179055805b846060015151811015611d2657611c09615424565b85606001518281518110611c1957fe5b60200260200101519050611c3a8160200151846139aa90919063ffffffff16565b925080600001516001600160a01b031686604001516001600160a01b03167f9995717781b7b3ba3dd9e553a2b5a2b7593ad9b71f5022a3691a089d5189bd1983602001516040518082815260200191505060405180910390a380516001600160a01b031660009081526003860160209081526040822090830151815491929110611cc957506020820151611d05565b81546020840151600091611ce3919063ffffffff613f2216565b6001840154909150611cfb908263ffffffff613f2216565b6001840155505080545b611d1b8789604001518560000151846001613738565b505050600101611bf4565b50611d348460400151614595565b6000805b856080015151811015611e9c57611d4d615424565b86608001518281518110611d5d57fe5b60200260200101519050611d7e8160200151846139aa90919063ffffffff16565b81519093506001600160a01b0316611daf576020810151601154611da79163ffffffff6139aa16565b601155611e93565b80516001600160a01b031660011415611e24576020810151600454611de7916001600160a01b0390911690339063ffffffff61391516565b602080820151604080519182525133927f92c2a7173158b7618078365b4ad89fd1f774ae4aa04f39e10b966b47f469d34b928290030190a2611e93565b80516020820151600454611e49926001600160a01b039091169163ffffffff61391516565b80600001516001600160a01b03167f92c2a7173158b7618078365b4ad89fd1f774ae4aa04f39e10b966b47f469d34b82602001516040518082815260200191505060405180910390a25b50600101611d38565b50808214611ee4576040805162461bcd60e51b815260206004820152601060248201526f082dadeeadce840dcdee840dac2e8c6d60831b604482015290519081900360640190fd5b5050505050505050565b60009081526005602052604090205490565b60056020526000908152604090205481565b336000908152600e602052604090205460ff16611f64576040805162461bcd60e51b815260206004820152601c6024820152600080516020615502833981519152604482015290519081900360640190fd5b336000818152600e6020526040812090600482015460ff166002811115611f8757fe5b1480611fa557506002600482015460ff166002811115611fa357fe5b145b611ff6576040805162461bcd60e51b815260206004820152601860248201527f496e76616c69642063616e646964617465207374617475730000000000000000604482015290519081900360640190fd5b80600b015443101561204f576040805162461bcd60e51b815260206004820152601a60248201527f4e6f74206561726c6965737420626f6e642074696d6520796574000000000000604482015290519081900360640190fd5b6120596005610fea565b816002015410156120b1576040805162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e74207374616b696e6720706f6f6c00000000000000604482015290519081900360640190fd5b60018101546001600160a01b0383166000908152600383016020526040902054101561211c576040805162461bcd60e51b81526020600482015260156024820152744e6f7420656e6f7567682073656c66207374616b6560581b604482015290519081900360640190fd5b7fdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f76546001600160a01b039081166000818152600e60209081526040822060020154828052600b9091529092909190851614156121ba576040805162461bcd60e51b8152602060048201526018602482015277105b1c9958591e481a5b881d985b1a59185d1bdc881cd95d60421b604482015290519081900360640190fd5b60006121c66004610fea565b905060015b818110156122a3576000818152600b60205260409020546001600160a01b038781169116141561223d576040805162461bcd60e51b8152602060048201526018602482015277105b1c9958591e481a5b881d985b1a59185d1bdc881cd95d60421b604482015290519081900360640190fd5b6000818152600b60209081526040808320546001600160a01b03168352600e90915290206002015483111561229b576000818152600b60209081526040808320546001600160a01b03168352600e9091529020600201549093509150825b6001016121cb565b50818460020154116122fc576040805162461bcd60e51b815260206004820152601d60248201527f4e6f74206c6172676572207468616e20736d616c6c65737420706f6f6c000000604482015290519081900360640190fd5b6000838152600b60205260409020546001600160a01b03168015612323576123238461461e565b61232d86856146dd565b505050505050565b336000908152600e602052604090205460ff16612387576040805162461bcd60e51b815260206004820152601c6024820152600080516020615502833981519152604482015290519081900360640190fd5b336000908152600e602052604090206123b46123a36006610fea565b600a8301549063ffffffff6139aa16565b4311612400576040805162461bcd60e51b815260206004820152601660248201527514dd1a5b1b081a5b881b9bdd1a58d9481c195c9a5bd960521b604482015290519081900360640190fd5b61241381826008015483600901546147be565b60006008820181905560098201819055600a90910155565b61184c3361496b565b61243c612a17565b61244557600080fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180546001600160a01b0319169055565b60115481565b61249e33612b7a565b6124a757600080fd5b610f9b816149b3565b816001600160a01b0381166124f8576040805162461bcd60e51b815260206004820152600960248201526830206164647265737360b81b604482015290519081900360640190fd5b81670de0b6b3a7640000808210156125415760405162461bcd60e51b815260040180806020018281038252602a815260200180615456602a913960400191505060405180910390fd5b6001600160a01b0385166000908152600e602090815260408083203380855260038201909352922090919061257a8289858a6001613738565b600181015461258f908863ffffffff6139aa16565b600182015561259d88614595565b60048101805460009081526002830160209081526040918290208a8155436001808301918255855401909455925482518b81529182015281516001600160a01b03808d1693908816927f7171946bb2a9ef55fcb2eb8cef679db45e2e3a8cef9a44567d34d202b65ff0b1929081900390910190a3505050505050505050565b601254610100900460ff1681565b6006602052600090815260409020805460018201546002830154600384015460048501546005909501546001600160a01b039094169492939192909160ff1686565b61267533611783565b61267e57600080fd5b610f9b816149fb565b61269033611783565b61269957600080fd5b600154600160a01b900460ff16156126b057600080fd5b6001805460ff60a01b1916600160a01b1790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60008281526009602090815260408083206001600160a01b038516845260040190915290205460ff1692915050565b612730336136ee565b612781576040805162461bcd60e51b815260206004820152601d60248201527f6d73672073656e646572206973206e6f7420612076616c696461746f72000000604482015290519081900360640190fd5b611410823383614a43565b336000908152600e602052604090205460ff166127de576040805162461bcd60e51b815260206004820152601c6024820152600080516020615502833981519152604482015290519081900360640190fd5b336000908152600e602052604090206001810154821015612877576001600482015460ff16600281111561280e57fe5b1415612857576040805162461bcd60e51b815260206004820152601360248201527210d85b991a59185d19481a5cc8189bdb991959606a1b604482015290519081900360640190fd5b6128716128646006610fea565b439063ffffffff6139aa16565b600b8201555b6001810182905560408051838152905133917f4c626e5cfbf8848bfc43930276036d8e6c5c6db09a8fea30eea53eaa034158af919081900360200190a25050565b600f6020526000908152604090205481565b6000806128d76004610fea565b90506000805b82811015611229576000818152600b60209081526040808320546001600160a01b03168352600e90915290206002015461291e90839063ffffffff6139aa16565b91506001016128dd565b6001546001600160a01b031690565b6000806129446004610fea565b7fdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f76546001600160a01b03166000908152600e60205260408120600201549192505b82811015611229576000818152600b60205260409020546001600160a01b03166129b5576000935050505061122e565b6000818152600b60209081526040808320546001600160a01b03168352600e909152902060020154821115612a0f576000818152600b60209081526040808320546001600160a01b03168352600e90915290206002015491505b600101612985565b6001546001600160a01b0316331490565b6000612a346004610fea565b90506000805b82811015612abc5760016000828152600b6020526040902054612a679086906001600160a01b031661184e565b6003811115612a7257fe5b1415612ab4576000818152600b60209081526040808320546001600160a01b03168352600e909152902060020154612ab190839063ffffffff6139aa16565b91505b600101612a3a565b506000612ac7612b03565b821015905080612af957600084815260066020526040902060010154601154612af59163ffffffff6139aa16565b6011555b6110be8482614bfe565b6000612b406001612b346003612b286002612b1c6128ca565b9063ffffffff614d7116565b9063ffffffff614d9816565b9063ffffffff6139aa16565b905090565b612b4d612a17565b612b5657600080fd5b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b60006111dc60028363ffffffff61414e16565b816001600160a01b038116612bd5576040805162461bcd60e51b815260206004820152600960248201526830206164647265737360b81b604482015290519081900360640190fd5b81670de0b6b3a764000080821015612c1e5760405162461bcd60e51b815260040180806020018281038252602a815260200180615456602a913960400191505060405180910390fd5b6001600160a01b0385166000908152600e6020526040812090600482015460ff166002811115612c4a57fe5b1480612c595750612c596135b1565b612c9b576040805162461bcd60e51b815260206004820152600e60248201526d696e76616c69642073746174757360901b604482015290519081900360640190fd5b33612caa828883896001613738565b600454612cc7906001600160a01b0316828863ffffffff61391516565b866001600160a01b0316816001600160a01b03167f585e40624b400c05be4193af453d2fd2e69facd17163bda6afd44546f3dbbaa8886040518082815260200191505060405180910390a350505050505050565b336000908152600e602052604090205460ff16612d6d576040805162461bcd60e51b815260206004820152601c6024820152600080516020615502833981519152604482015290519081900360640190fd5b336000908152600e602052604090206006810154831115612dc8576040805162461bcd60e51b815260206004820152601060248201526f496e76616c6964206e6577207261746560801b604482015290519081900360640190fd5b612dd38184846147be565b505050565b61271081565b600154600160a01b900460ff1615612df557600080fd5b60125460ff1615612e4457612e0933611706565b612e445760405162461bcd60e51b815260040180806020018281038252603a8152602001806154c8603a913960400191505060405180910390fd5b336000908152600e60205260409020805460ff1615612eaa576040805162461bcd60e51b815260206004820152601860248201527f43616e64696461746520697320696e697469616c697a65640000000000000000604482015290519081900360640190fd5b612710831115612f01576040805162461bcd60e51b815260206004820152601760248201527f496e76616c696420636f6d6d697373696f6e2072617465000000000000000000604482015290519081900360640190fd5b805460ff191660019081178255810184905560068101839055600781018290556040805185815260208101859052808201849052905133917f453d56a841836718d9e848e968068cbc2af21ca29d1527fbebd231dc46ceffaa919081900360600190a250505050565b6004546001600160a01b031681565b6001600160a01b0381166000908152600e602052604090206002600482015460ff166002811115612fa657fe5b14612ff8576040805162461bcd60e51b815260206004820152601760248201527f43616e646964617465206e6f7420756e626f6e64696e67000000000000000000604482015290519081900360640190fd5b8060050154431015613051576040805162461bcd60e51b815260206004820152601a60248201527f556e626f6e64696e672074696d65206e6f742072656163686564000000000000604482015290519081900360640190fd5b60048101805460ff191690556000600582018190556040516001600160a01b038416917fbe85a9a7aa606febeaa35606e49cd7324c63cf970f4f5fd0c7e983f42b20b21991a25050565b60125460ff1681565b806001600160a01b0381166130ec576040805162461bcd60e51b815260206004820152600960248201526830206164647265737360b81b604482015290519081900360640190fd5b6001600160a01b0382166000908152600e60209081526040808320338085526003909101909252822090916131216002610fea565b90506000806001600160a01b0387166000908152600e602052604090206004015460ff16600281111561315057fe5b6003850154911491505b83600401548110156131c4578180613196575060008181526002850160205260409020600101544390613193908563ffffffff6139aa16565b11155b156131b75760008181526002850160205260408120818155600101556131bc565b6131c4565b60010161315a565b6003840181905560005b84600401548210156132095760008281526002860160205260409020546131fc90829063ffffffff6139aa16565b60019092019190506131ce565b6000818660010154111561325357600186015461322c908363ffffffff613f2216565b60018701839055600454909150613253906001600160a01b0316888363ffffffff61391516565b886001600160a01b0316876001600160a01b03167f08d0283ea9a2e520a2f09611cf37ca6eb70f62e9a807e53756047dd2dc027220836040518082815260200191505060405180910390a3505050505050505050565b61184c33614106565b600a80546000818152600960209081526040822060019384019094558180526005908190527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5484546001600160a01b03191633908117865584860182905593909261331e92916115d6565b60028401556003830180546001600160a01b0319166001600160a01b038781169190911760ff60a01b1916600160a01b871515021760ff60a81b1916600160a81b17909155600454613373911683308461383d565b600a5460028401546040805160001990930183526001600160a01b0380861660208501528382018590526060840192909252908716608083015285151560a0830152517fe6970151d691583ac0aecc2e24c67871318a5c7f7574c6df7929b6dd5d54db689181900360c00190a15050505050565b600b602052600090815260409020546001600160a01b031681565b60096020526000908152604090208054600182015460028301546003909301546001600160a01b0392831693919281169060ff600160a01b8204811691600160a81b90041686565b60006010544310158015612b4057506134636003610fea565b61346b6111e2565b1015905090565b6001600160a01b038083166000908152600e602090815260408083209385168352600393840190915281209182015460048301549192839260609283929185916134c2919063ffffffff613f2216565b9050806040519080825280602002602001820160405280156134ee578160200160208202803883390190505b5093508060405190808252806020026020018201604052801561351b578160200160208202803883390190505b50925060005b8181101561359957600383015481016000908152600284016020526040902054855186908390811061354f57fe5b6020026020010181815250508260020160008460030154830181526020019081526020016000206001015484828151811061358657fe5b6020908102919091010152600101613521565b50508054600190910154909790965091945092509050565b6000806135be6007610fea565b905080158015906135cf5750804310155b91505090565b6135dd612a17565b6135e657600080fd5b610f9b81614dba565b336000908152600e602052604090205460ff16613641576040805162461bcd60e51b815260206004820152601c6024820152600080516020615502833981519152604482015290519081900360640190fd5b336000908152600e602052604090206006810154831161369b576040805162461bcd60e51b815260206004820152601060248201526f496e76616c6964206e6577207261746560801b604482015290519081900360640190fd5b600881018390556009810182905543600a8201556040805184815260208101849052815133927fd1388fca1fdda1adbe79c9535b48b22e71aa7815469abb61cdbab2a7b4ccd28a928290030190a2505050565b600060016001600160a01b0383166000908152600e602052604090206004015460ff16600281111561371c57fe5b1492915050565b600c6020526000908152604090205460ff1681565b6001600160a01b038316600090815260038601602052604081209082600181111561375f57fe5b141561379857600286015461377a908463ffffffff6139aa16565b60028701558054613791908463ffffffff6139aa16565b81556137da565b60018260018111156137a657fe5b14156137d85760028601546137c1908463ffffffff613f2216565b60028701558054613791908463ffffffff613f2216565bfe5b846001600160a01b0316846001600160a01b03167ff9edf8bcbb705aa22a96ed2eaeb81b1a55c2035868721a08555d82299fdc194983600001548960020154604051808381526020018281526020019250505060405180910390a3505050505050565b604080516323b872dd60e01b81526001600160a01b0385811660048301528481166024830152604482018490529151918616916323b872dd916064808201926020929091908290030181600087803b15801561389857600080fd5b505af11580156138ac573d6000803e3d6000fd5b505050506040513d60208110156138c257600080fd5b50516110be57600080fd5b6138de60038263ffffffff614e2916565b6040516001600160a01b038216907fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f90600090a250565b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561397557600080fd5b505af1158015613989573d6000803e3d6000fd5b505050506040513d602081101561399f57600080fd5b5051612dd357600080fd5b6000828201838110156139bc57600080fd5b9392505050565b600082815260096020526040902060016003820154600160a81b900460ff1660028111156139ed57fe5b14613a39576040805162461bcd60e51b8152602060048201526017602482015276496e76616c69642070726f706f73616c2073746174757360481b604482015290519081900360640190fd5b8060020154431015613a8e576040805162461bcd60e51b8152602060048201526019602482015278159bdd1948191958591b1a5b99481b9bdd081c995858da1959603a1b604482015290519081900360640190fd5b60038101805460ff60a81b1916600160a91b1790558115613b085780546001820154600454613ad1926001600160a01b039182169291169063ffffffff61391516565b60038101546001600160a01b0381166000908152600860205260409020805460ff1916600160a01b90920460ff1615159190911790555b60038101546040805185815284151560208201526001600160a01b03831681830152600160a01b90920460ff1615156060830152517f2c26ff0b5547eb09df5dde3569782330829ac9ffa9811847beab5d466066801c916080908290030190a1505050565b613b75615383565b613b7d61543b565b613b8683614e75565b90506060613b9b82600263ffffffff614e8c16565b905080600281518110613baa57fe5b6020026020010151604051908082528060200260200182016040528015613be557816020015b6060815260200190600190039081613bd05790505b508360200181905250600081600281518110613bfd57fe5b6020026020010181815250506000805b613c1684614f1c565b15613cbb57613c2484614f28565b90925090508160011415613c4257613c3b84614f55565b8552613cb6565b8160021415613ca657613c5484614f55565b856020015184600281518110613c6657fe5b602002602001015181518110613c7857fe5b602002602001018190525082600281518110613c9057fe5b6020908102919091010180516001019052613cb6565b613cb6848263ffffffff614fe216565b613c0d565b50505050919050565b600080613ccf612b03565b90506000613cdc8561503f565b905060608451604051908082528060200260200182016040528015613d0b578160200160208202803883390190505b509050600080805b8751811015613eae57613d42888281518110613d2b57fe5b60200260200101518661509090919063ffffffff16565b848281518110613d4e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600d6000858381518110613d7e57fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615613db35760019150613eae565b6001600e6000868481518110613dc557fe5b6020908102919091018101516001600160a01b031682528101919091526040016000206004015460ff166002811115613dfa57fe5b14613e0457613ea6565b613e52600e6000868481518110613e1757fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020154846139aa90919063ffffffff16565b92506001600d6000868481518110613e6657fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600101613d13565b5060005b8751811015613f07576000600d6000868481518110613ecd57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101613eb2565b5080158015613f165750848210155b98975050505050505050565b600082821115613f3157600080fd5b50900390565b60008381526006602052604090206001600582015460ff166002811115613f5a57fe5b14613fa6576040805162461bcd60e51b8152602060048201526017602482015276496e76616c69642070726f706f73616c2073746174757360481b604482015290519081900360640190fd5b80600201544310613ff6576040805162461bcd60e51b8152602060048201526015602482015274159bdd1948191958591b1a5b99481c995858da1959605a1b604482015290519081900360640190fd5b6001600160a01b038316600090815260068201602052604081205460ff16600381111561401f57fe5b14614063576040805162461bcd60e51b815260206004820152600f60248201526e159bdd195c881a185cc81d9bdd1959608a1b604482015290519081900360640190fd5b6001600160a01b03831660009081526006820160205260409020805483919060ff1916600183600381111561409457fe5b02179055507f06c7ef6e19454637e93ee60cc680c61fb2ebabb57e58cf36d94141a5036b3d6584848460405180848152602001836001600160a01b03166001600160a01b031681526020018260038111156140eb57fe5b60ff168152602001935050505060405180910390a150505050565b61411760038263ffffffff61516116565b6040516001600160a01b038216907f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b690600090a250565b60006001600160a01b03821661416357600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61419460028263ffffffff61516116565b6040516001600160a01b038216907f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16590600090a250565b6141d3615383565b6141db61543b565b6141e483614e75565b905060606141f982600263ffffffff614e8c16565b90508060028151811061420857fe5b602002602001015160405190808252806020026020018201604052801561424357816020015b606081526020019060019003908161422e5790505b50836020018190525060008160028151811061425b57fe5b6020026020010181815250506000805b61427484614f1c565b15613cbb5761428284614f28565b909250905081600114156142a05761429984614f55565b8552614314565b8160021415614304576142b284614f55565b8560200151846002815181106142c457fe5b6020026020010151815181106142d657fe5b6020026020010181905250826002815181106142ee57fe5b6020908102919091010180516001019052614314565b614314848263ffffffff614fe216565b61426b565b6143216153f7565b61432961543b565b61433283614e75565b9050606061434782600563ffffffff614e8c16565b90508060048151811061435657fe5b602002602001015160405190808252806020026020018201604052801561439757816020015b614384615424565b81526020019060019003908161437c5790505b5083606001819052506000816004815181106143af57fe5b602002602001018181525050806005815181106143c857fe5b602002602001015160405190808252806020026020018201604052801561440957816020015b6143f6615424565b8152602001906001900390816143ee5790505b50836080018190525060008160058151811061442157fe5b6020026020010181815250506000805b61443a84614f1c565b15613cbb5761444884614f28565b909250905081600114156144705761445f846151a9565b67ffffffffffffffff168552614590565b816002141561449657614482846151a9565b67ffffffffffffffff166020860152614590565b81600314156144c3576144b06144ab85614f55565b615204565b6001600160a01b03166040860152614590565b816004141561452f576144dd6144d885614f55565b61520f565b8560600151846004815181106144ef57fe5b60200260200101518151811061450157fe5b60200260200101819052508260048151811061451957fe5b6020908102919091010180516001019052614590565b8160051415614580576145446144d885614f55565b85608001518460058151811061455657fe5b60200260200101518151811061456857fe5b60200260200101819052508260058151811061451957fe5b614590848263ffffffff614fe216565b614431565b6001600160a01b0381166000908152600e602052604090206001600482015460ff1660028111156145c257fe5b146145cd5750610f9b565b60018101546001600160a01b038316600090815260038301602052604081205491909110906145fc6005610fea565b8360020154109050818061460d5750805b156110be576110be61461e856152b0565b6000818152600b60205260409020546001600160a01b0316806146415750610f9b565b6000828152600b6020908152604080832080546001600160a01b03191690556001600160a01b0384168352600e9091529020600401805460ff191660029081179091556146919061286490610fea565b6001600160a01b0382166000818152600e60205260408082206005019390935591516001927f63f783ba869265648de5e70add96be9f4914e3bde064fdc19fd7e6a8ebf2f46c91a35050565b6000818152600b60205260409020546001600160a01b031615614747576040805162461bcd60e51b815260206004820152601760248201527f56616c696461746f7220736c6f74206f63637570696564000000000000000000604482015290519081900360640190fd5b6000818152600b6020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600e90925280832060048101805460ff19166001179055600501839055517f63f783ba869265648de5e70add96be9f4914e3bde064fdc19fd7e6a8ebf2f46c908390a35050565b612710821115614808576040805162461bcd60e51b815260206004820152601060248201526f496e76616c6964206e6577207261746560801b604482015290519081900360640190fd5b4381101561485d576040805162461bcd60e51b815260206004820152601a60248201527f4f75746461746564206e6577206c6f636b20656e642074696d65000000000000604482015290519081900360640190fd5b826006015482116148c65782600701548110156148c1576040805162461bcd60e51b815260206004820152601960248201527f496e76616c6964206e6577206c6f636b20656e642074696d6500000000000000604482015290519081900360640190fd5b61491e565b8260070154431161491e576040805162461bcd60e51b815260206004820152601960248201527f436f6d6d697373696f6e2072617465206973206c6f636b656400000000000000604482015290519081900360640190fd5b60068301829055600783018190556040805183815260208101839052815133927f37954fc2aa8b4424ad16c75da2ea4d51ba08ef9e07907e37ccae54a0b4ce1e9e928290030190a2505050565b61497c60008263ffffffff61516116565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6149c460028263ffffffff614e2916565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b614a0c60008263ffffffff614e2916565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b600083815260096020526040902060016003820154600160a81b900460ff166002811115614a6d57fe5b14614ab9576040805162461bcd60e51b8152602060048201526017602482015276496e76616c69642070726f706f73616c2073746174757360481b604482015290519081900360640190fd5b80600201544310614b09576040805162461bcd60e51b8152602060048201526015602482015274159bdd1948191958591b1a5b99481c995858da1959605a1b604482015290519081900360640190fd5b6001600160a01b038316600090815260048201602052604081205460ff166003811115614b3257fe5b14614b76576040805162461bcd60e51b815260206004820152600f60248201526e159bdd195c881a185cc81d9bdd1959608a1b604482015290519081900360640190fd5b6001600160a01b03831660009081526004820160205260409020805483919060ff19166001836003811115614ba757fe5b02179055507f7686976924e1fdb79b36f7445ada20b6e9d3377d85b34d5162116e675c39d34c84848460405180848152602001836001600160a01b03166001600160a01b031681526020018260038111156140eb57fe5b60008281526006602052604090206001600582015460ff166002811115614c2157fe5b14614c6d576040805162461bcd60e51b8152602060048201526017602482015276496e76616c69642070726f706f73616c2073746174757360481b604482015290519081900360640190fd5b8060020154431015614cc2576040805162461bcd60e51b8152602060048201526019602482015278159bdd1948191958591b1a5b99481b9bdd081c995858da1959603a1b604482015290519081900360640190fd5b60058101805460ff191660021790558115614d195780546001820154600454614cff926001600160a01b039182169291169063ffffffff61391516565b600481015460038201546000908152600560205260409020555b60038101546004820154604080518681528515156020820152808201939093526060830191909152517f106f43a560e53395081c0423504b476d1a2cfed9d56ff972bf77ae43ff7d4ba49181900360800190a1505050565b600082614d80575060006111dc565b82820282848281614d8d57fe5b04146139bc57600080fd5b6000808211614da657600080fd5b6000828481614db157fe5b04949350505050565b6001600160a01b038116614dcd57600080fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116614e3c57600080fd5b614e46828261414e565b15614e5057600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b614e7d61543b565b60208101919091526000815290565b815160408051600184018082526020808202830101909252606092918015614ebe578160200160208202803883390190505b5091506000805b614ece86614f1c565b15614f1357614edc86614f28565b80925081935050506001848381518110614ef257fe5b602002602001018181510191508181525050614f0e8682614fe2565b614ec5565b50509092525090565b60208101515190511090565b6000806000614f36846151a9565b9050600881049250806007166005811115614f4d57fe5b915050915091565b60606000614f62836151a9565b8351602085015151919250820190811115614f7c57600080fd5b816040519080825280601f01601f191660200182016040528015614fa7576020820181803883390190505b50602080860151865192955091818601919083010160005b85811015614fd7578181015183820152602001614fbf565b505050935250919050565b6000816005811115614ff057fe5b141561500557614fff826151a9565b50611410565b600281600581111561501357fe5b141561041d576000615024836151a9565b835181018085526020850151519192501115614fff57600080fd5b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b60008060008084516041146150ab57600093505050506111dc565b50505060208201516040830151606084015160001a601b8110156150cd57601b015b8060ff16601b141580156150e557508060ff16601c14155b156150f657600093505050506111dc565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa15801561514d573d6000803e3d6000fd5b5050506020604051035193505050506111dc565b6001600160a01b03811661517457600080fd5b61517e828261414e565b61518757600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b602080820151825181019091015160009182805b600a8110156151fe5783811a91508060070282607f16901b8517945081608016600014156151f6578551016001018552506116bb915050565b6001016151bd565b50600080fd5b60006111dc82615341565b615217615424565b61521f61543b565b61522883614e75565b90506000805b61523783614f1c565b156152a85761524583614f28565b9092509050816001141561526f5761525f6144ab84614f55565b6001600160a01b031684526152a3565b81600214156152935761528961528484614f55565b615360565b60208501526152a3565b6152a3838263ffffffff614fe216565b61522e565b505050919050565b6000806152bd6004610fea565b905060005b818110156152fd576000818152600b60205260409020546001600160a01b03858116911614156152f55791506116bb9050565b6001016152c2565b506040805162461bcd60e51b815260206004820152601360248201527227379039bab1b41030903b30b634b230ba37b960691b604482015290519081900360640190fd5b6000815160141461535157600080fd5b5060200151600160601b900490565b600060208251111561537157600080fd5b50602081810151915160089103021c90565b604051806040016040528060608152602001606081525090565b60408051610160810182526000808252602082018190529181018290529060608201908152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160a081018252600080825260208201819052918101919091526060808201819052608082015290565b604080518082019091526000808252602082015290565b60405180604001604052806000815260200160608152509056fe416d6f756e7420697320736d616c6c6572207468616e206d696e696d756d20726571756972656d656e744d696e696e6720706f6f6c20697320736d616c6c6572207468616e206e65772072657761726456616c696461746f72207369677320766572696669636174696f6e206661696c656457686974656c6973746564526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c697374656420726f6c6543616e646964617465206973206e6f7420696e697469616c697a656400000000a265627a7a72315820aef2876c5e458ffc596a173850af199341a206374ae7650e2aa8d4ce15eec29964736f6c63430005110032" + +// DeployDPoS deploys a new Ethereum contract, binding an instance of DPoS to it. +func DeployDPoS(auth *bind.TransactOpts, backend bind.ContractBackend, _celerTokenAddress common.Address, _governProposalDeposit *big.Int, _governVoteTimeout *big.Int, _slashTimeout *big.Int, _minValidatorNum *big.Int, _maxValidatorNum *big.Int, _minStakeInPool *big.Int, _advanceNoticePeriod *big.Int, _dposGoLiveTimeout *big.Int) (common.Address, *types.Transaction, *DPoS, error) { + parsed, err := abi.JSON(strings.NewReader(DPoSABI)) + if err != nil { + return common.Address{}, nil, nil, err + } + + address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(DPoSBin), backend, _celerTokenAddress, _governProposalDeposit, _governVoteTimeout, _slashTimeout, _minValidatorNum, _maxValidatorNum, _minStakeInPool, _advanceNoticePeriod, _dposGoLiveTimeout) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &DPoS{DPoSCaller: DPoSCaller{contract: contract}, DPoSTransactor: DPoSTransactor{contract: contract}, DPoSFilterer: DPoSFilterer{contract: contract}}, nil +} + +// DPoS is an auto generated Go binding around an Ethereum contract. +type DPoS struct { + DPoSCaller // Read-only binding to the contract + DPoSTransactor // Write-only binding to the contract + DPoSFilterer // Log filterer for contract events +} + +// DPoSCaller is an auto generated read-only Go binding around an Ethereum contract. +type DPoSCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DPoSTransactor is an auto generated write-only Go binding around an Ethereum contract. +type DPoSTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DPoSFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type DPoSFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DPoSSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type DPoSSession struct { + Contract *DPoS // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// DPoSCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type DPoSCallerSession struct { + Contract *DPoSCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// DPoSTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type DPoSTransactorSession struct { + Contract *DPoSTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// DPoSRaw is an auto generated low-level Go binding around an Ethereum contract. +type DPoSRaw struct { + Contract *DPoS // Generic contract binding to access the raw methods on +} + +// DPoSCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type DPoSCallerRaw struct { + Contract *DPoSCaller // Generic read-only contract binding to access the raw methods on +} + +// DPoSTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type DPoSTransactorRaw struct { + Contract *DPoSTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewDPoS creates a new instance of DPoS, bound to a specific deployed contract. +func NewDPoS(address common.Address, backend bind.ContractBackend) (*DPoS, error) { + contract, err := bindDPoS(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &DPoS{DPoSCaller: DPoSCaller{contract: contract}, DPoSTransactor: DPoSTransactor{contract: contract}, DPoSFilterer: DPoSFilterer{contract: contract}}, nil +} + +// NewDPoSCaller creates a new read-only instance of DPoS, bound to a specific deployed contract. +func NewDPoSCaller(address common.Address, caller bind.ContractCaller) (*DPoSCaller, error) { + contract, err := bindDPoS(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &DPoSCaller{contract: contract}, nil +} + +// NewDPoSTransactor creates a new write-only instance of DPoS, bound to a specific deployed contract. +func NewDPoSTransactor(address common.Address, transactor bind.ContractTransactor) (*DPoSTransactor, error) { + contract, err := bindDPoS(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &DPoSTransactor{contract: contract}, nil +} + +// NewDPoSFilterer creates a new log filterer instance of DPoS, bound to a specific deployed contract. +func NewDPoSFilterer(address common.Address, filterer bind.ContractFilterer) (*DPoSFilterer, error) { + contract, err := bindDPoS(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &DPoSFilterer{contract: contract}, nil +} + +// bindDPoS binds a generic wrapper to an already deployed contract. +func bindDPoS(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(DPoSABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// 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 +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_DPoS *DPoSRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _DPoS.Contract.DPoSCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_DPoS *DPoSRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DPoS.Contract.DPoSTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_DPoS *DPoSRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _DPoS.Contract.DPoSTransactor.contract.Transact(opts, method, params...) +} + +// 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 +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_DPoS *DPoSCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _DPoS.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_DPoS *DPoSTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DPoS.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_DPoS *DPoSTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _DPoS.Contract.contract.Transact(opts, method, params...) +} + +// COMMISSIONRATEBASE is a free data retrieval call binding the contract method 0xbee8380e. +// +// Solidity: function COMMISSION_RATE_BASE() view returns(uint256) +func (_DPoS *DPoSCaller) COMMISSIONRATEBASE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "COMMISSION_RATE_BASE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// COMMISSIONRATEBASE is a free data retrieval call binding the contract method 0xbee8380e. +// +// Solidity: function COMMISSION_RATE_BASE() view returns(uint256) +func (_DPoS *DPoSSession) COMMISSIONRATEBASE() (*big.Int, error) { + return _DPoS.Contract.COMMISSIONRATEBASE(&_DPoS.CallOpts) +} + +// COMMISSIONRATEBASE is a free data retrieval call binding the contract method 0xbee8380e. +// +// Solidity: function COMMISSION_RATE_BASE() view returns(uint256) +func (_DPoS *DPoSCallerSession) COMMISSIONRATEBASE() (*big.Int, error) { + return _DPoS.Contract.COMMISSIONRATEBASE(&_DPoS.CallOpts) +} + +// UIntStorage is a free data retrieval call binding the contract method 0x64ed600a. +// +// Solidity: function UIntStorage(uint256 ) view returns(uint256) +func (_DPoS *DPoSCaller) UIntStorage(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "UIntStorage", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UIntStorage is a free data retrieval call binding the contract method 0x64ed600a. +// +// Solidity: function UIntStorage(uint256 ) view returns(uint256) +func (_DPoS *DPoSSession) UIntStorage(arg0 *big.Int) (*big.Int, error) { + return _DPoS.Contract.UIntStorage(&_DPoS.CallOpts, arg0) +} + +// UIntStorage is a free data retrieval call binding the contract method 0x64ed600a. +// +// Solidity: function UIntStorage(uint256 ) view returns(uint256) +func (_DPoS *DPoSCallerSession) UIntStorage(arg0 *big.Int) (*big.Int, error) { + return _DPoS.Contract.UIntStorage(&_DPoS.CallOpts, arg0) +} + +// CelerToken is a free data retrieval call binding the contract method 0xc6c21e9d. +// +// Solidity: function celerToken() view returns(address) +func (_DPoS *DPoSCaller) CelerToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "celerToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// CelerToken is a free data retrieval call binding the contract method 0xc6c21e9d. +// +// Solidity: function celerToken() view returns(address) +func (_DPoS *DPoSSession) CelerToken() (common.Address, error) { + return _DPoS.Contract.CelerToken(&_DPoS.CallOpts) +} + +// CelerToken is a free data retrieval call binding the contract method 0xc6c21e9d. +// +// Solidity: function celerToken() view returns(address) +func (_DPoS *DPoSCallerSession) CelerToken() (common.Address, error) { + return _DPoS.Contract.CelerToken(&_DPoS.CallOpts) +} + +// CheckedValidators is a free data retrieval call binding the contract method 0x3702db39. +// +// Solidity: function checkedValidators(address ) view returns(bool) +func (_DPoS *DPoSCaller) CheckedValidators(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "checkedValidators", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// CheckedValidators is a free data retrieval call binding the contract method 0x3702db39. +// +// Solidity: function checkedValidators(address ) view returns(bool) +func (_DPoS *DPoSSession) CheckedValidators(arg0 common.Address) (bool, error) { + return _DPoS.Contract.CheckedValidators(&_DPoS.CallOpts, arg0) +} + +// CheckedValidators is a free data retrieval call binding the contract method 0x3702db39. +// +// Solidity: function checkedValidators(address ) view returns(bool) +func (_DPoS *DPoSCallerSession) CheckedValidators(arg0 common.Address) (bool, error) { + return _DPoS.Contract.CheckedValidators(&_DPoS.CallOpts, arg0) +} + +// DposGoLiveTime is a free data retrieval call binding the contract method 0x39c9563e. +// +// Solidity: function dposGoLiveTime() view returns(uint256) +func (_DPoS *DPoSCaller) DposGoLiveTime(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "dposGoLiveTime") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DposGoLiveTime is a free data retrieval call binding the contract method 0x39c9563e. +// +// Solidity: function dposGoLiveTime() view returns(uint256) +func (_DPoS *DPoSSession) DposGoLiveTime() (*big.Int, error) { + return _DPoS.Contract.DposGoLiveTime(&_DPoS.CallOpts) +} + +// DposGoLiveTime is a free data retrieval call binding the contract method 0x39c9563e. +// +// Solidity: function dposGoLiveTime() view returns(uint256) +func (_DPoS *DPoSCallerSession) DposGoLiveTime() (*big.Int, error) { + return _DPoS.Contract.DposGoLiveTime(&_DPoS.CallOpts) +} + +// EnableSlash is a free data retrieval call binding the contract method 0x7a3ba4ad. +// +// Solidity: function enableSlash() view returns(bool) +func (_DPoS *DPoSCaller) EnableSlash(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "enableSlash") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// EnableSlash is a free data retrieval call binding the contract method 0x7a3ba4ad. +// +// Solidity: function enableSlash() view returns(bool) +func (_DPoS *DPoSSession) EnableSlash() (bool, error) { + return _DPoS.Contract.EnableSlash(&_DPoS.CallOpts) +} + +// EnableSlash is a free data retrieval call binding the contract method 0x7a3ba4ad. +// +// Solidity: function enableSlash() view returns(bool) +func (_DPoS *DPoSCallerSession) EnableSlash() (bool, error) { + return _DPoS.Contract.EnableSlash(&_DPoS.CallOpts) +} + +// EnableWhitelist is a free data retrieval call binding the contract method 0xcdfb2b4e. +// +// Solidity: function enableWhitelist() view returns(bool) +func (_DPoS *DPoSCaller) EnableWhitelist(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "enableWhitelist") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// EnableWhitelist is a free data retrieval call binding the contract method 0xcdfb2b4e. +// +// Solidity: function enableWhitelist() view returns(bool) +func (_DPoS *DPoSSession) EnableWhitelist() (bool, error) { + return _DPoS.Contract.EnableWhitelist(&_DPoS.CallOpts) +} + +// EnableWhitelist is a free data retrieval call binding the contract method 0xcdfb2b4e. +// +// Solidity: function enableWhitelist() view returns(bool) +func (_DPoS *DPoSCallerSession) EnableWhitelist() (bool, error) { + return _DPoS.Contract.EnableWhitelist(&_DPoS.CallOpts) +} + +// GetCandidateInfo is a free data retrieval call binding the contract method 0x28bde1e1. +// +// Solidity: function getCandidateInfo(address _candidateAddr) view returns(bool initialized, uint256 minSelfStake, uint256 stakingPool, uint256 status, uint256 unbondTime, uint256 commissionRate, uint256 rateLockEndTime) +func (_DPoS *DPoSCaller) GetCandidateInfo(opts *bind.CallOpts, _candidateAddr common.Address) (struct { + Initialized bool + MinSelfStake *big.Int + StakingPool *big.Int + Status *big.Int + UnbondTime *big.Int + CommissionRate *big.Int + RateLockEndTime *big.Int +}, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "getCandidateInfo", _candidateAddr) + + outstruct := new(struct { + Initialized bool + MinSelfStake *big.Int + StakingPool *big.Int + Status *big.Int + UnbondTime *big.Int + CommissionRate *big.Int + RateLockEndTime *big.Int + }) + + outstruct.Initialized = out[0].(bool) + outstruct.MinSelfStake = out[1].(*big.Int) + outstruct.StakingPool = out[2].(*big.Int) + outstruct.Status = out[3].(*big.Int) + outstruct.UnbondTime = out[4].(*big.Int) + outstruct.CommissionRate = out[5].(*big.Int) + outstruct.RateLockEndTime = out[6].(*big.Int) + + return *outstruct, err + +} + +// GetCandidateInfo is a free data retrieval call binding the contract method 0x28bde1e1. +// +// Solidity: function getCandidateInfo(address _candidateAddr) view returns(bool initialized, uint256 minSelfStake, uint256 stakingPool, uint256 status, uint256 unbondTime, uint256 commissionRate, uint256 rateLockEndTime) +func (_DPoS *DPoSSession) GetCandidateInfo(_candidateAddr common.Address) (struct { + Initialized bool + MinSelfStake *big.Int + StakingPool *big.Int + Status *big.Int + UnbondTime *big.Int + CommissionRate *big.Int + RateLockEndTime *big.Int +}, error) { + return _DPoS.Contract.GetCandidateInfo(&_DPoS.CallOpts, _candidateAddr) +} + +// GetCandidateInfo is a free data retrieval call binding the contract method 0x28bde1e1. +// +// Solidity: function getCandidateInfo(address _candidateAddr) view returns(bool initialized, uint256 minSelfStake, uint256 stakingPool, uint256 status, uint256 unbondTime, uint256 commissionRate, uint256 rateLockEndTime) +func (_DPoS *DPoSCallerSession) GetCandidateInfo(_candidateAddr common.Address) (struct { + Initialized bool + MinSelfStake *big.Int + StakingPool *big.Int + Status *big.Int + UnbondTime *big.Int + CommissionRate *big.Int + RateLockEndTime *big.Int +}, error) { + return _DPoS.Contract.GetCandidateInfo(&_DPoS.CallOpts, _candidateAddr) +} + +// GetDelegatorInfo is a free data retrieval call binding the contract method 0xeecefef8. +// +// Solidity: function getDelegatorInfo(address _candidateAddr, address _delegatorAddr) view returns(uint256 delegatedStake, uint256 undelegatingStake, uint256[] intentAmounts, uint256[] intentProposedTimes) +func (_DPoS *DPoSCaller) GetDelegatorInfo(opts *bind.CallOpts, _candidateAddr common.Address, _delegatorAddr common.Address) (struct { + DelegatedStake *big.Int + UndelegatingStake *big.Int + IntentAmounts []*big.Int + IntentProposedTimes []*big.Int +}, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "getDelegatorInfo", _candidateAddr, _delegatorAddr) + + outstruct := new(struct { + DelegatedStake *big.Int + UndelegatingStake *big.Int + IntentAmounts []*big.Int + IntentProposedTimes []*big.Int + }) + + outstruct.DelegatedStake = out[0].(*big.Int) + outstruct.UndelegatingStake = out[1].(*big.Int) + outstruct.IntentAmounts = out[2].([]*big.Int) + outstruct.IntentProposedTimes = out[3].([]*big.Int) + + return *outstruct, err + +} + +// GetDelegatorInfo is a free data retrieval call binding the contract method 0xeecefef8. +// +// Solidity: function getDelegatorInfo(address _candidateAddr, address _delegatorAddr) view returns(uint256 delegatedStake, uint256 undelegatingStake, uint256[] intentAmounts, uint256[] intentProposedTimes) +func (_DPoS *DPoSSession) GetDelegatorInfo(_candidateAddr common.Address, _delegatorAddr common.Address) (struct { + DelegatedStake *big.Int + UndelegatingStake *big.Int + IntentAmounts []*big.Int + IntentProposedTimes []*big.Int +}, error) { + return _DPoS.Contract.GetDelegatorInfo(&_DPoS.CallOpts, _candidateAddr, _delegatorAddr) +} + +// GetDelegatorInfo is a free data retrieval call binding the contract method 0xeecefef8. +// +// Solidity: function getDelegatorInfo(address _candidateAddr, address _delegatorAddr) view returns(uint256 delegatedStake, uint256 undelegatingStake, uint256[] intentAmounts, uint256[] intentProposedTimes) +func (_DPoS *DPoSCallerSession) GetDelegatorInfo(_candidateAddr common.Address, _delegatorAddr common.Address) (struct { + DelegatedStake *big.Int + UndelegatingStake *big.Int + IntentAmounts []*big.Int + IntentProposedTimes []*big.Int +}, error) { + return _DPoS.Contract.GetDelegatorInfo(&_DPoS.CallOpts, _candidateAddr, _delegatorAddr) +} + +// GetMinQuorumStakingPool is a free data retrieval call binding the contract method 0xa3e814b9. +// +// Solidity: function getMinQuorumStakingPool() view returns(uint256) +func (_DPoS *DPoSCaller) GetMinQuorumStakingPool(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "getMinQuorumStakingPool") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetMinQuorumStakingPool is a free data retrieval call binding the contract method 0xa3e814b9. +// +// Solidity: function getMinQuorumStakingPool() view returns(uint256) +func (_DPoS *DPoSSession) GetMinQuorumStakingPool() (*big.Int, error) { + return _DPoS.Contract.GetMinQuorumStakingPool(&_DPoS.CallOpts) +} + +// GetMinQuorumStakingPool is a free data retrieval call binding the contract method 0xa3e814b9. +// +// Solidity: function getMinQuorumStakingPool() view returns(uint256) +func (_DPoS *DPoSCallerSession) GetMinQuorumStakingPool() (*big.Int, error) { + return _DPoS.Contract.GetMinQuorumStakingPool(&_DPoS.CallOpts) +} + +// GetMinStakingPool is a free data retrieval call binding the contract method 0x8e9472a3. +// +// Solidity: function getMinStakingPool() view returns(uint256) +func (_DPoS *DPoSCaller) GetMinStakingPool(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "getMinStakingPool") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetMinStakingPool is a free data retrieval call binding the contract method 0x8e9472a3. +// +// Solidity: function getMinStakingPool() view returns(uint256) +func (_DPoS *DPoSSession) GetMinStakingPool() (*big.Int, error) { + return _DPoS.Contract.GetMinStakingPool(&_DPoS.CallOpts) +} + +// GetMinStakingPool is a free data retrieval call binding the contract method 0x8e9472a3. +// +// Solidity: function getMinStakingPool() view returns(uint256) +func (_DPoS *DPoSCallerSession) GetMinStakingPool() (*big.Int, error) { + return _DPoS.Contract.GetMinStakingPool(&_DPoS.CallOpts) +} + +// GetParamProposalVote is a free data retrieval call binding the contract method 0x581c53c5. +// +// Solidity: function getParamProposalVote(uint256 _proposalId, address _voter) view returns(uint8) +func (_DPoS *DPoSCaller) GetParamProposalVote(opts *bind.CallOpts, _proposalId *big.Int, _voter common.Address) (uint8, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "getParamProposalVote", _proposalId, _voter) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// GetParamProposalVote is a free data retrieval call binding the contract method 0x581c53c5. +// +// Solidity: function getParamProposalVote(uint256 _proposalId, address _voter) view returns(uint8) +func (_DPoS *DPoSSession) GetParamProposalVote(_proposalId *big.Int, _voter common.Address) (uint8, error) { + return _DPoS.Contract.GetParamProposalVote(&_DPoS.CallOpts, _proposalId, _voter) +} + +// GetParamProposalVote is a free data retrieval call binding the contract method 0x581c53c5. +// +// Solidity: function getParamProposalVote(uint256 _proposalId, address _voter) view returns(uint8) +func (_DPoS *DPoSCallerSession) GetParamProposalVote(_proposalId *big.Int, _voter common.Address) (uint8, error) { + return _DPoS.Contract.GetParamProposalVote(&_DPoS.CallOpts, _proposalId, _voter) +} + +// GetSidechainProposalVote is a free data retrieval call binding the contract method 0x8515b0e2. +// +// Solidity: function getSidechainProposalVote(uint256 _proposalId, address _voter) view returns(uint8) +func (_DPoS *DPoSCaller) GetSidechainProposalVote(opts *bind.CallOpts, _proposalId *big.Int, _voter common.Address) (uint8, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "getSidechainProposalVote", _proposalId, _voter) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// GetSidechainProposalVote is a free data retrieval call binding the contract method 0x8515b0e2. +// +// Solidity: function getSidechainProposalVote(uint256 _proposalId, address _voter) view returns(uint8) +func (_DPoS *DPoSSession) GetSidechainProposalVote(_proposalId *big.Int, _voter common.Address) (uint8, error) { + return _DPoS.Contract.GetSidechainProposalVote(&_DPoS.CallOpts, _proposalId, _voter) +} + +// GetSidechainProposalVote is a free data retrieval call binding the contract method 0x8515b0e2. +// +// Solidity: function getSidechainProposalVote(uint256 _proposalId, address _voter) view returns(uint8) +func (_DPoS *DPoSCallerSession) GetSidechainProposalVote(_proposalId *big.Int, _voter common.Address) (uint8, error) { + return _DPoS.Contract.GetSidechainProposalVote(&_DPoS.CallOpts, _proposalId, _voter) +} + +// GetTotalValidatorStakingPool is a free data retrieval call binding the contract method 0x89ed7939. +// +// Solidity: function getTotalValidatorStakingPool() view returns(uint256) +func (_DPoS *DPoSCaller) GetTotalValidatorStakingPool(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "getTotalValidatorStakingPool") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetTotalValidatorStakingPool is a free data retrieval call binding the contract method 0x89ed7939. +// +// Solidity: function getTotalValidatorStakingPool() view returns(uint256) +func (_DPoS *DPoSSession) GetTotalValidatorStakingPool() (*big.Int, error) { + return _DPoS.Contract.GetTotalValidatorStakingPool(&_DPoS.CallOpts) +} + +// GetTotalValidatorStakingPool is a free data retrieval call binding the contract method 0x89ed7939. +// +// Solidity: function getTotalValidatorStakingPool() view returns(uint256) +func (_DPoS *DPoSCallerSession) GetTotalValidatorStakingPool() (*big.Int, error) { + return _DPoS.Contract.GetTotalValidatorStakingPool(&_DPoS.CallOpts) +} + +// GetUIntValue is a free data retrieval call binding the contract method 0x64c66395. +// +// Solidity: function getUIntValue(uint256 _record) view returns(uint256) +func (_DPoS *DPoSCaller) GetUIntValue(opts *bind.CallOpts, _record *big.Int) (*big.Int, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "getUIntValue", _record) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetUIntValue is a free data retrieval call binding the contract method 0x64c66395. +// +// Solidity: function getUIntValue(uint256 _record) view returns(uint256) +func (_DPoS *DPoSSession) GetUIntValue(_record *big.Int) (*big.Int, error) { + return _DPoS.Contract.GetUIntValue(&_DPoS.CallOpts, _record) +} + +// GetUIntValue is a free data retrieval call binding the contract method 0x64c66395. +// +// Solidity: function getUIntValue(uint256 _record) view returns(uint256) +func (_DPoS *DPoSCallerSession) GetUIntValue(_record *big.Int) (*big.Int, error) { + return _DPoS.Contract.GetUIntValue(&_DPoS.CallOpts, _record) +} + +// GetValidatorNum is a free data retrieval call binding the contract method 0x1cfe4f0b. +// +// Solidity: function getValidatorNum() view returns(uint256) +func (_DPoS *DPoSCaller) GetValidatorNum(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "getValidatorNum") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetValidatorNum is a free data retrieval call binding the contract method 0x1cfe4f0b. +// +// Solidity: function getValidatorNum() view returns(uint256) +func (_DPoS *DPoSSession) GetValidatorNum() (*big.Int, error) { + return _DPoS.Contract.GetValidatorNum(&_DPoS.CallOpts) +} + +// GetValidatorNum is a free data retrieval call binding the contract method 0x1cfe4f0b. +// +// Solidity: function getValidatorNum() view returns(uint256) +func (_DPoS *DPoSCallerSession) GetValidatorNum() (*big.Int, error) { + return _DPoS.Contract.GetValidatorNum(&_DPoS.CallOpts) +} + +// IsMigrating is a free data retrieval call binding the contract method 0xf05e777d. +// +// Solidity: function isMigrating() view returns(bool) +func (_DPoS *DPoSCaller) IsMigrating(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "isMigrating") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsMigrating is a free data retrieval call binding the contract method 0xf05e777d. +// +// Solidity: function isMigrating() view returns(bool) +func (_DPoS *DPoSSession) IsMigrating() (bool, error) { + return _DPoS.Contract.IsMigrating(&_DPoS.CallOpts) +} + +// IsMigrating is a free data retrieval call binding the contract method 0xf05e777d. +// +// Solidity: function isMigrating() view returns(bool) +func (_DPoS *DPoSCallerSession) IsMigrating() (bool, error) { + return _DPoS.Contract.IsMigrating(&_DPoS.CallOpts) +} + +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_DPoS *DPoSCaller) IsOwner(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "isOwner") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_DPoS *DPoSSession) IsOwner() (bool, error) { + return _DPoS.Contract.IsOwner(&_DPoS.CallOpts) +} + +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_DPoS *DPoSCallerSession) IsOwner() (bool, error) { + return _DPoS.Contract.IsOwner(&_DPoS.CallOpts) +} + +// IsPauser is a free data retrieval call binding the contract method 0x46fbf68e. +// +// Solidity: function isPauser(address account) view returns(bool) +func (_DPoS *DPoSCaller) IsPauser(opts *bind.CallOpts, account common.Address) (bool, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "isPauser", account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsPauser is a free data retrieval call binding the contract method 0x46fbf68e. +// +// Solidity: function isPauser(address account) view returns(bool) +func (_DPoS *DPoSSession) IsPauser(account common.Address) (bool, error) { + return _DPoS.Contract.IsPauser(&_DPoS.CallOpts, account) +} + +// IsPauser is a free data retrieval call binding the contract method 0x46fbf68e. +// +// Solidity: function isPauser(address account) view returns(bool) +func (_DPoS *DPoSCallerSession) IsPauser(account common.Address) (bool, error) { + return _DPoS.Contract.IsPauser(&_DPoS.CallOpts, account) +} + +// IsSidechainRegistered is a free data retrieval call binding the contract method 0x325820b3. +// +// Solidity: function isSidechainRegistered(address _sidechainAddr) view returns(bool) +func (_DPoS *DPoSCaller) IsSidechainRegistered(opts *bind.CallOpts, _sidechainAddr common.Address) (bool, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "isSidechainRegistered", _sidechainAddr) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsSidechainRegistered is a free data retrieval call binding the contract method 0x325820b3. +// +// Solidity: function isSidechainRegistered(address _sidechainAddr) view returns(bool) +func (_DPoS *DPoSSession) IsSidechainRegistered(_sidechainAddr common.Address) (bool, error) { + return _DPoS.Contract.IsSidechainRegistered(&_DPoS.CallOpts, _sidechainAddr) +} + +// IsSidechainRegistered is a free data retrieval call binding the contract method 0x325820b3. +// +// Solidity: function isSidechainRegistered(address _sidechainAddr) view returns(bool) +func (_DPoS *DPoSCallerSession) IsSidechainRegistered(_sidechainAddr common.Address) (bool, error) { + return _DPoS.Contract.IsSidechainRegistered(&_DPoS.CallOpts, _sidechainAddr) +} + +// IsValidDPoS is a free data retrieval call binding the contract method 0xeab2ed8c. +// +// Solidity: function isValidDPoS() view returns(bool) +func (_DPoS *DPoSCaller) IsValidDPoS(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "isValidDPoS") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsValidDPoS is a free data retrieval call binding the contract method 0xeab2ed8c. +// +// Solidity: function isValidDPoS() view returns(bool) +func (_DPoS *DPoSSession) IsValidDPoS() (bool, error) { + return _DPoS.Contract.IsValidDPoS(&_DPoS.CallOpts) +} + +// IsValidDPoS is a free data retrieval call binding the contract method 0xeab2ed8c. +// +// Solidity: function isValidDPoS() view returns(bool) +func (_DPoS *DPoSCallerSession) IsValidDPoS() (bool, error) { + return _DPoS.Contract.IsValidDPoS(&_DPoS.CallOpts) +} + +// IsValidator is a free data retrieval call binding the contract method 0xfacd743b. +// +// Solidity: function isValidator(address _addr) view returns(bool) +func (_DPoS *DPoSCaller) IsValidator(opts *bind.CallOpts, _addr common.Address) (bool, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "isValidator", _addr) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsValidator is a free data retrieval call binding the contract method 0xfacd743b. +// +// Solidity: function isValidator(address _addr) view returns(bool) +func (_DPoS *DPoSSession) IsValidator(_addr common.Address) (bool, error) { + return _DPoS.Contract.IsValidator(&_DPoS.CallOpts, _addr) +} + +// IsValidator is a free data retrieval call binding the contract method 0xfacd743b. +// +// Solidity: function isValidator(address _addr) view returns(bool) +func (_DPoS *DPoSCallerSession) IsValidator(_addr common.Address) (bool, error) { + return _DPoS.Contract.IsValidator(&_DPoS.CallOpts, _addr) +} + +// IsWhitelistAdmin is a free data retrieval call binding the contract method 0xbb5f747b. +// +// Solidity: function isWhitelistAdmin(address account) view returns(bool) +func (_DPoS *DPoSCaller) IsWhitelistAdmin(opts *bind.CallOpts, account common.Address) (bool, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "isWhitelistAdmin", account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsWhitelistAdmin is a free data retrieval call binding the contract method 0xbb5f747b. +// +// Solidity: function isWhitelistAdmin(address account) view returns(bool) +func (_DPoS *DPoSSession) IsWhitelistAdmin(account common.Address) (bool, error) { + return _DPoS.Contract.IsWhitelistAdmin(&_DPoS.CallOpts, account) +} + +// IsWhitelistAdmin is a free data retrieval call binding the contract method 0xbb5f747b. +// +// Solidity: function isWhitelistAdmin(address account) view returns(bool) +func (_DPoS *DPoSCallerSession) IsWhitelistAdmin(account common.Address) (bool, error) { + return _DPoS.Contract.IsWhitelistAdmin(&_DPoS.CallOpts, account) +} + +// IsWhitelisted is a free data retrieval call binding the contract method 0x3af32abf. +// +// Solidity: function isWhitelisted(address account) view returns(bool) +func (_DPoS *DPoSCaller) IsWhitelisted(opts *bind.CallOpts, account common.Address) (bool, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "isWhitelisted", account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsWhitelisted is a free data retrieval call binding the contract method 0x3af32abf. +// +// Solidity: function isWhitelisted(address account) view returns(bool) +func (_DPoS *DPoSSession) IsWhitelisted(account common.Address) (bool, error) { + return _DPoS.Contract.IsWhitelisted(&_DPoS.CallOpts, account) +} + +// IsWhitelisted is a free data retrieval call binding the contract method 0x3af32abf. +// +// Solidity: function isWhitelisted(address account) view returns(bool) +func (_DPoS *DPoSCallerSession) IsWhitelisted(account common.Address) (bool, error) { + return _DPoS.Contract.IsWhitelisted(&_DPoS.CallOpts, account) +} + +// MiningPool is a free data retrieval call binding the contract method 0x73397597. +// +// Solidity: function miningPool() view returns(uint256) +func (_DPoS *DPoSCaller) MiningPool(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "miningPool") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MiningPool is a free data retrieval call binding the contract method 0x73397597. +// +// Solidity: function miningPool() view returns(uint256) +func (_DPoS *DPoSSession) MiningPool() (*big.Int, error) { + return _DPoS.Contract.MiningPool(&_DPoS.CallOpts) +} + +// MiningPool is a free data retrieval call binding the contract method 0x73397597. +// +// Solidity: function miningPool() view returns(uint256) +func (_DPoS *DPoSCallerSession) MiningPool() (*big.Int, error) { + return _DPoS.Contract.MiningPool(&_DPoS.CallOpts) +} + +// NextParamProposalId is a free data retrieval call binding the contract method 0x22da7927. +// +// Solidity: function nextParamProposalId() view returns(uint256) +func (_DPoS *DPoSCaller) NextParamProposalId(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "nextParamProposalId") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// NextParamProposalId is a free data retrieval call binding the contract method 0x22da7927. +// +// Solidity: function nextParamProposalId() view returns(uint256) +func (_DPoS *DPoSSession) NextParamProposalId() (*big.Int, error) { + return _DPoS.Contract.NextParamProposalId(&_DPoS.CallOpts) +} + +// NextParamProposalId is a free data retrieval call binding the contract method 0x22da7927. +// +// Solidity: function nextParamProposalId() view returns(uint256) +func (_DPoS *DPoSCallerSession) NextParamProposalId() (*big.Int, error) { + return _DPoS.Contract.NextParamProposalId(&_DPoS.CallOpts) +} + +// NextSidechainProposalId is a free data retrieval call binding the contract method 0x2bf0fe59. +// +// Solidity: function nextSidechainProposalId() view returns(uint256) +func (_DPoS *DPoSCaller) NextSidechainProposalId(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "nextSidechainProposalId") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// NextSidechainProposalId is a free data retrieval call binding the contract method 0x2bf0fe59. +// +// Solidity: function nextSidechainProposalId() view returns(uint256) +func (_DPoS *DPoSSession) NextSidechainProposalId() (*big.Int, error) { + return _DPoS.Contract.NextSidechainProposalId(&_DPoS.CallOpts) +} + +// NextSidechainProposalId is a free data retrieval call binding the contract method 0x2bf0fe59. +// +// Solidity: function nextSidechainProposalId() view returns(uint256) +func (_DPoS *DPoSCallerSession) NextSidechainProposalId() (*big.Int, error) { + return _DPoS.Contract.NextSidechainProposalId(&_DPoS.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_DPoS *DPoSCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_DPoS *DPoSSession) Owner() (common.Address, error) { + return _DPoS.Contract.Owner(&_DPoS.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_DPoS *DPoSCallerSession) Owner() (common.Address, error) { + return _DPoS.Contract.Owner(&_DPoS.CallOpts) +} + +// ParamProposals is a free data retrieval call binding the contract method 0x7e5fb8f3. +// +// Solidity: function paramProposals(uint256 ) view returns(address proposer, uint256 deposit, uint256 voteDeadline, uint256 record, uint256 newValue, uint8 status) +func (_DPoS *DPoSCaller) ParamProposals(opts *bind.CallOpts, arg0 *big.Int) (struct { + Proposer common.Address + Deposit *big.Int + VoteDeadline *big.Int + Record *big.Int + NewValue *big.Int + Status uint8 +}, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "paramProposals", arg0) + + outstruct := new(struct { + Proposer common.Address + Deposit *big.Int + VoteDeadline *big.Int + Record *big.Int + NewValue *big.Int + Status uint8 + }) + + outstruct.Proposer = out[0].(common.Address) + outstruct.Deposit = out[1].(*big.Int) + outstruct.VoteDeadline = out[2].(*big.Int) + outstruct.Record = out[3].(*big.Int) + outstruct.NewValue = out[4].(*big.Int) + outstruct.Status = out[5].(uint8) + + return *outstruct, err + +} + +// ParamProposals is a free data retrieval call binding the contract method 0x7e5fb8f3. +// +// Solidity: function paramProposals(uint256 ) view returns(address proposer, uint256 deposit, uint256 voteDeadline, uint256 record, uint256 newValue, uint8 status) +func (_DPoS *DPoSSession) ParamProposals(arg0 *big.Int) (struct { + Proposer common.Address + Deposit *big.Int + VoteDeadline *big.Int + Record *big.Int + NewValue *big.Int + Status uint8 +}, error) { + return _DPoS.Contract.ParamProposals(&_DPoS.CallOpts, arg0) +} + +// ParamProposals is a free data retrieval call binding the contract method 0x7e5fb8f3. +// +// Solidity: function paramProposals(uint256 ) view returns(address proposer, uint256 deposit, uint256 voteDeadline, uint256 record, uint256 newValue, uint8 status) +func (_DPoS *DPoSCallerSession) ParamProposals(arg0 *big.Int) (struct { + Proposer common.Address + Deposit *big.Int + VoteDeadline *big.Int + Record *big.Int + NewValue *big.Int + Status uint8 +}, error) { + return _DPoS.Contract.ParamProposals(&_DPoS.CallOpts, arg0) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_DPoS *DPoSCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_DPoS *DPoSSession) Paused() (bool, error) { + return _DPoS.Contract.Paused(&_DPoS.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_DPoS *DPoSCallerSession) Paused() (bool, error) { + return _DPoS.Contract.Paused(&_DPoS.CallOpts) +} + +// RedeemedMiningReward is a free data retrieval call binding the contract method 0x87e53fef. +// +// Solidity: function redeemedMiningReward(address ) view returns(uint256) +func (_DPoS *DPoSCaller) RedeemedMiningReward(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "redeemedMiningReward", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// RedeemedMiningReward is a free data retrieval call binding the contract method 0x87e53fef. +// +// Solidity: function redeemedMiningReward(address ) view returns(uint256) +func (_DPoS *DPoSSession) RedeemedMiningReward(arg0 common.Address) (*big.Int, error) { + return _DPoS.Contract.RedeemedMiningReward(&_DPoS.CallOpts, arg0) +} + +// RedeemedMiningReward is a free data retrieval call binding the contract method 0x87e53fef. +// +// Solidity: function redeemedMiningReward(address ) view returns(uint256) +func (_DPoS *DPoSCallerSession) RedeemedMiningReward(arg0 common.Address) (*big.Int, error) { + return _DPoS.Contract.RedeemedMiningReward(&_DPoS.CallOpts, arg0) +} + +// RegisteredSidechains is a free data retrieval call binding the contract method 0x49444b71. +// +// Solidity: function registeredSidechains(address ) view returns(bool) +func (_DPoS *DPoSCaller) RegisteredSidechains(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "registeredSidechains", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// RegisteredSidechains is a free data retrieval call binding the contract method 0x49444b71. +// +// Solidity: function registeredSidechains(address ) view returns(bool) +func (_DPoS *DPoSSession) RegisteredSidechains(arg0 common.Address) (bool, error) { + return _DPoS.Contract.RegisteredSidechains(&_DPoS.CallOpts, arg0) +} + +// RegisteredSidechains is a free data retrieval call binding the contract method 0x49444b71. +// +// Solidity: function registeredSidechains(address ) view returns(bool) +func (_DPoS *DPoSCallerSession) RegisteredSidechains(arg0 common.Address) (bool, error) { + return _DPoS.Contract.RegisteredSidechains(&_DPoS.CallOpts, arg0) +} + +// SidechainProposals is a free data retrieval call binding the contract method 0xe97b7452. +// +// Solidity: function sidechainProposals(uint256 ) view returns(address proposer, uint256 deposit, uint256 voteDeadline, address sidechainAddr, bool registered, uint8 status) +func (_DPoS *DPoSCaller) SidechainProposals(opts *bind.CallOpts, arg0 *big.Int) (struct { + Proposer common.Address + Deposit *big.Int + VoteDeadline *big.Int + SidechainAddr common.Address + Registered bool + Status uint8 +}, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "sidechainProposals", arg0) + + outstruct := new(struct { + Proposer common.Address + Deposit *big.Int + VoteDeadline *big.Int + SidechainAddr common.Address + Registered bool + Status uint8 + }) + + outstruct.Proposer = out[0].(common.Address) + outstruct.Deposit = out[1].(*big.Int) + outstruct.VoteDeadline = out[2].(*big.Int) + outstruct.SidechainAddr = out[3].(common.Address) + outstruct.Registered = out[4].(bool) + outstruct.Status = out[5].(uint8) + + return *outstruct, err + +} + +// SidechainProposals is a free data retrieval call binding the contract method 0xe97b7452. +// +// Solidity: function sidechainProposals(uint256 ) view returns(address proposer, uint256 deposit, uint256 voteDeadline, address sidechainAddr, bool registered, uint8 status) +func (_DPoS *DPoSSession) SidechainProposals(arg0 *big.Int) (struct { + Proposer common.Address + Deposit *big.Int + VoteDeadline *big.Int + SidechainAddr common.Address + Registered bool + Status uint8 +}, error) { + return _DPoS.Contract.SidechainProposals(&_DPoS.CallOpts, arg0) +} + +// SidechainProposals is a free data retrieval call binding the contract method 0xe97b7452. +// +// Solidity: function sidechainProposals(uint256 ) view returns(address proposer, uint256 deposit, uint256 voteDeadline, address sidechainAddr, bool registered, uint8 status) +func (_DPoS *DPoSCallerSession) SidechainProposals(arg0 *big.Int) (struct { + Proposer common.Address + Deposit *big.Int + VoteDeadline *big.Int + SidechainAddr common.Address + Registered bool + Status uint8 +}, error) { + return _DPoS.Contract.SidechainProposals(&_DPoS.CallOpts, arg0) +} + +// UsedPenaltyNonce is a free data retrieval call binding the contract method 0xfb878749. +// +// Solidity: function usedPenaltyNonce(uint256 ) view returns(bool) +func (_DPoS *DPoSCaller) UsedPenaltyNonce(opts *bind.CallOpts, arg0 *big.Int) (bool, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "usedPenaltyNonce", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// UsedPenaltyNonce is a free data retrieval call binding the contract method 0xfb878749. +// +// Solidity: function usedPenaltyNonce(uint256 ) view returns(bool) +func (_DPoS *DPoSSession) UsedPenaltyNonce(arg0 *big.Int) (bool, error) { + return _DPoS.Contract.UsedPenaltyNonce(&_DPoS.CallOpts, arg0) +} + +// UsedPenaltyNonce is a free data retrieval call binding the contract method 0xfb878749. +// +// Solidity: function usedPenaltyNonce(uint256 ) view returns(bool) +func (_DPoS *DPoSCallerSession) UsedPenaltyNonce(arg0 *big.Int) (bool, error) { + return _DPoS.Contract.UsedPenaltyNonce(&_DPoS.CallOpts, arg0) +} + +// ValidatorSet is a free data retrieval call binding the contract method 0xe64808f3. +// +// Solidity: function validatorSet(uint256 ) view returns(address) +func (_DPoS *DPoSCaller) ValidatorSet(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _DPoS.contract.Call(opts, &out, "validatorSet", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ValidatorSet is a free data retrieval call binding the contract method 0xe64808f3. +// +// Solidity: function validatorSet(uint256 ) view returns(address) +func (_DPoS *DPoSSession) ValidatorSet(arg0 *big.Int) (common.Address, error) { + return _DPoS.Contract.ValidatorSet(&_DPoS.CallOpts, arg0) +} + +// ValidatorSet is a free data retrieval call binding the contract method 0xe64808f3. +// +// Solidity: function validatorSet(uint256 ) view returns(address) +func (_DPoS *DPoSCallerSession) ValidatorSet(arg0 *big.Int) (common.Address, error) { + return _DPoS.Contract.ValidatorSet(&_DPoS.CallOpts, arg0) +} + +// AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4. +// +// Solidity: function addPauser(address account) returns() +func (_DPoS *DPoSTransactor) AddPauser(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "addPauser", account) +} + +// AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4. +// +// Solidity: function addPauser(address account) returns() +func (_DPoS *DPoSSession) AddPauser(account common.Address) (*types.Transaction, error) { + return _DPoS.Contract.AddPauser(&_DPoS.TransactOpts, account) +} + +// AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4. +// +// Solidity: function addPauser(address account) returns() +func (_DPoS *DPoSTransactorSession) AddPauser(account common.Address) (*types.Transaction, error) { + return _DPoS.Contract.AddPauser(&_DPoS.TransactOpts, account) +} + +// AddWhitelistAdmin is a paid mutator transaction binding the contract method 0x7362d9c8. +// +// Solidity: function addWhitelistAdmin(address account) returns() +func (_DPoS *DPoSTransactor) AddWhitelistAdmin(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "addWhitelistAdmin", account) +} + +// AddWhitelistAdmin is a paid mutator transaction binding the contract method 0x7362d9c8. +// +// Solidity: function addWhitelistAdmin(address account) returns() +func (_DPoS *DPoSSession) AddWhitelistAdmin(account common.Address) (*types.Transaction, error) { + return _DPoS.Contract.AddWhitelistAdmin(&_DPoS.TransactOpts, account) +} + +// AddWhitelistAdmin is a paid mutator transaction binding the contract method 0x7362d9c8. +// +// Solidity: function addWhitelistAdmin(address account) returns() +func (_DPoS *DPoSTransactorSession) AddWhitelistAdmin(account common.Address) (*types.Transaction, error) { + return _DPoS.Contract.AddWhitelistAdmin(&_DPoS.TransactOpts, account) +} + +// AddWhitelisted is a paid mutator transaction binding the contract method 0x10154bad. +// +// Solidity: function addWhitelisted(address account) returns() +func (_DPoS *DPoSTransactor) AddWhitelisted(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "addWhitelisted", account) +} + +// AddWhitelisted is a paid mutator transaction binding the contract method 0x10154bad. +// +// Solidity: function addWhitelisted(address account) returns() +func (_DPoS *DPoSSession) AddWhitelisted(account common.Address) (*types.Transaction, error) { + return _DPoS.Contract.AddWhitelisted(&_DPoS.TransactOpts, account) +} + +// AddWhitelisted is a paid mutator transaction binding the contract method 0x10154bad. +// +// Solidity: function addWhitelisted(address account) returns() +func (_DPoS *DPoSTransactorSession) AddWhitelisted(account common.Address) (*types.Transaction, error) { + return _DPoS.Contract.AddWhitelisted(&_DPoS.TransactOpts, account) +} + +// AnnounceIncreaseCommissionRate is a paid mutator transaction binding the contract method 0xf64f33f2. +// +// Solidity: function announceIncreaseCommissionRate(uint256 _newRate, uint256 _newLockEndTime) returns() +func (_DPoS *DPoSTransactor) AnnounceIncreaseCommissionRate(opts *bind.TransactOpts, _newRate *big.Int, _newLockEndTime *big.Int) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "announceIncreaseCommissionRate", _newRate, _newLockEndTime) +} + +// AnnounceIncreaseCommissionRate is a paid mutator transaction binding the contract method 0xf64f33f2. +// +// Solidity: function announceIncreaseCommissionRate(uint256 _newRate, uint256 _newLockEndTime) returns() +func (_DPoS *DPoSSession) AnnounceIncreaseCommissionRate(_newRate *big.Int, _newLockEndTime *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.AnnounceIncreaseCommissionRate(&_DPoS.TransactOpts, _newRate, _newLockEndTime) +} + +// AnnounceIncreaseCommissionRate is a paid mutator transaction binding the contract method 0xf64f33f2. +// +// Solidity: function announceIncreaseCommissionRate(uint256 _newRate, uint256 _newLockEndTime) returns() +func (_DPoS *DPoSTransactorSession) AnnounceIncreaseCommissionRate(_newRate *big.Int, _newLockEndTime *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.AnnounceIncreaseCommissionRate(&_DPoS.TransactOpts, _newRate, _newLockEndTime) +} + +// ClaimValidator is a paid mutator transaction binding the contract method 0x6e7cf85d. +// +// Solidity: function claimValidator() returns() +func (_DPoS *DPoSTransactor) ClaimValidator(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "claimValidator") +} + +// ClaimValidator is a paid mutator transaction binding the contract method 0x6e7cf85d. +// +// Solidity: function claimValidator() returns() +func (_DPoS *DPoSSession) ClaimValidator() (*types.Transaction, error) { + return _DPoS.Contract.ClaimValidator(&_DPoS.TransactOpts) +} + +// ClaimValidator is a paid mutator transaction binding the contract method 0x6e7cf85d. +// +// Solidity: function claimValidator() returns() +func (_DPoS *DPoSTransactorSession) ClaimValidator() (*types.Transaction, error) { + return _DPoS.Contract.ClaimValidator(&_DPoS.TransactOpts) +} + +// ConfirmIncreaseCommissionRate is a paid mutator transaction binding the contract method 0x6e997565. +// +// Solidity: function confirmIncreaseCommissionRate() returns() +func (_DPoS *DPoSTransactor) ConfirmIncreaseCommissionRate(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "confirmIncreaseCommissionRate") +} + +// ConfirmIncreaseCommissionRate is a paid mutator transaction binding the contract method 0x6e997565. +// +// Solidity: function confirmIncreaseCommissionRate() returns() +func (_DPoS *DPoSSession) ConfirmIncreaseCommissionRate() (*types.Transaction, error) { + return _DPoS.Contract.ConfirmIncreaseCommissionRate(&_DPoS.TransactOpts) +} + +// ConfirmIncreaseCommissionRate is a paid mutator transaction binding the contract method 0x6e997565. +// +// Solidity: function confirmIncreaseCommissionRate() returns() +func (_DPoS *DPoSTransactorSession) ConfirmIncreaseCommissionRate() (*types.Transaction, error) { + return _DPoS.Contract.ConfirmIncreaseCommissionRate(&_DPoS.TransactOpts) +} + +// ConfirmParamProposal is a paid mutator transaction binding the contract method 0x934a18ec. +// +// Solidity: function confirmParamProposal(uint256 _proposalId) returns() +func (_DPoS *DPoSTransactor) ConfirmParamProposal(opts *bind.TransactOpts, _proposalId *big.Int) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "confirmParamProposal", _proposalId) +} + +// ConfirmParamProposal is a paid mutator transaction binding the contract method 0x934a18ec. +// +// Solidity: function confirmParamProposal(uint256 _proposalId) returns() +func (_DPoS *DPoSSession) ConfirmParamProposal(_proposalId *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.ConfirmParamProposal(&_DPoS.TransactOpts, _proposalId) +} + +// ConfirmParamProposal is a paid mutator transaction binding the contract method 0x934a18ec. +// +// Solidity: function confirmParamProposal(uint256 _proposalId) returns() +func (_DPoS *DPoSTransactorSession) ConfirmParamProposal(_proposalId *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.ConfirmParamProposal(&_DPoS.TransactOpts, _proposalId) +} + +// ConfirmSidechainProposal is a paid mutator transaction binding the contract method 0x1a06f737. +// +// Solidity: function confirmSidechainProposal(uint256 _proposalId) returns() +func (_DPoS *DPoSTransactor) ConfirmSidechainProposal(opts *bind.TransactOpts, _proposalId *big.Int) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "confirmSidechainProposal", _proposalId) +} + +// ConfirmSidechainProposal is a paid mutator transaction binding the contract method 0x1a06f737. +// +// Solidity: function confirmSidechainProposal(uint256 _proposalId) returns() +func (_DPoS *DPoSSession) ConfirmSidechainProposal(_proposalId *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.ConfirmSidechainProposal(&_DPoS.TransactOpts, _proposalId) +} + +// ConfirmSidechainProposal is a paid mutator transaction binding the contract method 0x1a06f737. +// +// Solidity: function confirmSidechainProposal(uint256 _proposalId) returns() +func (_DPoS *DPoSTransactorSession) ConfirmSidechainProposal(_proposalId *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.ConfirmSidechainProposal(&_DPoS.TransactOpts, _proposalId) +} + +// ConfirmUnbondedCandidate is a paid mutator transaction binding the contract method 0xc7ec2f35. +// +// Solidity: function confirmUnbondedCandidate(address _candidateAddr) returns() +func (_DPoS *DPoSTransactor) ConfirmUnbondedCandidate(opts *bind.TransactOpts, _candidateAddr common.Address) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "confirmUnbondedCandidate", _candidateAddr) +} + +// ConfirmUnbondedCandidate is a paid mutator transaction binding the contract method 0xc7ec2f35. +// +// Solidity: function confirmUnbondedCandidate(address _candidateAddr) returns() +func (_DPoS *DPoSSession) ConfirmUnbondedCandidate(_candidateAddr common.Address) (*types.Transaction, error) { + return _DPoS.Contract.ConfirmUnbondedCandidate(&_DPoS.TransactOpts, _candidateAddr) +} + +// ConfirmUnbondedCandidate is a paid mutator transaction binding the contract method 0xc7ec2f35. +// +// Solidity: function confirmUnbondedCandidate(address _candidateAddr) returns() +func (_DPoS *DPoSTransactorSession) ConfirmUnbondedCandidate(_candidateAddr common.Address) (*types.Transaction, error) { + return _DPoS.Contract.ConfirmUnbondedCandidate(&_DPoS.TransactOpts, _candidateAddr) +} + +// ConfirmWithdraw is a paid mutator transaction binding the contract method 0xd2bfc1c7. +// +// Solidity: function confirmWithdraw(address _candidateAddr) returns() +func (_DPoS *DPoSTransactor) ConfirmWithdraw(opts *bind.TransactOpts, _candidateAddr common.Address) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "confirmWithdraw", _candidateAddr) +} + +// ConfirmWithdraw is a paid mutator transaction binding the contract method 0xd2bfc1c7. +// +// Solidity: function confirmWithdraw(address _candidateAddr) returns() +func (_DPoS *DPoSSession) ConfirmWithdraw(_candidateAddr common.Address) (*types.Transaction, error) { + return _DPoS.Contract.ConfirmWithdraw(&_DPoS.TransactOpts, _candidateAddr) +} + +// ConfirmWithdraw is a paid mutator transaction binding the contract method 0xd2bfc1c7. +// +// Solidity: function confirmWithdraw(address _candidateAddr) returns() +func (_DPoS *DPoSTransactorSession) ConfirmWithdraw(_candidateAddr common.Address) (*types.Transaction, error) { + return _DPoS.Contract.ConfirmWithdraw(&_DPoS.TransactOpts, _candidateAddr) +} + +// ContributeToMiningPool is a paid mutator transaction binding the contract method 0x4b7dba6b. +// +// Solidity: function contributeToMiningPool(uint256 _amount) returns() +func (_DPoS *DPoSTransactor) ContributeToMiningPool(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "contributeToMiningPool", _amount) +} + +// ContributeToMiningPool is a paid mutator transaction binding the contract method 0x4b7dba6b. +// +// Solidity: function contributeToMiningPool(uint256 _amount) returns() +func (_DPoS *DPoSSession) ContributeToMiningPool(_amount *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.ContributeToMiningPool(&_DPoS.TransactOpts, _amount) +} + +// ContributeToMiningPool is a paid mutator transaction binding the contract method 0x4b7dba6b. +// +// Solidity: function contributeToMiningPool(uint256 _amount) returns() +func (_DPoS *DPoSTransactorSession) ContributeToMiningPool(_amount *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.ContributeToMiningPool(&_DPoS.TransactOpts, _amount) +} + +// CreateParamProposal is a paid mutator transaction binding the contract method 0x3090c0e9. +// +// Solidity: function createParamProposal(uint256 _record, uint256 _value) returns() +func (_DPoS *DPoSTransactor) CreateParamProposal(opts *bind.TransactOpts, _record *big.Int, _value *big.Int) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "createParamProposal", _record, _value) +} + +// CreateParamProposal is a paid mutator transaction binding the contract method 0x3090c0e9. +// +// Solidity: function createParamProposal(uint256 _record, uint256 _value) returns() +func (_DPoS *DPoSSession) CreateParamProposal(_record *big.Int, _value *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.CreateParamProposal(&_DPoS.TransactOpts, _record, _value) +} + +// CreateParamProposal is a paid mutator transaction binding the contract method 0x3090c0e9. +// +// Solidity: function createParamProposal(uint256 _record, uint256 _value) returns() +func (_DPoS *DPoSTransactorSession) CreateParamProposal(_record *big.Int, _value *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.CreateParamProposal(&_DPoS.TransactOpts, _record, _value) +} + +// CreateSidechainProposal is a paid mutator transaction binding the contract method 0xe433c1ca. +// +// Solidity: function createSidechainProposal(address _sidechainAddr, bool _registered) returns() +func (_DPoS *DPoSTransactor) CreateSidechainProposal(opts *bind.TransactOpts, _sidechainAddr common.Address, _registered bool) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "createSidechainProposal", _sidechainAddr, _registered) +} + +// CreateSidechainProposal is a paid mutator transaction binding the contract method 0xe433c1ca. +// +// Solidity: function createSidechainProposal(address _sidechainAddr, bool _registered) returns() +func (_DPoS *DPoSSession) CreateSidechainProposal(_sidechainAddr common.Address, _registered bool) (*types.Transaction, error) { + return _DPoS.Contract.CreateSidechainProposal(&_DPoS.TransactOpts, _sidechainAddr, _registered) +} + +// CreateSidechainProposal is a paid mutator transaction binding the contract method 0xe433c1ca. +// +// Solidity: function createSidechainProposal(address _sidechainAddr, bool _registered) returns() +func (_DPoS *DPoSTransactorSession) CreateSidechainProposal(_sidechainAddr common.Address, _registered bool) (*types.Transaction, error) { + return _DPoS.Contract.CreateSidechainProposal(&_DPoS.TransactOpts, _sidechainAddr, _registered) +} + +// Delegate is a paid mutator transaction binding the contract method 0x026e402b. +// +// Solidity: function delegate(address _candidateAddr, uint256 _amount) returns() +func (_DPoS *DPoSTransactor) Delegate(opts *bind.TransactOpts, _candidateAddr common.Address, _amount *big.Int) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "delegate", _candidateAddr, _amount) +} + +// Delegate is a paid mutator transaction binding the contract method 0x026e402b. +// +// Solidity: function delegate(address _candidateAddr, uint256 _amount) returns() +func (_DPoS *DPoSSession) Delegate(_candidateAddr common.Address, _amount *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.Delegate(&_DPoS.TransactOpts, _candidateAddr, _amount) +} + +// Delegate is a paid mutator transaction binding the contract method 0x026e402b. +// +// Solidity: function delegate(address _candidateAddr, uint256 _amount) returns() +func (_DPoS *DPoSTransactorSession) Delegate(_candidateAddr common.Address, _amount *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.Delegate(&_DPoS.TransactOpts, _candidateAddr, _amount) +} + +// DrainToken is a paid mutator transaction binding the contract method 0x145aa116. +// +// Solidity: function drainToken(uint256 _amount) returns() +func (_DPoS *DPoSTransactor) DrainToken(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "drainToken", _amount) +} + +// DrainToken is a paid mutator transaction binding the contract method 0x145aa116. +// +// Solidity: function drainToken(uint256 _amount) returns() +func (_DPoS *DPoSSession) DrainToken(_amount *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.DrainToken(&_DPoS.TransactOpts, _amount) +} + +// DrainToken is a paid mutator transaction binding the contract method 0x145aa116. +// +// Solidity: function drainToken(uint256 _amount) returns() +func (_DPoS *DPoSTransactorSession) DrainToken(_amount *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.DrainToken(&_DPoS.TransactOpts, _amount) +} + +// InitializeCandidate is a paid mutator transaction binding the contract method 0xc1e16718. +// +// Solidity: function initializeCandidate(uint256 _minSelfStake, uint256 _commissionRate, uint256 _rateLockEndTime) returns() +func (_DPoS *DPoSTransactor) InitializeCandidate(opts *bind.TransactOpts, _minSelfStake *big.Int, _commissionRate *big.Int, _rateLockEndTime *big.Int) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "initializeCandidate", _minSelfStake, _commissionRate, _rateLockEndTime) +} + +// InitializeCandidate is a paid mutator transaction binding the contract method 0xc1e16718. +// +// Solidity: function initializeCandidate(uint256 _minSelfStake, uint256 _commissionRate, uint256 _rateLockEndTime) returns() +func (_DPoS *DPoSSession) InitializeCandidate(_minSelfStake *big.Int, _commissionRate *big.Int, _rateLockEndTime *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.InitializeCandidate(&_DPoS.TransactOpts, _minSelfStake, _commissionRate, _rateLockEndTime) +} + +// InitializeCandidate is a paid mutator transaction binding the contract method 0xc1e16718. +// +// Solidity: function initializeCandidate(uint256 _minSelfStake, uint256 _commissionRate, uint256 _rateLockEndTime) returns() +func (_DPoS *DPoSTransactorSession) InitializeCandidate(_minSelfStake *big.Int, _commissionRate *big.Int, _rateLockEndTime *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.InitializeCandidate(&_DPoS.TransactOpts, _minSelfStake, _commissionRate, _rateLockEndTime) +} + +// IntendWithdraw is a paid mutator transaction binding the contract method 0x785f8ffd. +// +// Solidity: function intendWithdraw(address _candidateAddr, uint256 _amount) returns() +func (_DPoS *DPoSTransactor) IntendWithdraw(opts *bind.TransactOpts, _candidateAddr common.Address, _amount *big.Int) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "intendWithdraw", _candidateAddr, _amount) +} + +// IntendWithdraw is a paid mutator transaction binding the contract method 0x785f8ffd. +// +// Solidity: function intendWithdraw(address _candidateAddr, uint256 _amount) returns() +func (_DPoS *DPoSSession) IntendWithdraw(_candidateAddr common.Address, _amount *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.IntendWithdraw(&_DPoS.TransactOpts, _candidateAddr, _amount) +} + +// IntendWithdraw is a paid mutator transaction binding the contract method 0x785f8ffd. +// +// Solidity: function intendWithdraw(address _candidateAddr, uint256 _amount) returns() +func (_DPoS *DPoSTransactorSession) IntendWithdraw(_candidateAddr common.Address, _amount *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.IntendWithdraw(&_DPoS.TransactOpts, _candidateAddr, _amount) +} + +// NonIncreaseCommissionRate is a paid mutator transaction binding the contract method 0xbe57959d. +// +// Solidity: function nonIncreaseCommissionRate(uint256 _newRate, uint256 _newLockEndTime) returns() +func (_DPoS *DPoSTransactor) NonIncreaseCommissionRate(opts *bind.TransactOpts, _newRate *big.Int, _newLockEndTime *big.Int) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "nonIncreaseCommissionRate", _newRate, _newLockEndTime) +} + +// NonIncreaseCommissionRate is a paid mutator transaction binding the contract method 0xbe57959d. +// +// Solidity: function nonIncreaseCommissionRate(uint256 _newRate, uint256 _newLockEndTime) returns() +func (_DPoS *DPoSSession) NonIncreaseCommissionRate(_newRate *big.Int, _newLockEndTime *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.NonIncreaseCommissionRate(&_DPoS.TransactOpts, _newRate, _newLockEndTime) +} + +// NonIncreaseCommissionRate is a paid mutator transaction binding the contract method 0xbe57959d. +// +// Solidity: function nonIncreaseCommissionRate(uint256 _newRate, uint256 _newLockEndTime) returns() +func (_DPoS *DPoSTransactorSession) NonIncreaseCommissionRate(_newRate *big.Int, _newLockEndTime *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.NonIncreaseCommissionRate(&_DPoS.TransactOpts, _newRate, _newLockEndTime) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_DPoS *DPoSTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_DPoS *DPoSSession) Pause() (*types.Transaction, error) { + return _DPoS.Contract.Pause(&_DPoS.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_DPoS *DPoSTransactorSession) Pause() (*types.Transaction, error) { + return _DPoS.Contract.Pause(&_DPoS.TransactOpts) +} + +// RedeemMiningReward is a paid mutator transaction binding the contract method 0x1f7b0886. +// +// Solidity: function redeemMiningReward(address _receiver, uint256 _cumulativeReward) returns() +func (_DPoS *DPoSTransactor) RedeemMiningReward(opts *bind.TransactOpts, _receiver common.Address, _cumulativeReward *big.Int) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "redeemMiningReward", _receiver, _cumulativeReward) +} + +// RedeemMiningReward is a paid mutator transaction binding the contract method 0x1f7b0886. +// +// Solidity: function redeemMiningReward(address _receiver, uint256 _cumulativeReward) returns() +func (_DPoS *DPoSSession) RedeemMiningReward(_receiver common.Address, _cumulativeReward *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.RedeemMiningReward(&_DPoS.TransactOpts, _receiver, _cumulativeReward) +} + +// RedeemMiningReward is a paid mutator transaction binding the contract method 0x1f7b0886. +// +// Solidity: function redeemMiningReward(address _receiver, uint256 _cumulativeReward) returns() +func (_DPoS *DPoSTransactorSession) RedeemMiningReward(_receiver common.Address, _cumulativeReward *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.RedeemMiningReward(&_DPoS.TransactOpts, _receiver, _cumulativeReward) +} + +// RegisterSidechain is a paid mutator transaction binding the contract method 0xaa09fbae. +// +// Solidity: function registerSidechain(address _addr) returns() +func (_DPoS *DPoSTransactor) RegisterSidechain(opts *bind.TransactOpts, _addr common.Address) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "registerSidechain", _addr) +} + +// RegisterSidechain is a paid mutator transaction binding the contract method 0xaa09fbae. +// +// Solidity: function registerSidechain(address _addr) returns() +func (_DPoS *DPoSSession) RegisterSidechain(_addr common.Address) (*types.Transaction, error) { + return _DPoS.Contract.RegisterSidechain(&_DPoS.TransactOpts, _addr) +} + +// RegisterSidechain is a paid mutator transaction binding the contract method 0xaa09fbae. +// +// Solidity: function registerSidechain(address _addr) returns() +func (_DPoS *DPoSTransactorSession) RegisterSidechain(_addr common.Address) (*types.Transaction, error) { + return _DPoS.Contract.RegisterSidechain(&_DPoS.TransactOpts, _addr) +} + +// RemoveWhitelisted is a paid mutator transaction binding the contract method 0x291d9549. +// +// Solidity: function removeWhitelisted(address account) returns() +func (_DPoS *DPoSTransactor) RemoveWhitelisted(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "removeWhitelisted", account) +} + +// RemoveWhitelisted is a paid mutator transaction binding the contract method 0x291d9549. +// +// Solidity: function removeWhitelisted(address account) returns() +func (_DPoS *DPoSSession) RemoveWhitelisted(account common.Address) (*types.Transaction, error) { + return _DPoS.Contract.RemoveWhitelisted(&_DPoS.TransactOpts, account) +} + +// RemoveWhitelisted is a paid mutator transaction binding the contract method 0x291d9549. +// +// Solidity: function removeWhitelisted(address account) returns() +func (_DPoS *DPoSTransactorSession) RemoveWhitelisted(account common.Address) (*types.Transaction, error) { + return _DPoS.Contract.RemoveWhitelisted(&_DPoS.TransactOpts, account) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_DPoS *DPoSTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_DPoS *DPoSSession) RenounceOwnership() (*types.Transaction, error) { + return _DPoS.Contract.RenounceOwnership(&_DPoS.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_DPoS *DPoSTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _DPoS.Contract.RenounceOwnership(&_DPoS.TransactOpts) +} + +// RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d. +// +// Solidity: function renouncePauser() returns() +func (_DPoS *DPoSTransactor) RenouncePauser(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "renouncePauser") +} + +// RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d. +// +// Solidity: function renouncePauser() returns() +func (_DPoS *DPoSSession) RenouncePauser() (*types.Transaction, error) { + return _DPoS.Contract.RenouncePauser(&_DPoS.TransactOpts) +} + +// RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d. +// +// Solidity: function renouncePauser() returns() +func (_DPoS *DPoSTransactorSession) RenouncePauser() (*types.Transaction, error) { + return _DPoS.Contract.RenouncePauser(&_DPoS.TransactOpts) +} + +// RenounceWhitelistAdmin is a paid mutator transaction binding the contract method 0x4c5a628c. +// +// Solidity: function renounceWhitelistAdmin() returns() +func (_DPoS *DPoSTransactor) RenounceWhitelistAdmin(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "renounceWhitelistAdmin") +} + +// RenounceWhitelistAdmin is a paid mutator transaction binding the contract method 0x4c5a628c. +// +// Solidity: function renounceWhitelistAdmin() returns() +func (_DPoS *DPoSSession) RenounceWhitelistAdmin() (*types.Transaction, error) { + return _DPoS.Contract.RenounceWhitelistAdmin(&_DPoS.TransactOpts) +} + +// RenounceWhitelistAdmin is a paid mutator transaction binding the contract method 0x4c5a628c. +// +// Solidity: function renounceWhitelistAdmin() returns() +func (_DPoS *DPoSTransactorSession) RenounceWhitelistAdmin() (*types.Transaction, error) { + return _DPoS.Contract.RenounceWhitelistAdmin(&_DPoS.TransactOpts) +} + +// RenounceWhitelisted is a paid mutator transaction binding the contract method 0xd6cd9473. +// +// Solidity: function renounceWhitelisted() returns() +func (_DPoS *DPoSTransactor) RenounceWhitelisted(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "renounceWhitelisted") +} + +// RenounceWhitelisted is a paid mutator transaction binding the contract method 0xd6cd9473. +// +// Solidity: function renounceWhitelisted() returns() +func (_DPoS *DPoSSession) RenounceWhitelisted() (*types.Transaction, error) { + return _DPoS.Contract.RenounceWhitelisted(&_DPoS.TransactOpts) +} + +// RenounceWhitelisted is a paid mutator transaction binding the contract method 0xd6cd9473. +// +// Solidity: function renounceWhitelisted() returns() +func (_DPoS *DPoSTransactorSession) RenounceWhitelisted() (*types.Transaction, error) { + return _DPoS.Contract.RenounceWhitelisted(&_DPoS.TransactOpts) +} + +// Slash is a paid mutator transaction binding the contract method 0x5e47655f. +// +// Solidity: function slash(bytes _penaltyRequest) returns() +func (_DPoS *DPoSTransactor) Slash(opts *bind.TransactOpts, _penaltyRequest []byte) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "slash", _penaltyRequest) +} + +// Slash is a paid mutator transaction binding the contract method 0x5e47655f. +// +// Solidity: function slash(bytes _penaltyRequest) returns() +func (_DPoS *DPoSSession) Slash(_penaltyRequest []byte) (*types.Transaction, error) { + return _DPoS.Contract.Slash(&_DPoS.TransactOpts, _penaltyRequest) +} + +// Slash is a paid mutator transaction binding the contract method 0x5e47655f. +// +// Solidity: function slash(bytes _penaltyRequest) returns() +func (_DPoS *DPoSTransactorSession) Slash(_penaltyRequest []byte) (*types.Transaction, error) { + return _DPoS.Contract.Slash(&_DPoS.TransactOpts, _penaltyRequest) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_DPoS *DPoSTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_DPoS *DPoSSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _DPoS.Contract.TransferOwnership(&_DPoS.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_DPoS *DPoSTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _DPoS.Contract.TransferOwnership(&_DPoS.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_DPoS *DPoSTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_DPoS *DPoSSession) Unpause() (*types.Transaction, error) { + return _DPoS.Contract.Unpause(&_DPoS.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_DPoS *DPoSTransactorSession) Unpause() (*types.Transaction, error) { + return _DPoS.Contract.Unpause(&_DPoS.TransactOpts) +} + +// UpdateEnableSlash is a paid mutator transaction binding the contract method 0x3361e90a. +// +// Solidity: function updateEnableSlash(bool _enable) returns() +func (_DPoS *DPoSTransactor) UpdateEnableSlash(opts *bind.TransactOpts, _enable bool) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "updateEnableSlash", _enable) +} + +// UpdateEnableSlash is a paid mutator transaction binding the contract method 0x3361e90a. +// +// Solidity: function updateEnableSlash(bool _enable) returns() +func (_DPoS *DPoSSession) UpdateEnableSlash(_enable bool) (*types.Transaction, error) { + return _DPoS.Contract.UpdateEnableSlash(&_DPoS.TransactOpts, _enable) +} + +// UpdateEnableSlash is a paid mutator transaction binding the contract method 0x3361e90a. +// +// Solidity: function updateEnableSlash(bool _enable) returns() +func (_DPoS *DPoSTransactorSession) UpdateEnableSlash(_enable bool) (*types.Transaction, error) { + return _DPoS.Contract.UpdateEnableSlash(&_DPoS.TransactOpts, _enable) +} + +// UpdateEnableWhitelist is a paid mutator transaction binding the contract method 0x2cb57c48. +// +// Solidity: function updateEnableWhitelist(bool _enable) returns() +func (_DPoS *DPoSTransactor) UpdateEnableWhitelist(opts *bind.TransactOpts, _enable bool) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "updateEnableWhitelist", _enable) +} + +// UpdateEnableWhitelist is a paid mutator transaction binding the contract method 0x2cb57c48. +// +// Solidity: function updateEnableWhitelist(bool _enable) returns() +func (_DPoS *DPoSSession) UpdateEnableWhitelist(_enable bool) (*types.Transaction, error) { + return _DPoS.Contract.UpdateEnableWhitelist(&_DPoS.TransactOpts, _enable) +} + +// UpdateEnableWhitelist is a paid mutator transaction binding the contract method 0x2cb57c48. +// +// Solidity: function updateEnableWhitelist(bool _enable) returns() +func (_DPoS *DPoSTransactorSession) UpdateEnableWhitelist(_enable bool) (*types.Transaction, error) { + return _DPoS.Contract.UpdateEnableWhitelist(&_DPoS.TransactOpts, _enable) +} + +// UpdateMinSelfStake is a paid mutator transaction binding the contract method 0x866c4b17. +// +// Solidity: function updateMinSelfStake(uint256 _minSelfStake) returns() +func (_DPoS *DPoSTransactor) UpdateMinSelfStake(opts *bind.TransactOpts, _minSelfStake *big.Int) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "updateMinSelfStake", _minSelfStake) +} + +// UpdateMinSelfStake is a paid mutator transaction binding the contract method 0x866c4b17. +// +// Solidity: function updateMinSelfStake(uint256 _minSelfStake) returns() +func (_DPoS *DPoSSession) UpdateMinSelfStake(_minSelfStake *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.UpdateMinSelfStake(&_DPoS.TransactOpts, _minSelfStake) +} + +// UpdateMinSelfStake is a paid mutator transaction binding the contract method 0x866c4b17. +// +// Solidity: function updateMinSelfStake(uint256 _minSelfStake) returns() +func (_DPoS *DPoSTransactorSession) UpdateMinSelfStake(_minSelfStake *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.UpdateMinSelfStake(&_DPoS.TransactOpts, _minSelfStake) +} + +// ValidateMultiSigMessage is a paid mutator transaction binding the contract method 0x1c0efd9d. +// +// Solidity: function validateMultiSigMessage(bytes _request) returns(bool) +func (_DPoS *DPoSTransactor) ValidateMultiSigMessage(opts *bind.TransactOpts, _request []byte) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "validateMultiSigMessage", _request) +} + +// ValidateMultiSigMessage is a paid mutator transaction binding the contract method 0x1c0efd9d. +// +// Solidity: function validateMultiSigMessage(bytes _request) returns(bool) +func (_DPoS *DPoSSession) ValidateMultiSigMessage(_request []byte) (*types.Transaction, error) { + return _DPoS.Contract.ValidateMultiSigMessage(&_DPoS.TransactOpts, _request) +} + +// ValidateMultiSigMessage is a paid mutator transaction binding the contract method 0x1c0efd9d. +// +// Solidity: function validateMultiSigMessage(bytes _request) returns(bool) +func (_DPoS *DPoSTransactorSession) ValidateMultiSigMessage(_request []byte) (*types.Transaction, error) { + return _DPoS.Contract.ValidateMultiSigMessage(&_DPoS.TransactOpts, _request) +} + +// VoteParam is a paid mutator transaction binding the contract method 0x25ed6b35. +// +// Solidity: function voteParam(uint256 _proposalId, uint8 _vote) returns() +func (_DPoS *DPoSTransactor) VoteParam(opts *bind.TransactOpts, _proposalId *big.Int, _vote uint8) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "voteParam", _proposalId, _vote) +} + +// VoteParam is a paid mutator transaction binding the contract method 0x25ed6b35. +// +// Solidity: function voteParam(uint256 _proposalId, uint8 _vote) returns() +func (_DPoS *DPoSSession) VoteParam(_proposalId *big.Int, _vote uint8) (*types.Transaction, error) { + return _DPoS.Contract.VoteParam(&_DPoS.TransactOpts, _proposalId, _vote) +} + +// VoteParam is a paid mutator transaction binding the contract method 0x25ed6b35. +// +// Solidity: function voteParam(uint256 _proposalId, uint8 _vote) returns() +func (_DPoS *DPoSTransactorSession) VoteParam(_proposalId *big.Int, _vote uint8) (*types.Transaction, error) { + return _DPoS.Contract.VoteParam(&_DPoS.TransactOpts, _proposalId, _vote) +} + +// VoteSidechain is a paid mutator transaction binding the contract method 0x85bfe017. +// +// Solidity: function voteSidechain(uint256 _proposalId, uint8 _vote) returns() +func (_DPoS *DPoSTransactor) VoteSidechain(opts *bind.TransactOpts, _proposalId *big.Int, _vote uint8) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "voteSidechain", _proposalId, _vote) +} + +// VoteSidechain is a paid mutator transaction binding the contract method 0x85bfe017. +// +// Solidity: function voteSidechain(uint256 _proposalId, uint8 _vote) returns() +func (_DPoS *DPoSSession) VoteSidechain(_proposalId *big.Int, _vote uint8) (*types.Transaction, error) { + return _DPoS.Contract.VoteSidechain(&_DPoS.TransactOpts, _proposalId, _vote) +} + +// VoteSidechain is a paid mutator transaction binding the contract method 0x85bfe017. +// +// Solidity: function voteSidechain(uint256 _proposalId, uint8 _vote) returns() +func (_DPoS *DPoSTransactorSession) VoteSidechain(_proposalId *big.Int, _vote uint8) (*types.Transaction, error) { + return _DPoS.Contract.VoteSidechain(&_DPoS.TransactOpts, _proposalId, _vote) +} + +// WithdrawFromUnbondedCandidate is a paid mutator transaction binding the contract method 0xbb9053d0. +// +// Solidity: function withdrawFromUnbondedCandidate(address _candidateAddr, uint256 _amount) returns() +func (_DPoS *DPoSTransactor) WithdrawFromUnbondedCandidate(opts *bind.TransactOpts, _candidateAddr common.Address, _amount *big.Int) (*types.Transaction, error) { + return _DPoS.contract.Transact(opts, "withdrawFromUnbondedCandidate", _candidateAddr, _amount) +} + +// WithdrawFromUnbondedCandidate is a paid mutator transaction binding the contract method 0xbb9053d0. +// +// Solidity: function withdrawFromUnbondedCandidate(address _candidateAddr, uint256 _amount) returns() +func (_DPoS *DPoSSession) WithdrawFromUnbondedCandidate(_candidateAddr common.Address, _amount *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.WithdrawFromUnbondedCandidate(&_DPoS.TransactOpts, _candidateAddr, _amount) +} + +// WithdrawFromUnbondedCandidate is a paid mutator transaction binding the contract method 0xbb9053d0. +// +// Solidity: function withdrawFromUnbondedCandidate(address _candidateAddr, uint256 _amount) returns() +func (_DPoS *DPoSTransactorSession) WithdrawFromUnbondedCandidate(_candidateAddr common.Address, _amount *big.Int) (*types.Transaction, error) { + return _DPoS.Contract.WithdrawFromUnbondedCandidate(&_DPoS.TransactOpts, _candidateAddr, _amount) +} + +// DPoSCandidateUnbondedIterator is returned from FilterCandidateUnbonded and is used to iterate over the raw logs and unpacked data for CandidateUnbonded events raised by the DPoS contract. +type DPoSCandidateUnbondedIterator struct { + Event *DPoSCandidateUnbonded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSCandidateUnbondedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSCandidateUnbonded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSCandidateUnbonded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSCandidateUnbondedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSCandidateUnbondedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSCandidateUnbonded represents a CandidateUnbonded event raised by the DPoS contract. +type DPoSCandidateUnbonded struct { + Candidate common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCandidateUnbonded is a free log retrieval operation binding the contract event 0xbe85a9a7aa606febeaa35606e49cd7324c63cf970f4f5fd0c7e983f42b20b219. +// +// Solidity: event CandidateUnbonded(address indexed candidate) +func (_DPoS *DPoSFilterer) FilterCandidateUnbonded(opts *bind.FilterOpts, candidate []common.Address) (*DPoSCandidateUnbondedIterator, error) { + + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "CandidateUnbonded", candidateRule) + if err != nil { + return nil, err + } + return &DPoSCandidateUnbondedIterator{contract: _DPoS.contract, event: "CandidateUnbonded", logs: logs, sub: sub}, nil +} + +// WatchCandidateUnbonded is a free log subscription operation binding the contract event 0xbe85a9a7aa606febeaa35606e49cd7324c63cf970f4f5fd0c7e983f42b20b219. +// +// Solidity: event CandidateUnbonded(address indexed candidate) +func (_DPoS *DPoSFilterer) WatchCandidateUnbonded(opts *bind.WatchOpts, sink chan<- *DPoSCandidateUnbonded, candidate []common.Address) (event.Subscription, error) { + + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "CandidateUnbonded", candidateRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSCandidateUnbonded) + if err := _DPoS.contract.UnpackLog(event, "CandidateUnbonded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCandidateUnbonded is a log parse operation binding the contract event 0xbe85a9a7aa606febeaa35606e49cd7324c63cf970f4f5fd0c7e983f42b20b219. +// +// Solidity: event CandidateUnbonded(address indexed candidate) +func (_DPoS *DPoSFilterer) ParseCandidateUnbonded(log types.Log) (*DPoSCandidateUnbonded, error) { + event := new(DPoSCandidateUnbonded) + if err := _DPoS.contract.UnpackLog(event, "CandidateUnbonded", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSCommissionRateAnnouncementIterator is returned from FilterCommissionRateAnnouncement and is used to iterate over the raw logs and unpacked data for CommissionRateAnnouncement events raised by the DPoS contract. +type DPoSCommissionRateAnnouncementIterator struct { + Event *DPoSCommissionRateAnnouncement // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSCommissionRateAnnouncementIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSCommissionRateAnnouncement) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSCommissionRateAnnouncement) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSCommissionRateAnnouncementIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSCommissionRateAnnouncementIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSCommissionRateAnnouncement represents a CommissionRateAnnouncement event raised by the DPoS contract. +type DPoSCommissionRateAnnouncement struct { + Candidate common.Address + AnnouncedRate *big.Int + AnnouncedLockEndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCommissionRateAnnouncement is a free log retrieval operation binding the contract event 0xd1388fca1fdda1adbe79c9535b48b22e71aa7815469abb61cdbab2a7b4ccd28a. +// +// Solidity: event CommissionRateAnnouncement(address indexed candidate, uint256 announcedRate, uint256 announcedLockEndTime) +func (_DPoS *DPoSFilterer) FilterCommissionRateAnnouncement(opts *bind.FilterOpts, candidate []common.Address) (*DPoSCommissionRateAnnouncementIterator, error) { + + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "CommissionRateAnnouncement", candidateRule) + if err != nil { + return nil, err + } + return &DPoSCommissionRateAnnouncementIterator{contract: _DPoS.contract, event: "CommissionRateAnnouncement", logs: logs, sub: sub}, nil +} + +// WatchCommissionRateAnnouncement is a free log subscription operation binding the contract event 0xd1388fca1fdda1adbe79c9535b48b22e71aa7815469abb61cdbab2a7b4ccd28a. +// +// Solidity: event CommissionRateAnnouncement(address indexed candidate, uint256 announcedRate, uint256 announcedLockEndTime) +func (_DPoS *DPoSFilterer) WatchCommissionRateAnnouncement(opts *bind.WatchOpts, sink chan<- *DPoSCommissionRateAnnouncement, candidate []common.Address) (event.Subscription, error) { + + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "CommissionRateAnnouncement", candidateRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSCommissionRateAnnouncement) + if err := _DPoS.contract.UnpackLog(event, "CommissionRateAnnouncement", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCommissionRateAnnouncement is a log parse operation binding the contract event 0xd1388fca1fdda1adbe79c9535b48b22e71aa7815469abb61cdbab2a7b4ccd28a. +// +// Solidity: event CommissionRateAnnouncement(address indexed candidate, uint256 announcedRate, uint256 announcedLockEndTime) +func (_DPoS *DPoSFilterer) ParseCommissionRateAnnouncement(log types.Log) (*DPoSCommissionRateAnnouncement, error) { + event := new(DPoSCommissionRateAnnouncement) + if err := _DPoS.contract.UnpackLog(event, "CommissionRateAnnouncement", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSCompensateIterator is returned from FilterCompensate and is used to iterate over the raw logs and unpacked data for Compensate events raised by the DPoS contract. +type DPoSCompensateIterator struct { + Event *DPoSCompensate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSCompensateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSCompensate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSCompensate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSCompensateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSCompensateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSCompensate represents a Compensate event raised by the DPoS contract. +type DPoSCompensate struct { + Indemnitee common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCompensate is a free log retrieval operation binding the contract event 0x92c2a7173158b7618078365b4ad89fd1f774ae4aa04f39e10b966b47f469d34b. +// +// Solidity: event Compensate(address indexed indemnitee, uint256 amount) +func (_DPoS *DPoSFilterer) FilterCompensate(opts *bind.FilterOpts, indemnitee []common.Address) (*DPoSCompensateIterator, error) { + + var indemniteeRule []interface{} + for _, indemniteeItem := range indemnitee { + indemniteeRule = append(indemniteeRule, indemniteeItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "Compensate", indemniteeRule) + if err != nil { + return nil, err + } + return &DPoSCompensateIterator{contract: _DPoS.contract, event: "Compensate", logs: logs, sub: sub}, nil +} + +// WatchCompensate is a free log subscription operation binding the contract event 0x92c2a7173158b7618078365b4ad89fd1f774ae4aa04f39e10b966b47f469d34b. +// +// Solidity: event Compensate(address indexed indemnitee, uint256 amount) +func (_DPoS *DPoSFilterer) WatchCompensate(opts *bind.WatchOpts, sink chan<- *DPoSCompensate, indemnitee []common.Address) (event.Subscription, error) { + + var indemniteeRule []interface{} + for _, indemniteeItem := range indemnitee { + indemniteeRule = append(indemniteeRule, indemniteeItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "Compensate", indemniteeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSCompensate) + if err := _DPoS.contract.UnpackLog(event, "Compensate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCompensate is a log parse operation binding the contract event 0x92c2a7173158b7618078365b4ad89fd1f774ae4aa04f39e10b966b47f469d34b. +// +// Solidity: event Compensate(address indexed indemnitee, uint256 amount) +func (_DPoS *DPoSFilterer) ParseCompensate(log types.Log) (*DPoSCompensate, error) { + event := new(DPoSCompensate) + if err := _DPoS.contract.UnpackLog(event, "Compensate", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSConfirmParamProposalIterator is returned from FilterConfirmParamProposal and is used to iterate over the raw logs and unpacked data for ConfirmParamProposal events raised by the DPoS contract. +type DPoSConfirmParamProposalIterator struct { + Event *DPoSConfirmParamProposal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSConfirmParamProposalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSConfirmParamProposal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSConfirmParamProposal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSConfirmParamProposalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSConfirmParamProposalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSConfirmParamProposal represents a ConfirmParamProposal event raised by the DPoS contract. +type DPoSConfirmParamProposal struct { + ProposalId *big.Int + Passed bool + Record *big.Int + NewValue *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterConfirmParamProposal is a free log retrieval operation binding the contract event 0x106f43a560e53395081c0423504b476d1a2cfed9d56ff972bf77ae43ff7d4ba4. +// +// Solidity: event ConfirmParamProposal(uint256 proposalId, bool passed, uint256 record, uint256 newValue) +func (_DPoS *DPoSFilterer) FilterConfirmParamProposal(opts *bind.FilterOpts) (*DPoSConfirmParamProposalIterator, error) { + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "ConfirmParamProposal") + if err != nil { + return nil, err + } + return &DPoSConfirmParamProposalIterator{contract: _DPoS.contract, event: "ConfirmParamProposal", logs: logs, sub: sub}, nil +} + +// WatchConfirmParamProposal is a free log subscription operation binding the contract event 0x106f43a560e53395081c0423504b476d1a2cfed9d56ff972bf77ae43ff7d4ba4. +// +// Solidity: event ConfirmParamProposal(uint256 proposalId, bool passed, uint256 record, uint256 newValue) +func (_DPoS *DPoSFilterer) WatchConfirmParamProposal(opts *bind.WatchOpts, sink chan<- *DPoSConfirmParamProposal) (event.Subscription, error) { + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "ConfirmParamProposal") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSConfirmParamProposal) + if err := _DPoS.contract.UnpackLog(event, "ConfirmParamProposal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseConfirmParamProposal is a log parse operation binding the contract event 0x106f43a560e53395081c0423504b476d1a2cfed9d56ff972bf77ae43ff7d4ba4. +// +// Solidity: event ConfirmParamProposal(uint256 proposalId, bool passed, uint256 record, uint256 newValue) +func (_DPoS *DPoSFilterer) ParseConfirmParamProposal(log types.Log) (*DPoSConfirmParamProposal, error) { + event := new(DPoSConfirmParamProposal) + if err := _DPoS.contract.UnpackLog(event, "ConfirmParamProposal", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSConfirmSidechainProposalIterator is returned from FilterConfirmSidechainProposal and is used to iterate over the raw logs and unpacked data for ConfirmSidechainProposal events raised by the DPoS contract. +type DPoSConfirmSidechainProposalIterator struct { + Event *DPoSConfirmSidechainProposal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSConfirmSidechainProposalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSConfirmSidechainProposal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSConfirmSidechainProposal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSConfirmSidechainProposalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSConfirmSidechainProposalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSConfirmSidechainProposal represents a ConfirmSidechainProposal event raised by the DPoS contract. +type DPoSConfirmSidechainProposal struct { + ProposalId *big.Int + Passed bool + SidechainAddr common.Address + Registered bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterConfirmSidechainProposal is a free log retrieval operation binding the contract event 0x2c26ff0b5547eb09df5dde3569782330829ac9ffa9811847beab5d466066801c. +// +// Solidity: event ConfirmSidechainProposal(uint256 proposalId, bool passed, address sidechainAddr, bool registered) +func (_DPoS *DPoSFilterer) FilterConfirmSidechainProposal(opts *bind.FilterOpts) (*DPoSConfirmSidechainProposalIterator, error) { + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "ConfirmSidechainProposal") + if err != nil { + return nil, err + } + return &DPoSConfirmSidechainProposalIterator{contract: _DPoS.contract, event: "ConfirmSidechainProposal", logs: logs, sub: sub}, nil +} + +// WatchConfirmSidechainProposal is a free log subscription operation binding the contract event 0x2c26ff0b5547eb09df5dde3569782330829ac9ffa9811847beab5d466066801c. +// +// Solidity: event ConfirmSidechainProposal(uint256 proposalId, bool passed, address sidechainAddr, bool registered) +func (_DPoS *DPoSFilterer) WatchConfirmSidechainProposal(opts *bind.WatchOpts, sink chan<- *DPoSConfirmSidechainProposal) (event.Subscription, error) { + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "ConfirmSidechainProposal") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSConfirmSidechainProposal) + if err := _DPoS.contract.UnpackLog(event, "ConfirmSidechainProposal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseConfirmSidechainProposal is a log parse operation binding the contract event 0x2c26ff0b5547eb09df5dde3569782330829ac9ffa9811847beab5d466066801c. +// +// Solidity: event ConfirmSidechainProposal(uint256 proposalId, bool passed, address sidechainAddr, bool registered) +func (_DPoS *DPoSFilterer) ParseConfirmSidechainProposal(log types.Log) (*DPoSConfirmSidechainProposal, error) { + event := new(DPoSConfirmSidechainProposal) + if err := _DPoS.contract.UnpackLog(event, "ConfirmSidechainProposal", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSConfirmWithdrawIterator is returned from FilterConfirmWithdraw and is used to iterate over the raw logs and unpacked data for ConfirmWithdraw events raised by the DPoS contract. +type DPoSConfirmWithdrawIterator struct { + Event *DPoSConfirmWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSConfirmWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSConfirmWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSConfirmWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSConfirmWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSConfirmWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSConfirmWithdraw represents a ConfirmWithdraw event raised by the DPoS contract. +type DPoSConfirmWithdraw struct { + Delegator common.Address + Candidate common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterConfirmWithdraw is a free log retrieval operation binding the contract event 0x08d0283ea9a2e520a2f09611cf37ca6eb70f62e9a807e53756047dd2dc027220. +// +// Solidity: event ConfirmWithdraw(address indexed delegator, address indexed candidate, uint256 amount) +func (_DPoS *DPoSFilterer) FilterConfirmWithdraw(opts *bind.FilterOpts, delegator []common.Address, candidate []common.Address) (*DPoSConfirmWithdrawIterator, error) { + + var delegatorRule []interface{} + for _, delegatorItem := range delegator { + delegatorRule = append(delegatorRule, delegatorItem) + } + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "ConfirmWithdraw", delegatorRule, candidateRule) + if err != nil { + return nil, err + } + return &DPoSConfirmWithdrawIterator{contract: _DPoS.contract, event: "ConfirmWithdraw", logs: logs, sub: sub}, nil +} + +// WatchConfirmWithdraw is a free log subscription operation binding the contract event 0x08d0283ea9a2e520a2f09611cf37ca6eb70f62e9a807e53756047dd2dc027220. +// +// Solidity: event ConfirmWithdraw(address indexed delegator, address indexed candidate, uint256 amount) +func (_DPoS *DPoSFilterer) WatchConfirmWithdraw(opts *bind.WatchOpts, sink chan<- *DPoSConfirmWithdraw, delegator []common.Address, candidate []common.Address) (event.Subscription, error) { + + var delegatorRule []interface{} + for _, delegatorItem := range delegator { + delegatorRule = append(delegatorRule, delegatorItem) + } + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "ConfirmWithdraw", delegatorRule, candidateRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSConfirmWithdraw) + if err := _DPoS.contract.UnpackLog(event, "ConfirmWithdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseConfirmWithdraw is a log parse operation binding the contract event 0x08d0283ea9a2e520a2f09611cf37ca6eb70f62e9a807e53756047dd2dc027220. +// +// Solidity: event ConfirmWithdraw(address indexed delegator, address indexed candidate, uint256 amount) +func (_DPoS *DPoSFilterer) ParseConfirmWithdraw(log types.Log) (*DPoSConfirmWithdraw, error) { + event := new(DPoSConfirmWithdraw) + if err := _DPoS.contract.UnpackLog(event, "ConfirmWithdraw", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSCreateParamProposalIterator is returned from FilterCreateParamProposal and is used to iterate over the raw logs and unpacked data for CreateParamProposal events raised by the DPoS contract. +type DPoSCreateParamProposalIterator struct { + Event *DPoSCreateParamProposal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSCreateParamProposalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSCreateParamProposal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSCreateParamProposal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSCreateParamProposalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSCreateParamProposalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSCreateParamProposal represents a CreateParamProposal event raised by the DPoS contract. +type DPoSCreateParamProposal struct { + ProposalId *big.Int + Proposer common.Address + Deposit *big.Int + VoteDeadline *big.Int + Record *big.Int + NewValue *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCreateParamProposal is a free log retrieval operation binding the contract event 0x40109a070319d6004f4e4b31dba4b605c97bd3474d49865158f55fe093e3b339. +// +// Solidity: event CreateParamProposal(uint256 proposalId, address proposer, uint256 deposit, uint256 voteDeadline, uint256 record, uint256 newValue) +func (_DPoS *DPoSFilterer) FilterCreateParamProposal(opts *bind.FilterOpts) (*DPoSCreateParamProposalIterator, error) { + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "CreateParamProposal") + if err != nil { + return nil, err + } + return &DPoSCreateParamProposalIterator{contract: _DPoS.contract, event: "CreateParamProposal", logs: logs, sub: sub}, nil +} + +// WatchCreateParamProposal is a free log subscription operation binding the contract event 0x40109a070319d6004f4e4b31dba4b605c97bd3474d49865158f55fe093e3b339. +// +// Solidity: event CreateParamProposal(uint256 proposalId, address proposer, uint256 deposit, uint256 voteDeadline, uint256 record, uint256 newValue) +func (_DPoS *DPoSFilterer) WatchCreateParamProposal(opts *bind.WatchOpts, sink chan<- *DPoSCreateParamProposal) (event.Subscription, error) { + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "CreateParamProposal") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSCreateParamProposal) + if err := _DPoS.contract.UnpackLog(event, "CreateParamProposal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCreateParamProposal is a log parse operation binding the contract event 0x40109a070319d6004f4e4b31dba4b605c97bd3474d49865158f55fe093e3b339. +// +// Solidity: event CreateParamProposal(uint256 proposalId, address proposer, uint256 deposit, uint256 voteDeadline, uint256 record, uint256 newValue) +func (_DPoS *DPoSFilterer) ParseCreateParamProposal(log types.Log) (*DPoSCreateParamProposal, error) { + event := new(DPoSCreateParamProposal) + if err := _DPoS.contract.UnpackLog(event, "CreateParamProposal", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSCreateSidechainProposalIterator is returned from FilterCreateSidechainProposal and is used to iterate over the raw logs and unpacked data for CreateSidechainProposal events raised by the DPoS contract. +type DPoSCreateSidechainProposalIterator struct { + Event *DPoSCreateSidechainProposal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSCreateSidechainProposalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSCreateSidechainProposal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSCreateSidechainProposal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSCreateSidechainProposalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSCreateSidechainProposalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSCreateSidechainProposal represents a CreateSidechainProposal event raised by the DPoS contract. +type DPoSCreateSidechainProposal struct { + ProposalId *big.Int + Proposer common.Address + Deposit *big.Int + VoteDeadline *big.Int + SidechainAddr common.Address + Registered bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCreateSidechainProposal is a free log retrieval operation binding the contract event 0xe6970151d691583ac0aecc2e24c67871318a5c7f7574c6df7929b6dd5d54db68. +// +// Solidity: event CreateSidechainProposal(uint256 proposalId, address proposer, uint256 deposit, uint256 voteDeadline, address sidechainAddr, bool registered) +func (_DPoS *DPoSFilterer) FilterCreateSidechainProposal(opts *bind.FilterOpts) (*DPoSCreateSidechainProposalIterator, error) { + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "CreateSidechainProposal") + if err != nil { + return nil, err + } + return &DPoSCreateSidechainProposalIterator{contract: _DPoS.contract, event: "CreateSidechainProposal", logs: logs, sub: sub}, nil +} + +// WatchCreateSidechainProposal is a free log subscription operation binding the contract event 0xe6970151d691583ac0aecc2e24c67871318a5c7f7574c6df7929b6dd5d54db68. +// +// Solidity: event CreateSidechainProposal(uint256 proposalId, address proposer, uint256 deposit, uint256 voteDeadline, address sidechainAddr, bool registered) +func (_DPoS *DPoSFilterer) WatchCreateSidechainProposal(opts *bind.WatchOpts, sink chan<- *DPoSCreateSidechainProposal) (event.Subscription, error) { + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "CreateSidechainProposal") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSCreateSidechainProposal) + if err := _DPoS.contract.UnpackLog(event, "CreateSidechainProposal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCreateSidechainProposal is a log parse operation binding the contract event 0xe6970151d691583ac0aecc2e24c67871318a5c7f7574c6df7929b6dd5d54db68. +// +// Solidity: event CreateSidechainProposal(uint256 proposalId, address proposer, uint256 deposit, uint256 voteDeadline, address sidechainAddr, bool registered) +func (_DPoS *DPoSFilterer) ParseCreateSidechainProposal(log types.Log) (*DPoSCreateSidechainProposal, error) { + event := new(DPoSCreateSidechainProposal) + if err := _DPoS.contract.UnpackLog(event, "CreateSidechainProposal", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSDelegateIterator is returned from FilterDelegate and is used to iterate over the raw logs and unpacked data for Delegate events raised by the DPoS contract. +type DPoSDelegateIterator struct { + Event *DPoSDelegate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSDelegateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSDelegate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSDelegate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSDelegateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSDelegateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSDelegate represents a Delegate event raised by the DPoS contract. +type DPoSDelegate struct { + Delegator common.Address + Candidate common.Address + NewStake *big.Int + StakingPool *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelegate is a free log retrieval operation binding the contract event 0x500599802164a08023e87ffc3eed0ba3ae60697b3083ba81d046683679d81c6b. +// +// Solidity: event Delegate(address indexed delegator, address indexed candidate, uint256 newStake, uint256 stakingPool) +func (_DPoS *DPoSFilterer) FilterDelegate(opts *bind.FilterOpts, delegator []common.Address, candidate []common.Address) (*DPoSDelegateIterator, error) { + + var delegatorRule []interface{} + for _, delegatorItem := range delegator { + delegatorRule = append(delegatorRule, delegatorItem) + } + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "Delegate", delegatorRule, candidateRule) + if err != nil { + return nil, err + } + return &DPoSDelegateIterator{contract: _DPoS.contract, event: "Delegate", logs: logs, sub: sub}, nil +} + +// WatchDelegate is a free log subscription operation binding the contract event 0x500599802164a08023e87ffc3eed0ba3ae60697b3083ba81d046683679d81c6b. +// +// Solidity: event Delegate(address indexed delegator, address indexed candidate, uint256 newStake, uint256 stakingPool) +func (_DPoS *DPoSFilterer) WatchDelegate(opts *bind.WatchOpts, sink chan<- *DPoSDelegate, delegator []common.Address, candidate []common.Address) (event.Subscription, error) { + + var delegatorRule []interface{} + for _, delegatorItem := range delegator { + delegatorRule = append(delegatorRule, delegatorItem) + } + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "Delegate", delegatorRule, candidateRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSDelegate) + if err := _DPoS.contract.UnpackLog(event, "Delegate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDelegate is a log parse operation binding the contract event 0x500599802164a08023e87ffc3eed0ba3ae60697b3083ba81d046683679d81c6b. +// +// Solidity: event Delegate(address indexed delegator, address indexed candidate, uint256 newStake, uint256 stakingPool) +func (_DPoS *DPoSFilterer) ParseDelegate(log types.Log) (*DPoSDelegate, error) { + event := new(DPoSDelegate) + if err := _DPoS.contract.UnpackLog(event, "Delegate", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSInitializeCandidateIterator is returned from FilterInitializeCandidate and is used to iterate over the raw logs and unpacked data for InitializeCandidate events raised by the DPoS contract. +type DPoSInitializeCandidateIterator struct { + Event *DPoSInitializeCandidate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSInitializeCandidateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSInitializeCandidate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSInitializeCandidate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSInitializeCandidateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSInitializeCandidateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSInitializeCandidate represents a InitializeCandidate event raised by the DPoS contract. +type DPoSInitializeCandidate struct { + Candidate common.Address + MinSelfStake *big.Int + CommissionRate *big.Int + RateLockEndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitializeCandidate is a free log retrieval operation binding the contract event 0x453d56a841836718d9e848e968068cbc2af21ca29d1527fbebd231dc46ceffaa. +// +// Solidity: event InitializeCandidate(address indexed candidate, uint256 minSelfStake, uint256 commissionRate, uint256 rateLockEndTime) +func (_DPoS *DPoSFilterer) FilterInitializeCandidate(opts *bind.FilterOpts, candidate []common.Address) (*DPoSInitializeCandidateIterator, error) { + + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "InitializeCandidate", candidateRule) + if err != nil { + return nil, err + } + return &DPoSInitializeCandidateIterator{contract: _DPoS.contract, event: "InitializeCandidate", logs: logs, sub: sub}, nil +} + +// WatchInitializeCandidate is a free log subscription operation binding the contract event 0x453d56a841836718d9e848e968068cbc2af21ca29d1527fbebd231dc46ceffaa. +// +// Solidity: event InitializeCandidate(address indexed candidate, uint256 minSelfStake, uint256 commissionRate, uint256 rateLockEndTime) +func (_DPoS *DPoSFilterer) WatchInitializeCandidate(opts *bind.WatchOpts, sink chan<- *DPoSInitializeCandidate, candidate []common.Address) (event.Subscription, error) { + + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "InitializeCandidate", candidateRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSInitializeCandidate) + if err := _DPoS.contract.UnpackLog(event, "InitializeCandidate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitializeCandidate is a log parse operation binding the contract event 0x453d56a841836718d9e848e968068cbc2af21ca29d1527fbebd231dc46ceffaa. +// +// Solidity: event InitializeCandidate(address indexed candidate, uint256 minSelfStake, uint256 commissionRate, uint256 rateLockEndTime) +func (_DPoS *DPoSFilterer) ParseInitializeCandidate(log types.Log) (*DPoSInitializeCandidate, error) { + event := new(DPoSInitializeCandidate) + if err := _DPoS.contract.UnpackLog(event, "InitializeCandidate", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSIntendWithdrawIterator is returned from FilterIntendWithdraw and is used to iterate over the raw logs and unpacked data for IntendWithdraw events raised by the DPoS contract. +type DPoSIntendWithdrawIterator struct { + Event *DPoSIntendWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSIntendWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSIntendWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSIntendWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSIntendWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSIntendWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSIntendWithdraw represents a IntendWithdraw event raised by the DPoS contract. +type DPoSIntendWithdraw struct { + Delegator common.Address + Candidate common.Address + WithdrawAmount *big.Int + ProposedTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterIntendWithdraw is a free log retrieval operation binding the contract event 0x7171946bb2a9ef55fcb2eb8cef679db45e2e3a8cef9a44567d34d202b65ff0b1. +// +// Solidity: event IntendWithdraw(address indexed delegator, address indexed candidate, uint256 withdrawAmount, uint256 proposedTime) +func (_DPoS *DPoSFilterer) FilterIntendWithdraw(opts *bind.FilterOpts, delegator []common.Address, candidate []common.Address) (*DPoSIntendWithdrawIterator, error) { + + var delegatorRule []interface{} + for _, delegatorItem := range delegator { + delegatorRule = append(delegatorRule, delegatorItem) + } + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "IntendWithdraw", delegatorRule, candidateRule) + if err != nil { + return nil, err + } + return &DPoSIntendWithdrawIterator{contract: _DPoS.contract, event: "IntendWithdraw", logs: logs, sub: sub}, nil +} + +// WatchIntendWithdraw is a free log subscription operation binding the contract event 0x7171946bb2a9ef55fcb2eb8cef679db45e2e3a8cef9a44567d34d202b65ff0b1. +// +// Solidity: event IntendWithdraw(address indexed delegator, address indexed candidate, uint256 withdrawAmount, uint256 proposedTime) +func (_DPoS *DPoSFilterer) WatchIntendWithdraw(opts *bind.WatchOpts, sink chan<- *DPoSIntendWithdraw, delegator []common.Address, candidate []common.Address) (event.Subscription, error) { + + var delegatorRule []interface{} + for _, delegatorItem := range delegator { + delegatorRule = append(delegatorRule, delegatorItem) + } + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "IntendWithdraw", delegatorRule, candidateRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSIntendWithdraw) + if err := _DPoS.contract.UnpackLog(event, "IntendWithdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseIntendWithdraw is a log parse operation binding the contract event 0x7171946bb2a9ef55fcb2eb8cef679db45e2e3a8cef9a44567d34d202b65ff0b1. +// +// Solidity: event IntendWithdraw(address indexed delegator, address indexed candidate, uint256 withdrawAmount, uint256 proposedTime) +func (_DPoS *DPoSFilterer) ParseIntendWithdraw(log types.Log) (*DPoSIntendWithdraw, error) { + event := new(DPoSIntendWithdraw) + if err := _DPoS.contract.UnpackLog(event, "IntendWithdraw", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSMiningPoolContributionIterator is returned from FilterMiningPoolContribution and is used to iterate over the raw logs and unpacked data for MiningPoolContribution events raised by the DPoS contract. +type DPoSMiningPoolContributionIterator struct { + Event *DPoSMiningPoolContribution // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSMiningPoolContributionIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSMiningPoolContribution) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSMiningPoolContribution) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSMiningPoolContributionIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSMiningPoolContributionIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSMiningPoolContribution represents a MiningPoolContribution event raised by the DPoS contract. +type DPoSMiningPoolContribution struct { + Contributor common.Address + Contribution *big.Int + MiningPoolSize *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMiningPoolContribution is a free log retrieval operation binding the contract event 0x97e19c4040b6c46d4275e0c4fea68f8f92c81138372ffdb089932c211938f765. +// +// Solidity: event MiningPoolContribution(address indexed contributor, uint256 contribution, uint256 miningPoolSize) +func (_DPoS *DPoSFilterer) FilterMiningPoolContribution(opts *bind.FilterOpts, contributor []common.Address) (*DPoSMiningPoolContributionIterator, error) { + + var contributorRule []interface{} + for _, contributorItem := range contributor { + contributorRule = append(contributorRule, contributorItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "MiningPoolContribution", contributorRule) + if err != nil { + return nil, err + } + return &DPoSMiningPoolContributionIterator{contract: _DPoS.contract, event: "MiningPoolContribution", logs: logs, sub: sub}, nil +} + +// WatchMiningPoolContribution is a free log subscription operation binding the contract event 0x97e19c4040b6c46d4275e0c4fea68f8f92c81138372ffdb089932c211938f765. +// +// Solidity: event MiningPoolContribution(address indexed contributor, uint256 contribution, uint256 miningPoolSize) +func (_DPoS *DPoSFilterer) WatchMiningPoolContribution(opts *bind.WatchOpts, sink chan<- *DPoSMiningPoolContribution, contributor []common.Address) (event.Subscription, error) { + + var contributorRule []interface{} + for _, contributorItem := range contributor { + contributorRule = append(contributorRule, contributorItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "MiningPoolContribution", contributorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSMiningPoolContribution) + if err := _DPoS.contract.UnpackLog(event, "MiningPoolContribution", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMiningPoolContribution is a log parse operation binding the contract event 0x97e19c4040b6c46d4275e0c4fea68f8f92c81138372ffdb089932c211938f765. +// +// Solidity: event MiningPoolContribution(address indexed contributor, uint256 contribution, uint256 miningPoolSize) +func (_DPoS *DPoSFilterer) ParseMiningPoolContribution(log types.Log) (*DPoSMiningPoolContribution, error) { + event := new(DPoSMiningPoolContribution) + if err := _DPoS.contract.UnpackLog(event, "MiningPoolContribution", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the DPoS contract. +type DPoSOwnershipTransferredIterator struct { + Event *DPoSOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSOwnershipTransferred represents a OwnershipTransferred event raised by the DPoS contract. +type DPoSOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_DPoS *DPoSFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*DPoSOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &DPoSOwnershipTransferredIterator{contract: _DPoS.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_DPoS *DPoSFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *DPoSOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSOwnershipTransferred) + if err := _DPoS.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_DPoS *DPoSFilterer) ParseOwnershipTransferred(log types.Log) (*DPoSOwnershipTransferred, error) { + event := new(DPoSOwnershipTransferred) + if err := _DPoS.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the DPoS contract. +type DPoSPausedIterator struct { + Event *DPoSPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSPaused represents a Paused event raised by the DPoS contract. +type DPoSPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_DPoS *DPoSFilterer) FilterPaused(opts *bind.FilterOpts) (*DPoSPausedIterator, error) { + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &DPoSPausedIterator{contract: _DPoS.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_DPoS *DPoSFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *DPoSPaused) (event.Subscription, error) { + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSPaused) + if err := _DPoS.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_DPoS *DPoSFilterer) ParsePaused(log types.Log) (*DPoSPaused, error) { + event := new(DPoSPaused) + if err := _DPoS.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSPauserAddedIterator is returned from FilterPauserAdded and is used to iterate over the raw logs and unpacked data for PauserAdded events raised by the DPoS contract. +type DPoSPauserAddedIterator struct { + Event *DPoSPauserAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSPauserAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSPauserAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSPauserAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSPauserAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSPauserAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSPauserAdded represents a PauserAdded event raised by the DPoS contract. +type DPoSPauserAdded struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPauserAdded is a free log retrieval operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8. +// +// Solidity: event PauserAdded(address indexed account) +func (_DPoS *DPoSFilterer) FilterPauserAdded(opts *bind.FilterOpts, account []common.Address) (*DPoSPauserAddedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "PauserAdded", accountRule) + if err != nil { + return nil, err + } + return &DPoSPauserAddedIterator{contract: _DPoS.contract, event: "PauserAdded", logs: logs, sub: sub}, nil +} + +// WatchPauserAdded is a free log subscription operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8. +// +// Solidity: event PauserAdded(address indexed account) +func (_DPoS *DPoSFilterer) WatchPauserAdded(opts *bind.WatchOpts, sink chan<- *DPoSPauserAdded, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "PauserAdded", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSPauserAdded) + if err := _DPoS.contract.UnpackLog(event, "PauserAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePauserAdded is a log parse operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8. +// +// Solidity: event PauserAdded(address indexed account) +func (_DPoS *DPoSFilterer) ParsePauserAdded(log types.Log) (*DPoSPauserAdded, error) { + event := new(DPoSPauserAdded) + if err := _DPoS.contract.UnpackLog(event, "PauserAdded", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSPauserRemovedIterator is returned from FilterPauserRemoved and is used to iterate over the raw logs and unpacked data for PauserRemoved events raised by the DPoS contract. +type DPoSPauserRemovedIterator struct { + Event *DPoSPauserRemoved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSPauserRemovedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSPauserRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSPauserRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSPauserRemovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSPauserRemovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSPauserRemoved represents a PauserRemoved event raised by the DPoS contract. +type DPoSPauserRemoved struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPauserRemoved is a free log retrieval operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e. +// +// Solidity: event PauserRemoved(address indexed account) +func (_DPoS *DPoSFilterer) FilterPauserRemoved(opts *bind.FilterOpts, account []common.Address) (*DPoSPauserRemovedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "PauserRemoved", accountRule) + if err != nil { + return nil, err + } + return &DPoSPauserRemovedIterator{contract: _DPoS.contract, event: "PauserRemoved", logs: logs, sub: sub}, nil +} + +// WatchPauserRemoved is a free log subscription operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e. +// +// Solidity: event PauserRemoved(address indexed account) +func (_DPoS *DPoSFilterer) WatchPauserRemoved(opts *bind.WatchOpts, sink chan<- *DPoSPauserRemoved, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "PauserRemoved", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSPauserRemoved) + if err := _DPoS.contract.UnpackLog(event, "PauserRemoved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePauserRemoved is a log parse operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e. +// +// Solidity: event PauserRemoved(address indexed account) +func (_DPoS *DPoSFilterer) ParsePauserRemoved(log types.Log) (*DPoSPauserRemoved, error) { + event := new(DPoSPauserRemoved) + if err := _DPoS.contract.UnpackLog(event, "PauserRemoved", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSRedeemMiningRewardIterator is returned from FilterRedeemMiningReward and is used to iterate over the raw logs and unpacked data for RedeemMiningReward events raised by the DPoS contract. +type DPoSRedeemMiningRewardIterator struct { + Event *DPoSRedeemMiningReward // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSRedeemMiningRewardIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSRedeemMiningReward) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSRedeemMiningReward) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSRedeemMiningRewardIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSRedeemMiningRewardIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSRedeemMiningReward represents a RedeemMiningReward event raised by the DPoS contract. +type DPoSRedeemMiningReward struct { + Receiver common.Address + Reward *big.Int + MiningPool *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRedeemMiningReward is a free log retrieval operation binding the contract event 0xc243dafa8ee55923dad771198c225cf6dfcdc5e405eda7d4da42b6c6fa018de7. +// +// Solidity: event RedeemMiningReward(address indexed receiver, uint256 reward, uint256 miningPool) +func (_DPoS *DPoSFilterer) FilterRedeemMiningReward(opts *bind.FilterOpts, receiver []common.Address) (*DPoSRedeemMiningRewardIterator, error) { + + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "RedeemMiningReward", receiverRule) + if err != nil { + return nil, err + } + return &DPoSRedeemMiningRewardIterator{contract: _DPoS.contract, event: "RedeemMiningReward", logs: logs, sub: sub}, nil +} + +// WatchRedeemMiningReward is a free log subscription operation binding the contract event 0xc243dafa8ee55923dad771198c225cf6dfcdc5e405eda7d4da42b6c6fa018de7. +// +// Solidity: event RedeemMiningReward(address indexed receiver, uint256 reward, uint256 miningPool) +func (_DPoS *DPoSFilterer) WatchRedeemMiningReward(opts *bind.WatchOpts, sink chan<- *DPoSRedeemMiningReward, receiver []common.Address) (event.Subscription, error) { + + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "RedeemMiningReward", receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSRedeemMiningReward) + if err := _DPoS.contract.UnpackLog(event, "RedeemMiningReward", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRedeemMiningReward is a log parse operation binding the contract event 0xc243dafa8ee55923dad771198c225cf6dfcdc5e405eda7d4da42b6c6fa018de7. +// +// Solidity: event RedeemMiningReward(address indexed receiver, uint256 reward, uint256 miningPool) +func (_DPoS *DPoSFilterer) ParseRedeemMiningReward(log types.Log) (*DPoSRedeemMiningReward, error) { + event := new(DPoSRedeemMiningReward) + if err := _DPoS.contract.UnpackLog(event, "RedeemMiningReward", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSSlashIterator is returned from FilterSlash and is used to iterate over the raw logs and unpacked data for Slash events raised by the DPoS contract. +type DPoSSlashIterator struct { + Event *DPoSSlash // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSSlashIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSSlash) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSSlash) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSSlashIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSSlashIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSSlash represents a Slash event raised by the DPoS contract. +type DPoSSlash struct { + Validator common.Address + Delegator common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSlash is a free log retrieval operation binding the contract event 0x9995717781b7b3ba3dd9e553a2b5a2b7593ad9b71f5022a3691a089d5189bd19. +// +// Solidity: event Slash(address indexed validator, address indexed delegator, uint256 amount) +func (_DPoS *DPoSFilterer) FilterSlash(opts *bind.FilterOpts, validator []common.Address, delegator []common.Address) (*DPoSSlashIterator, error) { + + var validatorRule []interface{} + for _, validatorItem := range validator { + validatorRule = append(validatorRule, validatorItem) + } + var delegatorRule []interface{} + for _, delegatorItem := range delegator { + delegatorRule = append(delegatorRule, delegatorItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "Slash", validatorRule, delegatorRule) + if err != nil { + return nil, err + } + return &DPoSSlashIterator{contract: _DPoS.contract, event: "Slash", logs: logs, sub: sub}, nil +} + +// WatchSlash is a free log subscription operation binding the contract event 0x9995717781b7b3ba3dd9e553a2b5a2b7593ad9b71f5022a3691a089d5189bd19. +// +// Solidity: event Slash(address indexed validator, address indexed delegator, uint256 amount) +func (_DPoS *DPoSFilterer) WatchSlash(opts *bind.WatchOpts, sink chan<- *DPoSSlash, validator []common.Address, delegator []common.Address) (event.Subscription, error) { + + var validatorRule []interface{} + for _, validatorItem := range validator { + validatorRule = append(validatorRule, validatorItem) + } + var delegatorRule []interface{} + for _, delegatorItem := range delegator { + delegatorRule = append(delegatorRule, delegatorItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "Slash", validatorRule, delegatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSSlash) + if err := _DPoS.contract.UnpackLog(event, "Slash", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSlash is a log parse operation binding the contract event 0x9995717781b7b3ba3dd9e553a2b5a2b7593ad9b71f5022a3691a089d5189bd19. +// +// Solidity: event Slash(address indexed validator, address indexed delegator, uint256 amount) +func (_DPoS *DPoSFilterer) ParseSlash(log types.Log) (*DPoSSlash, error) { + event := new(DPoSSlash) + if err := _DPoS.contract.UnpackLog(event, "Slash", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the DPoS contract. +type DPoSUnpausedIterator struct { + Event *DPoSUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSUnpaused represents a Unpaused event raised by the DPoS contract. +type DPoSUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_DPoS *DPoSFilterer) FilterUnpaused(opts *bind.FilterOpts) (*DPoSUnpausedIterator, error) { + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &DPoSUnpausedIterator{contract: _DPoS.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_DPoS *DPoSFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *DPoSUnpaused) (event.Subscription, error) { + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSUnpaused) + if err := _DPoS.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_DPoS *DPoSFilterer) ParseUnpaused(log types.Log) (*DPoSUnpaused, error) { + event := new(DPoSUnpaused) + if err := _DPoS.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSUpdateCommissionRateIterator is returned from FilterUpdateCommissionRate and is used to iterate over the raw logs and unpacked data for UpdateCommissionRate events raised by the DPoS contract. +type DPoSUpdateCommissionRateIterator struct { + Event *DPoSUpdateCommissionRate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSUpdateCommissionRateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSUpdateCommissionRate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSUpdateCommissionRate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSUpdateCommissionRateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSUpdateCommissionRateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSUpdateCommissionRate represents a UpdateCommissionRate event raised by the DPoS contract. +type DPoSUpdateCommissionRate struct { + Candidate common.Address + NewRate *big.Int + NewLockEndTime *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdateCommissionRate is a free log retrieval operation binding the contract event 0x37954fc2aa8b4424ad16c75da2ea4d51ba08ef9e07907e37ccae54a0b4ce1e9e. +// +// Solidity: event UpdateCommissionRate(address indexed candidate, uint256 newRate, uint256 newLockEndTime) +func (_DPoS *DPoSFilterer) FilterUpdateCommissionRate(opts *bind.FilterOpts, candidate []common.Address) (*DPoSUpdateCommissionRateIterator, error) { + + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "UpdateCommissionRate", candidateRule) + if err != nil { + return nil, err + } + return &DPoSUpdateCommissionRateIterator{contract: _DPoS.contract, event: "UpdateCommissionRate", logs: logs, sub: sub}, nil +} + +// WatchUpdateCommissionRate is a free log subscription operation binding the contract event 0x37954fc2aa8b4424ad16c75da2ea4d51ba08ef9e07907e37ccae54a0b4ce1e9e. +// +// Solidity: event UpdateCommissionRate(address indexed candidate, uint256 newRate, uint256 newLockEndTime) +func (_DPoS *DPoSFilterer) WatchUpdateCommissionRate(opts *bind.WatchOpts, sink chan<- *DPoSUpdateCommissionRate, candidate []common.Address) (event.Subscription, error) { + + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "UpdateCommissionRate", candidateRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSUpdateCommissionRate) + if err := _DPoS.contract.UnpackLog(event, "UpdateCommissionRate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdateCommissionRate is a log parse operation binding the contract event 0x37954fc2aa8b4424ad16c75da2ea4d51ba08ef9e07907e37ccae54a0b4ce1e9e. +// +// Solidity: event UpdateCommissionRate(address indexed candidate, uint256 newRate, uint256 newLockEndTime) +func (_DPoS *DPoSFilterer) ParseUpdateCommissionRate(log types.Log) (*DPoSUpdateCommissionRate, error) { + event := new(DPoSUpdateCommissionRate) + if err := _DPoS.contract.UnpackLog(event, "UpdateCommissionRate", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSUpdateDelegatedStakeIterator is returned from FilterUpdateDelegatedStake and is used to iterate over the raw logs and unpacked data for UpdateDelegatedStake events raised by the DPoS contract. +type DPoSUpdateDelegatedStakeIterator struct { + Event *DPoSUpdateDelegatedStake // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSUpdateDelegatedStakeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSUpdateDelegatedStake) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSUpdateDelegatedStake) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSUpdateDelegatedStakeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSUpdateDelegatedStakeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSUpdateDelegatedStake represents a UpdateDelegatedStake event raised by the DPoS contract. +type DPoSUpdateDelegatedStake struct { + Delegator common.Address + Candidate common.Address + DelegatorStake *big.Int + CandidatePool *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdateDelegatedStake is a free log retrieval operation binding the contract event 0xf9edf8bcbb705aa22a96ed2eaeb81b1a55c2035868721a08555d82299fdc1949. +// +// Solidity: event UpdateDelegatedStake(address indexed delegator, address indexed candidate, uint256 delegatorStake, uint256 candidatePool) +func (_DPoS *DPoSFilterer) FilterUpdateDelegatedStake(opts *bind.FilterOpts, delegator []common.Address, candidate []common.Address) (*DPoSUpdateDelegatedStakeIterator, error) { + + var delegatorRule []interface{} + for _, delegatorItem := range delegator { + delegatorRule = append(delegatorRule, delegatorItem) + } + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "UpdateDelegatedStake", delegatorRule, candidateRule) + if err != nil { + return nil, err + } + return &DPoSUpdateDelegatedStakeIterator{contract: _DPoS.contract, event: "UpdateDelegatedStake", logs: logs, sub: sub}, nil +} + +// WatchUpdateDelegatedStake is a free log subscription operation binding the contract event 0xf9edf8bcbb705aa22a96ed2eaeb81b1a55c2035868721a08555d82299fdc1949. +// +// Solidity: event UpdateDelegatedStake(address indexed delegator, address indexed candidate, uint256 delegatorStake, uint256 candidatePool) +func (_DPoS *DPoSFilterer) WatchUpdateDelegatedStake(opts *bind.WatchOpts, sink chan<- *DPoSUpdateDelegatedStake, delegator []common.Address, candidate []common.Address) (event.Subscription, error) { + + var delegatorRule []interface{} + for _, delegatorItem := range delegator { + delegatorRule = append(delegatorRule, delegatorItem) + } + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "UpdateDelegatedStake", delegatorRule, candidateRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSUpdateDelegatedStake) + if err := _DPoS.contract.UnpackLog(event, "UpdateDelegatedStake", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdateDelegatedStake is a log parse operation binding the contract event 0xf9edf8bcbb705aa22a96ed2eaeb81b1a55c2035868721a08555d82299fdc1949. +// +// Solidity: event UpdateDelegatedStake(address indexed delegator, address indexed candidate, uint256 delegatorStake, uint256 candidatePool) +func (_DPoS *DPoSFilterer) ParseUpdateDelegatedStake(log types.Log) (*DPoSUpdateDelegatedStake, error) { + event := new(DPoSUpdateDelegatedStake) + if err := _DPoS.contract.UnpackLog(event, "UpdateDelegatedStake", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSUpdateMinSelfStakeIterator is returned from FilterUpdateMinSelfStake and is used to iterate over the raw logs and unpacked data for UpdateMinSelfStake events raised by the DPoS contract. +type DPoSUpdateMinSelfStakeIterator struct { + Event *DPoSUpdateMinSelfStake // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSUpdateMinSelfStakeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSUpdateMinSelfStake) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSUpdateMinSelfStake) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSUpdateMinSelfStakeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSUpdateMinSelfStakeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSUpdateMinSelfStake represents a UpdateMinSelfStake event raised by the DPoS contract. +type DPoSUpdateMinSelfStake struct { + Candidate common.Address + MinSelfStake *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdateMinSelfStake is a free log retrieval operation binding the contract event 0x4c626e5cfbf8848bfc43930276036d8e6c5c6db09a8fea30eea53eaa034158af. +// +// Solidity: event UpdateMinSelfStake(address indexed candidate, uint256 minSelfStake) +func (_DPoS *DPoSFilterer) FilterUpdateMinSelfStake(opts *bind.FilterOpts, candidate []common.Address) (*DPoSUpdateMinSelfStakeIterator, error) { + + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "UpdateMinSelfStake", candidateRule) + if err != nil { + return nil, err + } + return &DPoSUpdateMinSelfStakeIterator{contract: _DPoS.contract, event: "UpdateMinSelfStake", logs: logs, sub: sub}, nil +} + +// WatchUpdateMinSelfStake is a free log subscription operation binding the contract event 0x4c626e5cfbf8848bfc43930276036d8e6c5c6db09a8fea30eea53eaa034158af. +// +// Solidity: event UpdateMinSelfStake(address indexed candidate, uint256 minSelfStake) +func (_DPoS *DPoSFilterer) WatchUpdateMinSelfStake(opts *bind.WatchOpts, sink chan<- *DPoSUpdateMinSelfStake, candidate []common.Address) (event.Subscription, error) { + + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "UpdateMinSelfStake", candidateRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSUpdateMinSelfStake) + if err := _DPoS.contract.UnpackLog(event, "UpdateMinSelfStake", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdateMinSelfStake is a log parse operation binding the contract event 0x4c626e5cfbf8848bfc43930276036d8e6c5c6db09a8fea30eea53eaa034158af. +// +// Solidity: event UpdateMinSelfStake(address indexed candidate, uint256 minSelfStake) +func (_DPoS *DPoSFilterer) ParseUpdateMinSelfStake(log types.Log) (*DPoSUpdateMinSelfStake, error) { + event := new(DPoSUpdateMinSelfStake) + if err := _DPoS.contract.UnpackLog(event, "UpdateMinSelfStake", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSValidatorChangeIterator is returned from FilterValidatorChange and is used to iterate over the raw logs and unpacked data for ValidatorChange events raised by the DPoS contract. +type DPoSValidatorChangeIterator struct { + Event *DPoSValidatorChange // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSValidatorChangeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSValidatorChange) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSValidatorChange) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSValidatorChangeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSValidatorChangeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSValidatorChange represents a ValidatorChange event raised by the DPoS contract. +type DPoSValidatorChange struct { + EthAddr common.Address + ChangeType uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorChange is a free log retrieval operation binding the contract event 0x63f783ba869265648de5e70add96be9f4914e3bde064fdc19fd7e6a8ebf2f46c. +// +// Solidity: event ValidatorChange(address indexed ethAddr, uint8 indexed changeType) +func (_DPoS *DPoSFilterer) FilterValidatorChange(opts *bind.FilterOpts, ethAddr []common.Address, changeType []uint8) (*DPoSValidatorChangeIterator, error) { + + var ethAddrRule []interface{} + for _, ethAddrItem := range ethAddr { + ethAddrRule = append(ethAddrRule, ethAddrItem) + } + var changeTypeRule []interface{} + for _, changeTypeItem := range changeType { + changeTypeRule = append(changeTypeRule, changeTypeItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "ValidatorChange", ethAddrRule, changeTypeRule) + if err != nil { + return nil, err + } + return &DPoSValidatorChangeIterator{contract: _DPoS.contract, event: "ValidatorChange", logs: logs, sub: sub}, nil +} + +// WatchValidatorChange is a free log subscription operation binding the contract event 0x63f783ba869265648de5e70add96be9f4914e3bde064fdc19fd7e6a8ebf2f46c. +// +// Solidity: event ValidatorChange(address indexed ethAddr, uint8 indexed changeType) +func (_DPoS *DPoSFilterer) WatchValidatorChange(opts *bind.WatchOpts, sink chan<- *DPoSValidatorChange, ethAddr []common.Address, changeType []uint8) (event.Subscription, error) { + + var ethAddrRule []interface{} + for _, ethAddrItem := range ethAddr { + ethAddrRule = append(ethAddrRule, ethAddrItem) + } + var changeTypeRule []interface{} + for _, changeTypeItem := range changeType { + changeTypeRule = append(changeTypeRule, changeTypeItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "ValidatorChange", ethAddrRule, changeTypeRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSValidatorChange) + if err := _DPoS.contract.UnpackLog(event, "ValidatorChange", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorChange is a log parse operation binding the contract event 0x63f783ba869265648de5e70add96be9f4914e3bde064fdc19fd7e6a8ebf2f46c. +// +// Solidity: event ValidatorChange(address indexed ethAddr, uint8 indexed changeType) +func (_DPoS *DPoSFilterer) ParseValidatorChange(log types.Log) (*DPoSValidatorChange, error) { + event := new(DPoSValidatorChange) + if err := _DPoS.contract.UnpackLog(event, "ValidatorChange", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSVoteParamIterator is returned from FilterVoteParam and is used to iterate over the raw logs and unpacked data for VoteParam events raised by the DPoS contract. +type DPoSVoteParamIterator struct { + Event *DPoSVoteParam // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSVoteParamIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSVoteParam) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSVoteParam) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSVoteParamIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSVoteParamIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSVoteParam represents a VoteParam event raised by the DPoS contract. +type DPoSVoteParam struct { + ProposalId *big.Int + Voter common.Address + VoteType uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterVoteParam is a free log retrieval operation binding the contract event 0x06c7ef6e19454637e93ee60cc680c61fb2ebabb57e58cf36d94141a5036b3d65. +// +// Solidity: event VoteParam(uint256 proposalId, address voter, uint8 voteType) +func (_DPoS *DPoSFilterer) FilterVoteParam(opts *bind.FilterOpts) (*DPoSVoteParamIterator, error) { + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "VoteParam") + if err != nil { + return nil, err + } + return &DPoSVoteParamIterator{contract: _DPoS.contract, event: "VoteParam", logs: logs, sub: sub}, nil +} + +// WatchVoteParam is a free log subscription operation binding the contract event 0x06c7ef6e19454637e93ee60cc680c61fb2ebabb57e58cf36d94141a5036b3d65. +// +// Solidity: event VoteParam(uint256 proposalId, address voter, uint8 voteType) +func (_DPoS *DPoSFilterer) WatchVoteParam(opts *bind.WatchOpts, sink chan<- *DPoSVoteParam) (event.Subscription, error) { + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "VoteParam") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSVoteParam) + if err := _DPoS.contract.UnpackLog(event, "VoteParam", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseVoteParam is a log parse operation binding the contract event 0x06c7ef6e19454637e93ee60cc680c61fb2ebabb57e58cf36d94141a5036b3d65. +// +// Solidity: event VoteParam(uint256 proposalId, address voter, uint8 voteType) +func (_DPoS *DPoSFilterer) ParseVoteParam(log types.Log) (*DPoSVoteParam, error) { + event := new(DPoSVoteParam) + if err := _DPoS.contract.UnpackLog(event, "VoteParam", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSVoteSidechainIterator is returned from FilterVoteSidechain and is used to iterate over the raw logs and unpacked data for VoteSidechain events raised by the DPoS contract. +type DPoSVoteSidechainIterator struct { + Event *DPoSVoteSidechain // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSVoteSidechainIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSVoteSidechain) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSVoteSidechain) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSVoteSidechainIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSVoteSidechainIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSVoteSidechain represents a VoteSidechain event raised by the DPoS contract. +type DPoSVoteSidechain struct { + ProposalId *big.Int + Voter common.Address + VoteType uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterVoteSidechain is a free log retrieval operation binding the contract event 0x7686976924e1fdb79b36f7445ada20b6e9d3377d85b34d5162116e675c39d34c. +// +// Solidity: event VoteSidechain(uint256 proposalId, address voter, uint8 voteType) +func (_DPoS *DPoSFilterer) FilterVoteSidechain(opts *bind.FilterOpts) (*DPoSVoteSidechainIterator, error) { + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "VoteSidechain") + if err != nil { + return nil, err + } + return &DPoSVoteSidechainIterator{contract: _DPoS.contract, event: "VoteSidechain", logs: logs, sub: sub}, nil +} + +// WatchVoteSidechain is a free log subscription operation binding the contract event 0x7686976924e1fdb79b36f7445ada20b6e9d3377d85b34d5162116e675c39d34c. +// +// Solidity: event VoteSidechain(uint256 proposalId, address voter, uint8 voteType) +func (_DPoS *DPoSFilterer) WatchVoteSidechain(opts *bind.WatchOpts, sink chan<- *DPoSVoteSidechain) (event.Subscription, error) { + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "VoteSidechain") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSVoteSidechain) + if err := _DPoS.contract.UnpackLog(event, "VoteSidechain", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseVoteSidechain is a log parse operation binding the contract event 0x7686976924e1fdb79b36f7445ada20b6e9d3377d85b34d5162116e675c39d34c. +// +// Solidity: event VoteSidechain(uint256 proposalId, address voter, uint8 voteType) +func (_DPoS *DPoSFilterer) ParseVoteSidechain(log types.Log) (*DPoSVoteSidechain, error) { + event := new(DPoSVoteSidechain) + if err := _DPoS.contract.UnpackLog(event, "VoteSidechain", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSWhitelistAdminAddedIterator is returned from FilterWhitelistAdminAdded and is used to iterate over the raw logs and unpacked data for WhitelistAdminAdded events raised by the DPoS contract. +type DPoSWhitelistAdminAddedIterator struct { + Event *DPoSWhitelistAdminAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSWhitelistAdminAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSWhitelistAdminAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSWhitelistAdminAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSWhitelistAdminAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSWhitelistAdminAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSWhitelistAdminAdded represents a WhitelistAdminAdded event raised by the DPoS contract. +type DPoSWhitelistAdminAdded struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWhitelistAdminAdded is a free log retrieval operation binding the contract event 0x22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd20961299. +// +// Solidity: event WhitelistAdminAdded(address indexed account) +func (_DPoS *DPoSFilterer) FilterWhitelistAdminAdded(opts *bind.FilterOpts, account []common.Address) (*DPoSWhitelistAdminAddedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "WhitelistAdminAdded", accountRule) + if err != nil { + return nil, err + } + return &DPoSWhitelistAdminAddedIterator{contract: _DPoS.contract, event: "WhitelistAdminAdded", logs: logs, sub: sub}, nil +} + +// WatchWhitelistAdminAdded is a free log subscription operation binding the contract event 0x22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd20961299. +// +// Solidity: event WhitelistAdminAdded(address indexed account) +func (_DPoS *DPoSFilterer) WatchWhitelistAdminAdded(opts *bind.WatchOpts, sink chan<- *DPoSWhitelistAdminAdded, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "WhitelistAdminAdded", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSWhitelistAdminAdded) + if err := _DPoS.contract.UnpackLog(event, "WhitelistAdminAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWhitelistAdminAdded is a log parse operation binding the contract event 0x22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd20961299. +// +// Solidity: event WhitelistAdminAdded(address indexed account) +func (_DPoS *DPoSFilterer) ParseWhitelistAdminAdded(log types.Log) (*DPoSWhitelistAdminAdded, error) { + event := new(DPoSWhitelistAdminAdded) + if err := _DPoS.contract.UnpackLog(event, "WhitelistAdminAdded", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSWhitelistAdminRemovedIterator is returned from FilterWhitelistAdminRemoved and is used to iterate over the raw logs and unpacked data for WhitelistAdminRemoved events raised by the DPoS contract. +type DPoSWhitelistAdminRemovedIterator struct { + Event *DPoSWhitelistAdminRemoved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSWhitelistAdminRemovedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSWhitelistAdminRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSWhitelistAdminRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSWhitelistAdminRemovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSWhitelistAdminRemovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSWhitelistAdminRemoved represents a WhitelistAdminRemoved event raised by the DPoS contract. +type DPoSWhitelistAdminRemoved struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWhitelistAdminRemoved is a free log retrieval operation binding the contract event 0x0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e165. +// +// Solidity: event WhitelistAdminRemoved(address indexed account) +func (_DPoS *DPoSFilterer) FilterWhitelistAdminRemoved(opts *bind.FilterOpts, account []common.Address) (*DPoSWhitelistAdminRemovedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "WhitelistAdminRemoved", accountRule) + if err != nil { + return nil, err + } + return &DPoSWhitelistAdminRemovedIterator{contract: _DPoS.contract, event: "WhitelistAdminRemoved", logs: logs, sub: sub}, nil +} + +// WatchWhitelistAdminRemoved is a free log subscription operation binding the contract event 0x0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e165. +// +// Solidity: event WhitelistAdminRemoved(address indexed account) +func (_DPoS *DPoSFilterer) WatchWhitelistAdminRemoved(opts *bind.WatchOpts, sink chan<- *DPoSWhitelistAdminRemoved, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "WhitelistAdminRemoved", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSWhitelistAdminRemoved) + if err := _DPoS.contract.UnpackLog(event, "WhitelistAdminRemoved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWhitelistAdminRemoved is a log parse operation binding the contract event 0x0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e165. +// +// Solidity: event WhitelistAdminRemoved(address indexed account) +func (_DPoS *DPoSFilterer) ParseWhitelistAdminRemoved(log types.Log) (*DPoSWhitelistAdminRemoved, error) { + event := new(DPoSWhitelistAdminRemoved) + if err := _DPoS.contract.UnpackLog(event, "WhitelistAdminRemoved", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSWhitelistedAddedIterator is returned from FilterWhitelistedAdded and is used to iterate over the raw logs and unpacked data for WhitelistedAdded events raised by the DPoS contract. +type DPoSWhitelistedAddedIterator struct { + Event *DPoSWhitelistedAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSWhitelistedAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSWhitelistedAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSWhitelistedAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSWhitelistedAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSWhitelistedAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSWhitelistedAdded represents a WhitelistedAdded event raised by the DPoS contract. +type DPoSWhitelistedAdded struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWhitelistedAdded is a free log retrieval operation binding the contract event 0xee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f. +// +// Solidity: event WhitelistedAdded(address indexed account) +func (_DPoS *DPoSFilterer) FilterWhitelistedAdded(opts *bind.FilterOpts, account []common.Address) (*DPoSWhitelistedAddedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "WhitelistedAdded", accountRule) + if err != nil { + return nil, err + } + return &DPoSWhitelistedAddedIterator{contract: _DPoS.contract, event: "WhitelistedAdded", logs: logs, sub: sub}, nil +} + +// WatchWhitelistedAdded is a free log subscription operation binding the contract event 0xee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f. +// +// Solidity: event WhitelistedAdded(address indexed account) +func (_DPoS *DPoSFilterer) WatchWhitelistedAdded(opts *bind.WatchOpts, sink chan<- *DPoSWhitelistedAdded, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "WhitelistedAdded", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSWhitelistedAdded) + if err := _DPoS.contract.UnpackLog(event, "WhitelistedAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWhitelistedAdded is a log parse operation binding the contract event 0xee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f. +// +// Solidity: event WhitelistedAdded(address indexed account) +func (_DPoS *DPoSFilterer) ParseWhitelistedAdded(log types.Log) (*DPoSWhitelistedAdded, error) { + event := new(DPoSWhitelistedAdded) + if err := _DPoS.contract.UnpackLog(event, "WhitelistedAdded", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSWhitelistedRemovedIterator is returned from FilterWhitelistedRemoved and is used to iterate over the raw logs and unpacked data for WhitelistedRemoved events raised by the DPoS contract. +type DPoSWhitelistedRemovedIterator struct { + Event *DPoSWhitelistedRemoved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSWhitelistedRemovedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSWhitelistedRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSWhitelistedRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSWhitelistedRemovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSWhitelistedRemovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSWhitelistedRemoved represents a WhitelistedRemoved event raised by the DPoS contract. +type DPoSWhitelistedRemoved struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWhitelistedRemoved is a free log retrieval operation binding the contract event 0x270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b6. +// +// Solidity: event WhitelistedRemoved(address indexed account) +func (_DPoS *DPoSFilterer) FilterWhitelistedRemoved(opts *bind.FilterOpts, account []common.Address) (*DPoSWhitelistedRemovedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "WhitelistedRemoved", accountRule) + if err != nil { + return nil, err + } + return &DPoSWhitelistedRemovedIterator{contract: _DPoS.contract, event: "WhitelistedRemoved", logs: logs, sub: sub}, nil +} + +// WatchWhitelistedRemoved is a free log subscription operation binding the contract event 0x270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b6. +// +// Solidity: event WhitelistedRemoved(address indexed account) +func (_DPoS *DPoSFilterer) WatchWhitelistedRemoved(opts *bind.WatchOpts, sink chan<- *DPoSWhitelistedRemoved, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "WhitelistedRemoved", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSWhitelistedRemoved) + if err := _DPoS.contract.UnpackLog(event, "WhitelistedRemoved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWhitelistedRemoved is a log parse operation binding the contract event 0x270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b6. +// +// Solidity: event WhitelistedRemoved(address indexed account) +func (_DPoS *DPoSFilterer) ParseWhitelistedRemoved(log types.Log) (*DPoSWhitelistedRemoved, error) { + event := new(DPoSWhitelistedRemoved) + if err := _DPoS.contract.UnpackLog(event, "WhitelistedRemoved", log); err != nil { + return nil, err + } + return event, nil +} + +// DPoSWithdrawFromUnbondedCandidateIterator is returned from FilterWithdrawFromUnbondedCandidate and is used to iterate over the raw logs and unpacked data for WithdrawFromUnbondedCandidate events raised by the DPoS contract. +type DPoSWithdrawFromUnbondedCandidateIterator struct { + Event *DPoSWithdrawFromUnbondedCandidate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *DPoSWithdrawFromUnbondedCandidateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(DPoSWithdrawFromUnbondedCandidate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(DPoSWithdrawFromUnbondedCandidate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *DPoSWithdrawFromUnbondedCandidateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DPoSWithdrawFromUnbondedCandidateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DPoSWithdrawFromUnbondedCandidate represents a WithdrawFromUnbondedCandidate event raised by the DPoS contract. +type DPoSWithdrawFromUnbondedCandidate struct { + Delegator common.Address + Candidate common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawFromUnbondedCandidate is a free log retrieval operation binding the contract event 0x585e40624b400c05be4193af453d2fd2e69facd17163bda6afd44546f3dbbaa8. +// +// Solidity: event WithdrawFromUnbondedCandidate(address indexed delegator, address indexed candidate, uint256 amount) +func (_DPoS *DPoSFilterer) FilterWithdrawFromUnbondedCandidate(opts *bind.FilterOpts, delegator []common.Address, candidate []common.Address) (*DPoSWithdrawFromUnbondedCandidateIterator, error) { + + var delegatorRule []interface{} + for _, delegatorItem := range delegator { + delegatorRule = append(delegatorRule, delegatorItem) + } + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.FilterLogs(opts, "WithdrawFromUnbondedCandidate", delegatorRule, candidateRule) + if err != nil { + return nil, err + } + return &DPoSWithdrawFromUnbondedCandidateIterator{contract: _DPoS.contract, event: "WithdrawFromUnbondedCandidate", logs: logs, sub: sub}, nil +} + +// WatchWithdrawFromUnbondedCandidate is a free log subscription operation binding the contract event 0x585e40624b400c05be4193af453d2fd2e69facd17163bda6afd44546f3dbbaa8. +// +// Solidity: event WithdrawFromUnbondedCandidate(address indexed delegator, address indexed candidate, uint256 amount) +func (_DPoS *DPoSFilterer) WatchWithdrawFromUnbondedCandidate(opts *bind.WatchOpts, sink chan<- *DPoSWithdrawFromUnbondedCandidate, delegator []common.Address, candidate []common.Address) (event.Subscription, error) { + + var delegatorRule []interface{} + for _, delegatorItem := range delegator { + delegatorRule = append(delegatorRule, delegatorItem) + } + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + + logs, sub, err := _DPoS.contract.WatchLogs(opts, "WithdrawFromUnbondedCandidate", delegatorRule, candidateRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DPoSWithdrawFromUnbondedCandidate) + if err := _DPoS.contract.UnpackLog(event, "WithdrawFromUnbondedCandidate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawFromUnbondedCandidate is a log parse operation binding the contract event 0x585e40624b400c05be4193af453d2fd2e69facd17163bda6afd44546f3dbbaa8. +// +// Solidity: event WithdrawFromUnbondedCandidate(address indexed delegator, address indexed candidate, uint256 amount) +func (_DPoS *DPoSFilterer) ParseWithdrawFromUnbondedCandidate(log types.Log) (*DPoSWithdrawFromUnbondedCandidate, error) { + event := new(DPoSWithdrawFromUnbondedCandidate) + if err := _DPoS.contract.UnpackLog(event, "WithdrawFromUnbondedCandidate", log); err != nil { + return nil, err + } + return event, nil +} diff --git a/bindings/go/mainchain/sgn.go b/bindings/go/mainchain/sgn.go new file mode 100644 index 0000000..ee5dd2a --- /dev/null +++ b/bindings/go/mainchain/sgn.go @@ -0,0 +1,1864 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package mainchain + +import ( + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// SGNABI is the input ABI used to generate the binding from. +const SGNABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_celerTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_DPoSAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"AddSubscriptionBalance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cumulativeMiningReward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"serviceReward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"servicePool\",\"type\":\"uint256\"}],\"name\":\"RedeemReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"candidate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"oldSidechainAddr\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"newSidechainAddr\",\"type\":\"bytes\"}],\"name\":\"UpdateSidechainAddr\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"celerToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dPoSContract\",\"outputs\":[{\"internalType\":\"contractIDPoS\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"redeemedServiceReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"servicePool\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"sidechainAddrMap\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"subscriptionDeposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"drainToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_sidechainAddr\",\"type\":\"bytes\"}],\"name\":\"updateSidechainAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"subscribe\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_rewardRequest\",\"type\":\"bytes\"}],\"name\":\"redeemReward\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" + +// SGNBin is the compiled bytecode used for deploying new contracts. +var SGNBin = "0x60806040523480156200001157600080fd5b50604051620019da380380620019da833981810160405260408110156200003757600080fd5b508051602090910151600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36200009d336001600160e01b03620000d816565b600280546001600160a81b0319166101006001600160a01b0394851602179055600380546001600160a01b03191691909216179055620001b9565b620000f38160016200012a60201b620015cf1790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6001600160a01b0381166200013e57600080fd5b6200015382826001600160e01b036200018316565b156200015e57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b0382166200019957600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61181180620001c96000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806382dc1ec4116100ad578063c6c21e9d11610071578063c6c21e9d146102f7578063e02f39bd146102ff578063e27b41101461036f578063e42a06c81461040a578063f2fde38b146104125761012c565b806382dc1ec4146102935780638456cb59146102b95780638da5cb5b146102c15780638f32d59b146102c9578063c57f6661146102d15761012c565b806346fbf68e116100f457806346fbf68e146101d15780635c975abb1461020b5780636ef8d66d14610213578063715018a61461021b57806373a6e450146102235761012c565b80630f574ba714610131578063145aa116146101505780631e77733a1461016d578063291a3eb2146101a55780633f4ba83a146101c9575b600080fd5b61014e6004803603602081101561014757600080fd5b5035610438565b005b61014e6004803603602081101561016657600080fd5b50356105c4565b6101936004803603602081101561018357600080fd5b50356001600160a01b0316610603565b60408051918252519081900360200190f35b6101ad610615565b604080516001600160a01b039092168252519081900360200190f35b61014e610624565b6101f7600480360360208110156101e757600080fd5b50356001600160a01b0316610684565b604080519115158252519081900360200190f35b6101f761069f565b61014e6106a9565b61014e6106b4565b61014e6004803603602081101561023957600080fd5b81019060208101813564010000000081111561025457600080fd5b82018360208201111561026657600080fd5b8035906020019184600183028401116401000000008311171561028857600080fd5b50909250905061070f565b61014e600480360360208110156102a957600080fd5b50356001600160a01b0316610ab1565b61014e610acc565b6101ad610b30565b6101f7610b3f565b610193600480360360208110156102e757600080fd5b50356001600160a01b0316610b50565b6101ad610b62565b61014e6004803603602081101561031557600080fd5b81019060208101813564010000000081111561033057600080fd5b82018360208201111561034257600080fd5b8035906020019184600183028401116401000000008311171561036457600080fd5b509092509050610b76565b6103956004803603602081101561038557600080fd5b50356001600160a01b0316610e23565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103cf5781810151838201526020016103b7565b50505050905090810190601f1680156103fc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610193610ebe565b61014e6004803603602081101561042857600080fd5b50356001600160a01b0316610ec4565b60025460ff161561044857600080fd5b600360009054906101000a90046001600160a01b03166001600160a01b031663eab2ed8c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561049657600080fd5b505afa1580156104aa573d6000803e3d6000fd5b505050506040513d60208110156104c057600080fd5b5051610507576040805162461bcd60e51b815260206004820152601160248201527011141bd4c81a5cc81b9bdd081d985b1a59607a1b604482015290519081900360640190fd5b600554339061051c908363ffffffff610ede16565b6005556001600160a01b038116600090815260046020526040902054610548908363ffffffff610ede16565b6001600160a01b03808316600090815260046020526040902091909155600254610581916101009091041682308563ffffffff610ef716565b6040805183815290516001600160a01b038316917fac095ced75d400384d8404a37883183a56b937b8ff8195fa0c52c3ccc8bb8a49919081900360200190a25050565b60025460ff166105d357600080fd5b6105db610b3f565b6105e457600080fd5b6002546106009061010090046001600160a01b03163383610f8d565b50565b60046020526000908152604090205481565b6003546001600160a01b031681565b61062d33610684565b61063657600080fd5b60025460ff1661064557600080fd5b6002805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b600061069760018363ffffffff61102716565b90505b919050565b60025460ff165b90565b6106b23361105c565b565b6106bc610b3f565b6106c557600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60025460ff161561071f57600080fd5b600360009054906101000a90046001600160a01b03166001600160a01b031663eab2ed8c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561076d57600080fd5b505afa158015610781573d6000803e3d6000fd5b505050506040513d602081101561079757600080fd5b50516107de576040805162461bcd60e51b815260206004820152601160248201527011141bd4c81a5cc81b9bdd081d985b1a59607a1b604482015290519081900360640190fd5b600354604051631c0efd9d60e01b8152602060048201908152602482018490526001600160a01b0390921691631c0efd9d91859185918190604401848480828437600081840152601f19601f8201169050808301925050509350505050602060405180830381600087803b15801561085557600080fd5b505af1158015610869573d6000803e3d6000fd5b505050506040513d602081101561087f57600080fd5b50516108bc5760405162461bcd60e51b815260040180806020018281038252602281526020018061178c6022913960400191505060405180910390fd5b6108c4611695565b61090383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110a492505050565b905061090d6116af565b8151610918906111fb565b80516001600160a01b03166000908152600660205260408082205490830151929350909161094b9163ffffffff6112c016565b905080600554101561098e5760405162461bcd60e51b815260040180806020018281038252602f8152602001806117ae602f913960400191505060405180910390fd5b60408083015183516001600160a01b03166000908152600660205291909120556005546109c1908263ffffffff6112c016565b6005556003548251602084015160408051630fbd844360e11b81526001600160a01b0393841660048201526024810192909252519190921691631f7b088691604480830192600092919082900301818387803b158015610a2057600080fd5b505af1158015610a34573d6000803e3d6000fd5b50508351600254610a56935061010090046001600160a01b0316915083610f8d565b8151602080840151600554604080519283529282018590528183015290516001600160a01b03909216917f09251621f2e88c5e7f8df91fe1d9e9a70610e20e122945470fddd48af05104269181900360600190a25050505050565b610aba33610684565b610ac357600080fd5b610600816112d5565b610ad533610684565b610ade57600080fd5b60025460ff1615610aee57600080fd5b6002805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60066020526000908152604090205481565b60025461010090046001600160a01b031681565b600354604080516328bde1e160e01b815233600482018190529151919260009283926001600160a01b03909216916328bde1e19160248083019260e0929190829003018186803b158015610bc957600080fd5b505afa158015610bdd573d6000803e3d6000fd5b505050506040513d60e0811015610bf357600080fd5b50805160609091015190925090508015610c54576040805162461bcd60e51b815260206004820152601a60248201527f6d73672e73656e646572206973206e6f7420756e626f6e646564000000000000604482015290519081900360640190fd5b81610ca6576040805162461bcd60e51b815260206004820152601c60248201527f43616e646964617465206973206e6f7420696e697469616c697a656400000000604482015290519081900360640190fd5b6001600160a01b03831660009081526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d455780601f10610d1a57610100808354040283529160200191610d45565b820191906000526020600020905b815481529060010190602001808311610d2857829003601f168201915b505050506001600160a01b0386166000908152600760205260409020919250610d7191905087876116d9565b5085856040518083838082843760405192018290038220865190955086945091925082916020850191508083835b60208310610dbe5780518252601f199092019160209182019101610d9f565b5181516020939093036101000a6000190180199091169216919091179052604051920182900382209350506001600160a01b03881691507f16de3299ab034ce7e21b22d55f4f9a1474bd3c4d20dbd1cc9bcd39c1ad3d5a2c90600090a4505050505050565b60076020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610eb65780601f10610e8b57610100808354040283529160200191610eb6565b820191906000526020600020905b815481529060010190602001808311610e9957829003601f168201915b505050505081565b60055481565b610ecc610b3f565b610ed557600080fd5b6106008161131d565b600082820183811015610ef057600080fd5b9392505050565b604080516323b872dd60e01b81526001600160a01b0385811660048301528481166024830152604482018490529151918616916323b872dd916064808201926020929091908290030181600087803b158015610f5257600080fd5b505af1158015610f66573d6000803e3d6000fd5b505050506040513d6020811015610f7c57600080fd5b5051610f8757600080fd5b50505050565b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610fed57600080fd5b505af1158015611001573d6000803e3d6000fd5b505050506040513d602081101561101757600080fd5b505161102257600080fd5b505050565b60006001600160a01b03821661103c57600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61106d60018263ffffffff61138b16565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6110ac611695565b6110b4611757565b6110bd836113d3565b905060606110d282600263ffffffff6113ea16565b9050806002815181106110e157fe5b602002602001015160405190808252806020026020018201604052801561111c57816020015b60608152602001906001900390816111075790505b50836020018190525060008160028151811061113457fe5b6020026020010181815250506000805b61114d8461147a565b156111f25761115b84611486565b9092509050816001141561117957611172846114b3565b85526111ed565b81600214156111dd5761118b846114b3565b85602001518460028151811061119d57fe5b6020026020010151815181106111af57fe5b6020026020010181905250826002815181106111c757fe5b60209081029190910101805160010190526111ed565b6111ed848263ffffffff61154016565b611144565b50505050919050565b6112036116af565b61120b611757565b611214836113d3565b90506000805b6112238361147a565b156112b85761123183611486565b909250905081600114156112605761125061124b846114b3565b6115a1565b6001600160a01b031684526112b3565b81600214156112845761127a611275846114b3565b6115ac565b60208501526112b3565b81600314156112a357611299611275846114b3565b60408501526112b3565b6112b3838263ffffffff61154016565b61121a565b505050919050565b6000828211156112cf57600080fd5b50900390565b6112e660018263ffffffff6115cf16565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6001600160a01b03811661133057600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811661139e57600080fd5b6113a88282611027565b6113b157600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6113db611757565b60208101919091526000815290565b81516040805160018401808252602080820283010190925260609291801561141c578160200160208202803883390190505b5091506000805b61142c8661147a565b156114715761143a86611486565b8092508193505050600184838151811061145057fe5b60200260200101818151019150818152505061146c8682611540565b611423565b50509092525090565b60208101515190511090565b60008060006114948461161b565b90506008810492508060071660058111156114ab57fe5b915050915091565b606060006114c08361161b565b83516020850151519192508201908111156114da57600080fd5b816040519080825280601f01601f191660200182016040528015611505576020820181803883390190505b50602080860151865192955091818601919083010160005b8581101561153557818101518382015260200161151d565b505050935250919050565b600081600581111561154e57fe5b14156115635761155d8261161b565b5061159d565b600281600581111561157157fe5b141561012c5760006115828361161b565b83518101808552602085015151919250111561155d57600080fd5b5050565b600061069782611676565b60006020825111156115bd57600080fd5b50602081810151915160089103021c90565b6001600160a01b0381166115e257600080fd5b6115ec8282611027565b156115f657600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b602080820151825181019091015160009182805b600a8110156116705783811a91508060070282607f16901b8517945081608016600014156116685785510160010185525061069a915050565b60010161162f565b50600080fd5b6000815160141461168657600080fd5b5060200151600160601b900490565b604051806040016040528060608152602001606081525090565b604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061171a5782800160ff19823516178555611747565b82800160010185558215611747579182015b8281111561174757823582559160200191906001019061172c565b50611753929150611771565b5090565b604051806040016040528060008152602001606081525090565b6106a691905b80821115611753576000815560010161177756fe56616c696461746f72207369677320766572696669636174696f6e206661696c65645365727669636520706f6f6c20697320736d616c6c6572207468616e206e6577207365727669636520726577617264a265627a7a723158200ef48f0fa8c2c39f174999979f900f8eed58c0a95e79562343d0db5c5f94678a64736f6c63430005110032" + +// DeploySGN deploys a new Ethereum contract, binding an instance of SGN to it. +func DeploySGN(auth *bind.TransactOpts, backend bind.ContractBackend, _celerTokenAddress common.Address, _DPoSAddress common.Address) (common.Address, *types.Transaction, *SGN, error) { + parsed, err := abi.JSON(strings.NewReader(SGNABI)) + if err != nil { + return common.Address{}, nil, nil, err + } + + address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SGNBin), backend, _celerTokenAddress, _DPoSAddress) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SGN{SGNCaller: SGNCaller{contract: contract}, SGNTransactor: SGNTransactor{contract: contract}, SGNFilterer: SGNFilterer{contract: contract}}, nil +} + +// SGN is an auto generated Go binding around an Ethereum contract. +type SGN struct { + SGNCaller // Read-only binding to the contract + SGNTransactor // Write-only binding to the contract + SGNFilterer // Log filterer for contract events +} + +// SGNCaller is an auto generated read-only Go binding around an Ethereum contract. +type SGNCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SGNTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SGNTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SGNFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SGNFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SGNSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SGNSession struct { + Contract *SGN // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SGNCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SGNCallerSession struct { + Contract *SGNCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SGNTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SGNTransactorSession struct { + Contract *SGNTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SGNRaw is an auto generated low-level Go binding around an Ethereum contract. +type SGNRaw struct { + Contract *SGN // Generic contract binding to access the raw methods on +} + +// SGNCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SGNCallerRaw struct { + Contract *SGNCaller // Generic read-only contract binding to access the raw methods on +} + +// SGNTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SGNTransactorRaw struct { + Contract *SGNTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSGN creates a new instance of SGN, bound to a specific deployed contract. +func NewSGN(address common.Address, backend bind.ContractBackend) (*SGN, error) { + contract, err := bindSGN(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SGN{SGNCaller: SGNCaller{contract: contract}, SGNTransactor: SGNTransactor{contract: contract}, SGNFilterer: SGNFilterer{contract: contract}}, nil +} + +// NewSGNCaller creates a new read-only instance of SGN, bound to a specific deployed contract. +func NewSGNCaller(address common.Address, caller bind.ContractCaller) (*SGNCaller, error) { + contract, err := bindSGN(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SGNCaller{contract: contract}, nil +} + +// NewSGNTransactor creates a new write-only instance of SGN, bound to a specific deployed contract. +func NewSGNTransactor(address common.Address, transactor bind.ContractTransactor) (*SGNTransactor, error) { + contract, err := bindSGN(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SGNTransactor{contract: contract}, nil +} + +// NewSGNFilterer creates a new log filterer instance of SGN, bound to a specific deployed contract. +func NewSGNFilterer(address common.Address, filterer bind.ContractFilterer) (*SGNFilterer, error) { + contract, err := bindSGN(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SGNFilterer{contract: contract}, nil +} + +// bindSGN binds a generic wrapper to an already deployed contract. +func bindSGN(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(SGNABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// 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 +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SGN *SGNRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SGN.Contract.SGNCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SGN *SGNRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SGN.Contract.SGNTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SGN *SGNRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SGN.Contract.SGNTransactor.contract.Transact(opts, method, params...) +} + +// 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 +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SGN *SGNCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SGN.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SGN *SGNTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SGN.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SGN *SGNTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SGN.Contract.contract.Transact(opts, method, params...) +} + +// CelerToken is a free data retrieval call binding the contract method 0xc6c21e9d. +// +// Solidity: function celerToken() view returns(address) +func (_SGN *SGNCaller) CelerToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SGN.contract.Call(opts, &out, "celerToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// CelerToken is a free data retrieval call binding the contract method 0xc6c21e9d. +// +// Solidity: function celerToken() view returns(address) +func (_SGN *SGNSession) CelerToken() (common.Address, error) { + return _SGN.Contract.CelerToken(&_SGN.CallOpts) +} + +// CelerToken is a free data retrieval call binding the contract method 0xc6c21e9d. +// +// Solidity: function celerToken() view returns(address) +func (_SGN *SGNCallerSession) CelerToken() (common.Address, error) { + return _SGN.Contract.CelerToken(&_SGN.CallOpts) +} + +// DPoSContract is a free data retrieval call binding the contract method 0x291a3eb2. +// +// Solidity: function dPoSContract() view returns(address) +func (_SGN *SGNCaller) DPoSContract(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SGN.contract.Call(opts, &out, "dPoSContract") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DPoSContract is a free data retrieval call binding the contract method 0x291a3eb2. +// +// Solidity: function dPoSContract() view returns(address) +func (_SGN *SGNSession) DPoSContract() (common.Address, error) { + return _SGN.Contract.DPoSContract(&_SGN.CallOpts) +} + +// DPoSContract is a free data retrieval call binding the contract method 0x291a3eb2. +// +// Solidity: function dPoSContract() view returns(address) +func (_SGN *SGNCallerSession) DPoSContract() (common.Address, error) { + return _SGN.Contract.DPoSContract(&_SGN.CallOpts) +} + +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_SGN *SGNCaller) IsOwner(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _SGN.contract.Call(opts, &out, "isOwner") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_SGN *SGNSession) IsOwner() (bool, error) { + return _SGN.Contract.IsOwner(&_SGN.CallOpts) +} + +// IsOwner is a free data retrieval call binding the contract method 0x8f32d59b. +// +// Solidity: function isOwner() view returns(bool) +func (_SGN *SGNCallerSession) IsOwner() (bool, error) { + return _SGN.Contract.IsOwner(&_SGN.CallOpts) +} + +// IsPauser is a free data retrieval call binding the contract method 0x46fbf68e. +// +// Solidity: function isPauser(address account) view returns(bool) +func (_SGN *SGNCaller) IsPauser(opts *bind.CallOpts, account common.Address) (bool, error) { + var out []interface{} + err := _SGN.contract.Call(opts, &out, "isPauser", account) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsPauser is a free data retrieval call binding the contract method 0x46fbf68e. +// +// Solidity: function isPauser(address account) view returns(bool) +func (_SGN *SGNSession) IsPauser(account common.Address) (bool, error) { + return _SGN.Contract.IsPauser(&_SGN.CallOpts, account) +} + +// IsPauser is a free data retrieval call binding the contract method 0x46fbf68e. +// +// Solidity: function isPauser(address account) view returns(bool) +func (_SGN *SGNCallerSession) IsPauser(account common.Address) (bool, error) { + return _SGN.Contract.IsPauser(&_SGN.CallOpts, account) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_SGN *SGNCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SGN.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_SGN *SGNSession) Owner() (common.Address, error) { + return _SGN.Contract.Owner(&_SGN.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_SGN *SGNCallerSession) Owner() (common.Address, error) { + return _SGN.Contract.Owner(&_SGN.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_SGN *SGNCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _SGN.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_SGN *SGNSession) Paused() (bool, error) { + return _SGN.Contract.Paused(&_SGN.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_SGN *SGNCallerSession) Paused() (bool, error) { + return _SGN.Contract.Paused(&_SGN.CallOpts) +} + +// RedeemedServiceReward is a free data retrieval call binding the contract method 0xc57f6661. +// +// Solidity: function redeemedServiceReward(address ) view returns(uint256) +func (_SGN *SGNCaller) RedeemedServiceReward(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _SGN.contract.Call(opts, &out, "redeemedServiceReward", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// RedeemedServiceReward is a free data retrieval call binding the contract method 0xc57f6661. +// +// Solidity: function redeemedServiceReward(address ) view returns(uint256) +func (_SGN *SGNSession) RedeemedServiceReward(arg0 common.Address) (*big.Int, error) { + return _SGN.Contract.RedeemedServiceReward(&_SGN.CallOpts, arg0) +} + +// RedeemedServiceReward is a free data retrieval call binding the contract method 0xc57f6661. +// +// Solidity: function redeemedServiceReward(address ) view returns(uint256) +func (_SGN *SGNCallerSession) RedeemedServiceReward(arg0 common.Address) (*big.Int, error) { + return _SGN.Contract.RedeemedServiceReward(&_SGN.CallOpts, arg0) +} + +// ServicePool is a free data retrieval call binding the contract method 0xe42a06c8. +// +// Solidity: function servicePool() view returns(uint256) +func (_SGN *SGNCaller) ServicePool(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _SGN.contract.Call(opts, &out, "servicePool") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ServicePool is a free data retrieval call binding the contract method 0xe42a06c8. +// +// Solidity: function servicePool() view returns(uint256) +func (_SGN *SGNSession) ServicePool() (*big.Int, error) { + return _SGN.Contract.ServicePool(&_SGN.CallOpts) +} + +// ServicePool is a free data retrieval call binding the contract method 0xe42a06c8. +// +// Solidity: function servicePool() view returns(uint256) +func (_SGN *SGNCallerSession) ServicePool() (*big.Int, error) { + return _SGN.Contract.ServicePool(&_SGN.CallOpts) +} + +// SidechainAddrMap is a free data retrieval call binding the contract method 0xe27b4110. +// +// Solidity: function sidechainAddrMap(address ) view returns(bytes) +func (_SGN *SGNCaller) SidechainAddrMap(opts *bind.CallOpts, arg0 common.Address) ([]byte, error) { + var out []interface{} + err := _SGN.contract.Call(opts, &out, "sidechainAddrMap", arg0) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// SidechainAddrMap is a free data retrieval call binding the contract method 0xe27b4110. +// +// Solidity: function sidechainAddrMap(address ) view returns(bytes) +func (_SGN *SGNSession) SidechainAddrMap(arg0 common.Address) ([]byte, error) { + return _SGN.Contract.SidechainAddrMap(&_SGN.CallOpts, arg0) +} + +// SidechainAddrMap is a free data retrieval call binding the contract method 0xe27b4110. +// +// Solidity: function sidechainAddrMap(address ) view returns(bytes) +func (_SGN *SGNCallerSession) SidechainAddrMap(arg0 common.Address) ([]byte, error) { + return _SGN.Contract.SidechainAddrMap(&_SGN.CallOpts, arg0) +} + +// SubscriptionDeposits is a free data retrieval call binding the contract method 0x1e77733a. +// +// Solidity: function subscriptionDeposits(address ) view returns(uint256) +func (_SGN *SGNCaller) SubscriptionDeposits(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _SGN.contract.Call(opts, &out, "subscriptionDeposits", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SubscriptionDeposits is a free data retrieval call binding the contract method 0x1e77733a. +// +// Solidity: function subscriptionDeposits(address ) view returns(uint256) +func (_SGN *SGNSession) SubscriptionDeposits(arg0 common.Address) (*big.Int, error) { + return _SGN.Contract.SubscriptionDeposits(&_SGN.CallOpts, arg0) +} + +// SubscriptionDeposits is a free data retrieval call binding the contract method 0x1e77733a. +// +// Solidity: function subscriptionDeposits(address ) view returns(uint256) +func (_SGN *SGNCallerSession) SubscriptionDeposits(arg0 common.Address) (*big.Int, error) { + return _SGN.Contract.SubscriptionDeposits(&_SGN.CallOpts, arg0) +} + +// AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4. +// +// Solidity: function addPauser(address account) returns() +func (_SGN *SGNTransactor) AddPauser(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { + return _SGN.contract.Transact(opts, "addPauser", account) +} + +// AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4. +// +// Solidity: function addPauser(address account) returns() +func (_SGN *SGNSession) AddPauser(account common.Address) (*types.Transaction, error) { + return _SGN.Contract.AddPauser(&_SGN.TransactOpts, account) +} + +// AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4. +// +// Solidity: function addPauser(address account) returns() +func (_SGN *SGNTransactorSession) AddPauser(account common.Address) (*types.Transaction, error) { + return _SGN.Contract.AddPauser(&_SGN.TransactOpts, account) +} + +// DrainToken is a paid mutator transaction binding the contract method 0x145aa116. +// +// Solidity: function drainToken(uint256 _amount) returns() +func (_SGN *SGNTransactor) DrainToken(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { + return _SGN.contract.Transact(opts, "drainToken", _amount) +} + +// DrainToken is a paid mutator transaction binding the contract method 0x145aa116. +// +// Solidity: function drainToken(uint256 _amount) returns() +func (_SGN *SGNSession) DrainToken(_amount *big.Int) (*types.Transaction, error) { + return _SGN.Contract.DrainToken(&_SGN.TransactOpts, _amount) +} + +// DrainToken is a paid mutator transaction binding the contract method 0x145aa116. +// +// Solidity: function drainToken(uint256 _amount) returns() +func (_SGN *SGNTransactorSession) DrainToken(_amount *big.Int) (*types.Transaction, error) { + return _SGN.Contract.DrainToken(&_SGN.TransactOpts, _amount) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_SGN *SGNTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SGN.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_SGN *SGNSession) Pause() (*types.Transaction, error) { + return _SGN.Contract.Pause(&_SGN.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_SGN *SGNTransactorSession) Pause() (*types.Transaction, error) { + return _SGN.Contract.Pause(&_SGN.TransactOpts) +} + +// RedeemReward is a paid mutator transaction binding the contract method 0x73a6e450. +// +// Solidity: function redeemReward(bytes _rewardRequest) returns() +func (_SGN *SGNTransactor) RedeemReward(opts *bind.TransactOpts, _rewardRequest []byte) (*types.Transaction, error) { + return _SGN.contract.Transact(opts, "redeemReward", _rewardRequest) +} + +// RedeemReward is a paid mutator transaction binding the contract method 0x73a6e450. +// +// Solidity: function redeemReward(bytes _rewardRequest) returns() +func (_SGN *SGNSession) RedeemReward(_rewardRequest []byte) (*types.Transaction, error) { + return _SGN.Contract.RedeemReward(&_SGN.TransactOpts, _rewardRequest) +} + +// RedeemReward is a paid mutator transaction binding the contract method 0x73a6e450. +// +// Solidity: function redeemReward(bytes _rewardRequest) returns() +func (_SGN *SGNTransactorSession) RedeemReward(_rewardRequest []byte) (*types.Transaction, error) { + return _SGN.Contract.RedeemReward(&_SGN.TransactOpts, _rewardRequest) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_SGN *SGNTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SGN.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_SGN *SGNSession) RenounceOwnership() (*types.Transaction, error) { + return _SGN.Contract.RenounceOwnership(&_SGN.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_SGN *SGNTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _SGN.Contract.RenounceOwnership(&_SGN.TransactOpts) +} + +// RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d. +// +// Solidity: function renouncePauser() returns() +func (_SGN *SGNTransactor) RenouncePauser(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SGN.contract.Transact(opts, "renouncePauser") +} + +// RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d. +// +// Solidity: function renouncePauser() returns() +func (_SGN *SGNSession) RenouncePauser() (*types.Transaction, error) { + return _SGN.Contract.RenouncePauser(&_SGN.TransactOpts) +} + +// RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d. +// +// Solidity: function renouncePauser() returns() +func (_SGN *SGNTransactorSession) RenouncePauser() (*types.Transaction, error) { + return _SGN.Contract.RenouncePauser(&_SGN.TransactOpts) +} + +// Subscribe is a paid mutator transaction binding the contract method 0x0f574ba7. +// +// Solidity: function subscribe(uint256 _amount) returns() +func (_SGN *SGNTransactor) Subscribe(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { + return _SGN.contract.Transact(opts, "subscribe", _amount) +} + +// Subscribe is a paid mutator transaction binding the contract method 0x0f574ba7. +// +// Solidity: function subscribe(uint256 _amount) returns() +func (_SGN *SGNSession) Subscribe(_amount *big.Int) (*types.Transaction, error) { + return _SGN.Contract.Subscribe(&_SGN.TransactOpts, _amount) +} + +// Subscribe is a paid mutator transaction binding the contract method 0x0f574ba7. +// +// Solidity: function subscribe(uint256 _amount) returns() +func (_SGN *SGNTransactorSession) Subscribe(_amount *big.Int) (*types.Transaction, error) { + return _SGN.Contract.Subscribe(&_SGN.TransactOpts, _amount) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_SGN *SGNTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _SGN.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_SGN *SGNSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _SGN.Contract.TransferOwnership(&_SGN.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_SGN *SGNTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _SGN.Contract.TransferOwnership(&_SGN.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_SGN *SGNTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SGN.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_SGN *SGNSession) Unpause() (*types.Transaction, error) { + return _SGN.Contract.Unpause(&_SGN.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_SGN *SGNTransactorSession) Unpause() (*types.Transaction, error) { + return _SGN.Contract.Unpause(&_SGN.TransactOpts) +} + +// UpdateSidechainAddr is a paid mutator transaction binding the contract method 0xe02f39bd. +// +// Solidity: function updateSidechainAddr(bytes _sidechainAddr) returns() +func (_SGN *SGNTransactor) UpdateSidechainAddr(opts *bind.TransactOpts, _sidechainAddr []byte) (*types.Transaction, error) { + return _SGN.contract.Transact(opts, "updateSidechainAddr", _sidechainAddr) +} + +// UpdateSidechainAddr is a paid mutator transaction binding the contract method 0xe02f39bd. +// +// Solidity: function updateSidechainAddr(bytes _sidechainAddr) returns() +func (_SGN *SGNSession) UpdateSidechainAddr(_sidechainAddr []byte) (*types.Transaction, error) { + return _SGN.Contract.UpdateSidechainAddr(&_SGN.TransactOpts, _sidechainAddr) +} + +// UpdateSidechainAddr is a paid mutator transaction binding the contract method 0xe02f39bd. +// +// Solidity: function updateSidechainAddr(bytes _sidechainAddr) returns() +func (_SGN *SGNTransactorSession) UpdateSidechainAddr(_sidechainAddr []byte) (*types.Transaction, error) { + return _SGN.Contract.UpdateSidechainAddr(&_SGN.TransactOpts, _sidechainAddr) +} + +// SGNAddSubscriptionBalanceIterator is returned from FilterAddSubscriptionBalance and is used to iterate over the raw logs and unpacked data for AddSubscriptionBalance events raised by the SGN contract. +type SGNAddSubscriptionBalanceIterator struct { + Event *SGNAddSubscriptionBalance // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SGNAddSubscriptionBalanceIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SGNAddSubscriptionBalance) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SGNAddSubscriptionBalance) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SGNAddSubscriptionBalanceIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SGNAddSubscriptionBalanceIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SGNAddSubscriptionBalance represents a AddSubscriptionBalance event raised by the SGN contract. +type SGNAddSubscriptionBalance struct { + Consumer common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAddSubscriptionBalance is a free log retrieval operation binding the contract event 0xac095ced75d400384d8404a37883183a56b937b8ff8195fa0c52c3ccc8bb8a49. +// +// Solidity: event AddSubscriptionBalance(address indexed consumer, uint256 amount) +func (_SGN *SGNFilterer) FilterAddSubscriptionBalance(opts *bind.FilterOpts, consumer []common.Address) (*SGNAddSubscriptionBalanceIterator, error) { + + var consumerRule []interface{} + for _, consumerItem := range consumer { + consumerRule = append(consumerRule, consumerItem) + } + + logs, sub, err := _SGN.contract.FilterLogs(opts, "AddSubscriptionBalance", consumerRule) + if err != nil { + return nil, err + } + return &SGNAddSubscriptionBalanceIterator{contract: _SGN.contract, event: "AddSubscriptionBalance", logs: logs, sub: sub}, nil +} + +// WatchAddSubscriptionBalance is a free log subscription operation binding the contract event 0xac095ced75d400384d8404a37883183a56b937b8ff8195fa0c52c3ccc8bb8a49. +// +// Solidity: event AddSubscriptionBalance(address indexed consumer, uint256 amount) +func (_SGN *SGNFilterer) WatchAddSubscriptionBalance(opts *bind.WatchOpts, sink chan<- *SGNAddSubscriptionBalance, consumer []common.Address) (event.Subscription, error) { + + var consumerRule []interface{} + for _, consumerItem := range consumer { + consumerRule = append(consumerRule, consumerItem) + } + + logs, sub, err := _SGN.contract.WatchLogs(opts, "AddSubscriptionBalance", consumerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SGNAddSubscriptionBalance) + if err := _SGN.contract.UnpackLog(event, "AddSubscriptionBalance", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAddSubscriptionBalance is a log parse operation binding the contract event 0xac095ced75d400384d8404a37883183a56b937b8ff8195fa0c52c3ccc8bb8a49. +// +// Solidity: event AddSubscriptionBalance(address indexed consumer, uint256 amount) +func (_SGN *SGNFilterer) ParseAddSubscriptionBalance(log types.Log) (*SGNAddSubscriptionBalance, error) { + event := new(SGNAddSubscriptionBalance) + if err := _SGN.contract.UnpackLog(event, "AddSubscriptionBalance", log); err != nil { + return nil, err + } + return event, nil +} + +// SGNOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the SGN contract. +type SGNOwnershipTransferredIterator struct { + Event *SGNOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SGNOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SGNOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SGNOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SGNOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SGNOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SGNOwnershipTransferred represents a OwnershipTransferred event raised by the SGN contract. +type SGNOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_SGN *SGNFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*SGNOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _SGN.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &SGNOwnershipTransferredIterator{contract: _SGN.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_SGN *SGNFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *SGNOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _SGN.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SGNOwnershipTransferred) + if err := _SGN.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_SGN *SGNFilterer) ParseOwnershipTransferred(log types.Log) (*SGNOwnershipTransferred, error) { + event := new(SGNOwnershipTransferred) + if err := _SGN.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + return event, nil +} + +// SGNPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the SGN contract. +type SGNPausedIterator struct { + Event *SGNPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SGNPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SGNPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SGNPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SGNPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SGNPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SGNPaused represents a Paused event raised by the SGN contract. +type SGNPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_SGN *SGNFilterer) FilterPaused(opts *bind.FilterOpts) (*SGNPausedIterator, error) { + + logs, sub, err := _SGN.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &SGNPausedIterator{contract: _SGN.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_SGN *SGNFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *SGNPaused) (event.Subscription, error) { + + logs, sub, err := _SGN.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SGNPaused) + if err := _SGN.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_SGN *SGNFilterer) ParsePaused(log types.Log) (*SGNPaused, error) { + event := new(SGNPaused) + if err := _SGN.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + return event, nil +} + +// SGNPauserAddedIterator is returned from FilterPauserAdded and is used to iterate over the raw logs and unpacked data for PauserAdded events raised by the SGN contract. +type SGNPauserAddedIterator struct { + Event *SGNPauserAdded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SGNPauserAddedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SGNPauserAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SGNPauserAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SGNPauserAddedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SGNPauserAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SGNPauserAdded represents a PauserAdded event raised by the SGN contract. +type SGNPauserAdded struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPauserAdded is a free log retrieval operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8. +// +// Solidity: event PauserAdded(address indexed account) +func (_SGN *SGNFilterer) FilterPauserAdded(opts *bind.FilterOpts, account []common.Address) (*SGNPauserAddedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _SGN.contract.FilterLogs(opts, "PauserAdded", accountRule) + if err != nil { + return nil, err + } + return &SGNPauserAddedIterator{contract: _SGN.contract, event: "PauserAdded", logs: logs, sub: sub}, nil +} + +// WatchPauserAdded is a free log subscription operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8. +// +// Solidity: event PauserAdded(address indexed account) +func (_SGN *SGNFilterer) WatchPauserAdded(opts *bind.WatchOpts, sink chan<- *SGNPauserAdded, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _SGN.contract.WatchLogs(opts, "PauserAdded", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SGNPauserAdded) + if err := _SGN.contract.UnpackLog(event, "PauserAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePauserAdded is a log parse operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8. +// +// Solidity: event PauserAdded(address indexed account) +func (_SGN *SGNFilterer) ParsePauserAdded(log types.Log) (*SGNPauserAdded, error) { + event := new(SGNPauserAdded) + if err := _SGN.contract.UnpackLog(event, "PauserAdded", log); err != nil { + return nil, err + } + return event, nil +} + +// SGNPauserRemovedIterator is returned from FilterPauserRemoved and is used to iterate over the raw logs and unpacked data for PauserRemoved events raised by the SGN contract. +type SGNPauserRemovedIterator struct { + Event *SGNPauserRemoved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SGNPauserRemovedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SGNPauserRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SGNPauserRemoved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SGNPauserRemovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SGNPauserRemovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SGNPauserRemoved represents a PauserRemoved event raised by the SGN contract. +type SGNPauserRemoved struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPauserRemoved is a free log retrieval operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e. +// +// Solidity: event PauserRemoved(address indexed account) +func (_SGN *SGNFilterer) FilterPauserRemoved(opts *bind.FilterOpts, account []common.Address) (*SGNPauserRemovedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _SGN.contract.FilterLogs(opts, "PauserRemoved", accountRule) + if err != nil { + return nil, err + } + return &SGNPauserRemovedIterator{contract: _SGN.contract, event: "PauserRemoved", logs: logs, sub: sub}, nil +} + +// WatchPauserRemoved is a free log subscription operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e. +// +// Solidity: event PauserRemoved(address indexed account) +func (_SGN *SGNFilterer) WatchPauserRemoved(opts *bind.WatchOpts, sink chan<- *SGNPauserRemoved, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _SGN.contract.WatchLogs(opts, "PauserRemoved", accountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SGNPauserRemoved) + if err := _SGN.contract.UnpackLog(event, "PauserRemoved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePauserRemoved is a log parse operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e. +// +// Solidity: event PauserRemoved(address indexed account) +func (_SGN *SGNFilterer) ParsePauserRemoved(log types.Log) (*SGNPauserRemoved, error) { + event := new(SGNPauserRemoved) + if err := _SGN.contract.UnpackLog(event, "PauserRemoved", log); err != nil { + return nil, err + } + return event, nil +} + +// SGNRedeemRewardIterator is returned from FilterRedeemReward and is used to iterate over the raw logs and unpacked data for RedeemReward events raised by the SGN contract. +type SGNRedeemRewardIterator struct { + Event *SGNRedeemReward // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SGNRedeemRewardIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SGNRedeemReward) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SGNRedeemReward) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SGNRedeemRewardIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SGNRedeemRewardIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SGNRedeemReward represents a RedeemReward event raised by the SGN contract. +type SGNRedeemReward struct { + Receiver common.Address + CumulativeMiningReward *big.Int + ServiceReward *big.Int + ServicePool *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRedeemReward is a free log retrieval operation binding the contract event 0x09251621f2e88c5e7f8df91fe1d9e9a70610e20e122945470fddd48af0510426. +// +// Solidity: event RedeemReward(address indexed receiver, uint256 cumulativeMiningReward, uint256 serviceReward, uint256 servicePool) +func (_SGN *SGNFilterer) FilterRedeemReward(opts *bind.FilterOpts, receiver []common.Address) (*SGNRedeemRewardIterator, error) { + + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _SGN.contract.FilterLogs(opts, "RedeemReward", receiverRule) + if err != nil { + return nil, err + } + return &SGNRedeemRewardIterator{contract: _SGN.contract, event: "RedeemReward", logs: logs, sub: sub}, nil +} + +// WatchRedeemReward is a free log subscription operation binding the contract event 0x09251621f2e88c5e7f8df91fe1d9e9a70610e20e122945470fddd48af0510426. +// +// Solidity: event RedeemReward(address indexed receiver, uint256 cumulativeMiningReward, uint256 serviceReward, uint256 servicePool) +func (_SGN *SGNFilterer) WatchRedeemReward(opts *bind.WatchOpts, sink chan<- *SGNRedeemReward, receiver []common.Address) (event.Subscription, error) { + + var receiverRule []interface{} + for _, receiverItem := range receiver { + receiverRule = append(receiverRule, receiverItem) + } + + logs, sub, err := _SGN.contract.WatchLogs(opts, "RedeemReward", receiverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SGNRedeemReward) + if err := _SGN.contract.UnpackLog(event, "RedeemReward", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRedeemReward is a log parse operation binding the contract event 0x09251621f2e88c5e7f8df91fe1d9e9a70610e20e122945470fddd48af0510426. +// +// Solidity: event RedeemReward(address indexed receiver, uint256 cumulativeMiningReward, uint256 serviceReward, uint256 servicePool) +func (_SGN *SGNFilterer) ParseRedeemReward(log types.Log) (*SGNRedeemReward, error) { + event := new(SGNRedeemReward) + if err := _SGN.contract.UnpackLog(event, "RedeemReward", log); err != nil { + return nil, err + } + return event, nil +} + +// SGNUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the SGN contract. +type SGNUnpausedIterator struct { + Event *SGNUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SGNUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SGNUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SGNUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SGNUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SGNUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SGNUnpaused represents a Unpaused event raised by the SGN contract. +type SGNUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_SGN *SGNFilterer) FilterUnpaused(opts *bind.FilterOpts) (*SGNUnpausedIterator, error) { + + logs, sub, err := _SGN.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &SGNUnpausedIterator{contract: _SGN.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_SGN *SGNFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *SGNUnpaused) (event.Subscription, error) { + + logs, sub, err := _SGN.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SGNUnpaused) + if err := _SGN.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_SGN *SGNFilterer) ParseUnpaused(log types.Log) (*SGNUnpaused, error) { + event := new(SGNUnpaused) + if err := _SGN.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + return event, nil +} + +// SGNUpdateSidechainAddrIterator is returned from FilterUpdateSidechainAddr and is used to iterate over the raw logs and unpacked data for UpdateSidechainAddr events raised by the SGN contract. +type SGNUpdateSidechainAddrIterator struct { + Event *SGNUpdateSidechainAddr // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SGNUpdateSidechainAddrIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SGNUpdateSidechainAddr) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SGNUpdateSidechainAddr) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SGNUpdateSidechainAddrIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SGNUpdateSidechainAddrIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SGNUpdateSidechainAddr represents a UpdateSidechainAddr event raised by the SGN contract. +type SGNUpdateSidechainAddr struct { + Candidate common.Address + OldSidechainAddr common.Hash + NewSidechainAddr common.Hash + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdateSidechainAddr is a free log retrieval operation binding the contract event 0x16de3299ab034ce7e21b22d55f4f9a1474bd3c4d20dbd1cc9bcd39c1ad3d5a2c. +// +// Solidity: event UpdateSidechainAddr(address indexed candidate, bytes indexed oldSidechainAddr, bytes indexed newSidechainAddr) +func (_SGN *SGNFilterer) FilterUpdateSidechainAddr(opts *bind.FilterOpts, candidate []common.Address, oldSidechainAddr [][]byte, newSidechainAddr [][]byte) (*SGNUpdateSidechainAddrIterator, error) { + + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + var oldSidechainAddrRule []interface{} + for _, oldSidechainAddrItem := range oldSidechainAddr { + oldSidechainAddrRule = append(oldSidechainAddrRule, oldSidechainAddrItem) + } + var newSidechainAddrRule []interface{} + for _, newSidechainAddrItem := range newSidechainAddr { + newSidechainAddrRule = append(newSidechainAddrRule, newSidechainAddrItem) + } + + logs, sub, err := _SGN.contract.FilterLogs(opts, "UpdateSidechainAddr", candidateRule, oldSidechainAddrRule, newSidechainAddrRule) + if err != nil { + return nil, err + } + return &SGNUpdateSidechainAddrIterator{contract: _SGN.contract, event: "UpdateSidechainAddr", logs: logs, sub: sub}, nil +} + +// WatchUpdateSidechainAddr is a free log subscription operation binding the contract event 0x16de3299ab034ce7e21b22d55f4f9a1474bd3c4d20dbd1cc9bcd39c1ad3d5a2c. +// +// Solidity: event UpdateSidechainAddr(address indexed candidate, bytes indexed oldSidechainAddr, bytes indexed newSidechainAddr) +func (_SGN *SGNFilterer) WatchUpdateSidechainAddr(opts *bind.WatchOpts, sink chan<- *SGNUpdateSidechainAddr, candidate []common.Address, oldSidechainAddr [][]byte, newSidechainAddr [][]byte) (event.Subscription, error) { + + var candidateRule []interface{} + for _, candidateItem := range candidate { + candidateRule = append(candidateRule, candidateItem) + } + var oldSidechainAddrRule []interface{} + for _, oldSidechainAddrItem := range oldSidechainAddr { + oldSidechainAddrRule = append(oldSidechainAddrRule, oldSidechainAddrItem) + } + var newSidechainAddrRule []interface{} + for _, newSidechainAddrItem := range newSidechainAddr { + newSidechainAddrRule = append(newSidechainAddrRule, newSidechainAddrItem) + } + + logs, sub, err := _SGN.contract.WatchLogs(opts, "UpdateSidechainAddr", candidateRule, oldSidechainAddrRule, newSidechainAddrRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SGNUpdateSidechainAddr) + if err := _SGN.contract.UnpackLog(event, "UpdateSidechainAddr", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdateSidechainAddr is a log parse operation binding the contract event 0x16de3299ab034ce7e21b22d55f4f9a1474bd3c4d20dbd1cc9bcd39c1ad3d5a2c. +// +// Solidity: event UpdateSidechainAddr(address indexed candidate, bytes indexed oldSidechainAddr, bytes indexed newSidechainAddr) +func (_SGN *SGNFilterer) ParseUpdateSidechainAddr(log types.Log) (*SGNUpdateSidechainAddr, error) { + event := new(SGNUpdateSidechainAddr) + if err := _SGN.contract.UnpackLog(event, "UpdateSidechainAddr", log); err != nil { + return nil, err + } + return event, nil +} diff --git a/gen_and_push.sh b/gen_and_push.sh index 358d4dc..0dbed8a 100755 --- a/gen_and_push.sh +++ b/gen_and_push.sh @@ -35,15 +35,15 @@ update_genfiles() { # append a new commit with generated files to current PR commit_and_push() { git add genfiles/ - git commit -m "Update genfiles by build bot" -m "$TRUFFLE_VER" + git add bindings/ + git commit -m "Update genfiles and bindings by build bot" -m "$TRUFFLE_VER" # gh_token is an env in CI project setting git push https://${GH_TOKEN}@github.com/celer-network/sgn-contract.git $BRANCH &>/dev/null } # $1 is contract abi/bin name, $2 is go pkg name abigen_files() { - # mkdir -p $2 - ../node_modules/.bin/abigen -abi ../genfiles/$1.abi -bin ../genfiles/$1.bin -pkg $2 -type $1 -out $2/$3.go + ./node_modules/.bin/abigen -abi ./genfiles/$1.abi -bin ./genfiles/$1.bin -pkg $3 -type $1 -out $2/$3/$4.go } # send a PR to gobinding repo @@ -51,26 +51,10 @@ sync_go_binding() { echo "sync go binding ..." PR_COMMIT_ID=$(git rev-parse --short HEAD) echo sgn-contract PR Head Commit: $PR_COMMIT_ID - REPO=https://${GH_TOKEN}@github.com/celer-network/sgn.git - git clone $REPO sgn - pushd sgn - git checkout develop # based on develop branch of sgn repo - git fetch - echo "checkout branch $BRANCH" - git checkout $BRANCH || git checkout -b $BRANCH git status echo "abigen files ..." - abigen_files DPoS mainchain dpos - abigen_files SGN mainchain sgn - if [[ $(git status --porcelain) ]]; then - echo "syncing go binding on branch $BRANCH" - git add . - git status - git commit -m "Sync go binding based on sgn-contract PR $PRID" -m "sgn-contract commit: $PR_COMMIT_ID" - git push origin $BRANCH - fi - popd - rm -rf sgn + abigen_files DPoS bindings/go mainchain dpos + abigen_files SGN bindings/go mainchain sgn } echo "update go binding ..." diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..0633ef6 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/celer-network/sgn-contract + +go 1.15 + +require github.com/ethereum/go-ethereum v1.9.24 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..e699f66 --- /dev/null +++ b/go.sum @@ -0,0 +1,258 @@ +github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= +github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= +github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/VictoriaMetrics/fastcache v1.5.7 h1:4y6y0G8PRzszQUYIQHHssv/jgPHAb5qQuuDNdCbyAgw= +github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6RoTu1dAWCbrk+6WsEM8= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847 h1:rtI0fD4oG/8eVokGVPYJEW1F88p1ZNgXiEIs9thEE4A= +github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1:D/tb0zPVXnP7fmsLZjtdUhSsumbK/ij54UXjjVgMGxQ= +github.com/aws/aws-sdk-go v1.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6 h1:Eey/GGQ/E5Xp1P2Lyx1qj007hLZfbi0+CoVeJruGCtI= +github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ= +github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= +github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9/go.mod h1:1MxXX1Ux4x6mqPmjkUgTP1CdXIBXKX7T+Jk9Gxrmx+U= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea h1:j4317fAZh7X6GqbFowYdYdI0L9bwxL07jyPZIdepyZ0= +github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA= +github.com/dvyukov/go-fuzz v0.0.0-20200318091601-be3528f3a813/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= +github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c h1:JHHhtb9XWJrGNMcrVP6vyzO4dusgi/HnceHTgxSejUM= +github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/ethereum/go-ethereum v1.9.24 h1:6AK+ORt3EMDO+FTjzXy/AQwHMbu52J2nYHIjyQX9azQ= +github.com/ethereum/go-ethereum v1.9.24/go.mod h1:JIfVb6esrqALTExdz9hRYvrP0xBDf6wCncIu1hNwHpM= +github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc h1:jtW8jbpkO4YirRSyepBOH8E+2HEw6/hKkBvFPwhUN8c= +github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/go-kit/kit v0.8.0 h1:Wz+5lgoB0kkuqLEc6NVmwRknTKP6dTGbSqvhZtBI/j0= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0 h1:8HUsc87TaSWLKwrnumgC8/YconD2fJQsRJAsWaPg2ic= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E= +github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.2-0.20200707131729-196ae77b8a26 h1:lMm2hD9Fy0ynom5+85/pbdkiYcBqM1JWmhpAXLmy0fw= +github.com/golang/snappy v0.0.2-0.20200707131729-196ae77b8a26/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/gorilla/websocket v1.4.1-0.20190629185528-ae1634f6a989 h1:giknQ4mEuDFmmHSrGcbargOuLHQGtywqo4mheITex54= +github.com/gorilla/websocket v1.4.1-0.20190629185528-ae1634f6a989/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/graph-gophers/graphql-go v0.0.0-20191115155744-f33e81362277/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/holiman/uint256 v1.1.1 h1:4JywC80b+/hSfljFlEBLHrrh+CIONLDz9NuFl0af4Mw= +github.com/holiman/uint256 v1.1.1/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huin/goupnp v1.0.0 h1:wg75sLpL6DZqwHQN6E1Cfk6mtfzS45z8OV+ic+DtHRo= +github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= +github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= +github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458 h1:6OvNmYgJyexcZ3pYbTI9jWx5tHo1Dee/tWbLMfPe2TA= +github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/julienschmidt/httprouter v1.1.1-0.20170430222011-975b5c4c7c21/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356 h1:I/yrLt2WilKxlQKCM52clh5rGzTKpVctGT1lH4Dc8Jw= +github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/mattn/go-colorable v0.1.0 h1:v2XXALHHh6zHfYTJ+cSkwtyffnaOyR1MXaA91mTrb8o= +github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035 h1:USWjF42jDCSEeikX/G1g40ZWnsPXN5WkZ4jMHZWyBK4= +github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= +github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c h1:1RHs3tNxjXGHeul8z2t6H2N2TlAqpKe5yryJztRx4Jk= +github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222 h1:goeTyGkArOZIVOMA0dQbyuPWGNQJZGPwPu/QS9GlpnA= +github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= +github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 h1:oYW+YCJ1pachXTQmzR3rNLYGGz4g/UgFcjb28p/viDM= +github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150 h1:ZeU+auZj1iNzN8iVhff6M38Mfu73FQiJve/GEXYJBjE= +github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rjeczalik/notify v0.9.1 h1:CLCKso/QK1snAlnhNR/CNvNiFU2saUtjV0bx3EwNeCE= +github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= +github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00 h1:8DPul/X0IT/1TNMIxoKLwdemEOBBHDC/K4EB16Cw5WE= +github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521 h1:3hxavr+IHMsQBrYUPQM5v0CgENFktkkbg1sfpgM3h20= +github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubrpZHtQLnOf6EwhN2hEMusxZOhcW9H3UQ= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shirou/gopsutil v2.20.5+incompatible h1:tYH07UPoQt0OCQdgWWMgYHy3/a9bcxNpBIysykNIP7I= +github.com/shirou/gopsutil v2.20.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4 h1:Gb2Tyox57NRNuZ2d3rmvB3pcmbu7O1RS3m8WRx7ilrg= +github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= +github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570 h1:gIlAHnH1vJb5vwEjIp5kBj/eu99p/bl0Ay2goiPe5xE= +github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570/go.mod h1:8OR4w3TdeIHIh1g6EMY5p0gVNOovcWC+1vpc7naMuAw= +github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3 h1:njlZPzLwU639dk2kqnCPPv+wNjq7Xb6EfUxe/oX0/NM= +github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca h1:Ld/zXl5t4+D69SiV4JoN7kkfvJdOWlPpfxrzxpLMoUk= +github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= +github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef h1:wHSqTBrZW24CsNJDfeh9Ex6Pm0Rcpc7qrgKBiL44vF4= +github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208 h1:1cngl9mPEoITZG8s8cVcUy5CeIBYhEESkOB7m6Gmkrk= +github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20200801112145-973feb4309de/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200824131525-c12d262b63d8 h1:AvbQYmiaaaza3cW3QXRyPo5kYgpFIzOAfeAAN7m3qQ4= +golang.org/x/sys v0.0.0-20200824131525-c12d262b63d8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= +gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/urfave/cli.v1 v1.20.0 h1:NdAVW6RYxDif9DhDHaAortIu956m2c0v+09AZBPTbE0= +gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= diff --git a/package-lock.json b/package-lock.json index 280d0ae..a41e397 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,8 @@ { - "requires": true, + "name": "sgn-contract", + "version": "0.2.6", "lockfileVersion": 1, + "requires": true, "dependencies": { "@babel/code-frame": { "version": "7.10.4", @@ -145,9 +147,9 @@ } }, "@eslint/eslintrc": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", - "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", + "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -162,33 +164,15 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { "ms": "2.1.2" } }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, "globals": { "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", @@ -222,60 +206,97 @@ "@ethersproject/strings": ">=5.0.0-beta.130" } }, + "@ethersproject/abstract-provider": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.7.tgz", + "integrity": "sha512-NF16JGn6M0zZP5ZS8KtDL2Rh7yHxZbUjBIHLNHMm/0X0BephhjUWy8jqs/Zks6kDJRzNthgmPVy41Ec0RYWPYA==", + "requires": { + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/networks": "^5.0.3", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/transactions": "^5.0.5", + "@ethersproject/web": "^5.0.6" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.9.tgz", + "integrity": "sha512-CM5UNmXQaA03MyYARFDDRjHWBxujO41tVle7glf5kHcQsDDULgqSVpkliLJMtPzZjOKFeCVZBHybTZDEZg5zzg==", + "requires": { + "@ethersproject/abstract-provider": "^5.0.4", + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3" + } + }, "@ethersproject/address": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.3.tgz", - "integrity": "sha512-LMmLxL1wTNtvwgm/eegcaxtG/W7vHXKzHGUkK9KZEI9W+SfHrpT7cGX+hBcatcUXPANjS3TmOaQ+mq5JU5sGTw==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.8.tgz", + "integrity": "sha512-V87DHiZMZR6hmFYmoGaHex0D53UEbZpW75uj8AqPbjYUmi65RB4N2LPRcJXuWuN2R0Y2CxkvW6ArijWychr5FA==", "requires": { - "@ethersproject/bignumber": "^5.0.6", + "@ethersproject/bignumber": "^5.0.10", "@ethersproject/bytes": "^5.0.4", "@ethersproject/keccak256": "^5.0.3", "@ethersproject/logger": "^5.0.5", - "@ethersproject/rlp": "^5.0.3", - "bn.js": "^4.4.0" + "@ethersproject/rlp": "^5.0.3" } }, - "@ethersproject/bignumber": { + "@ethersproject/base64": { "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.6.tgz", - "integrity": "sha512-fLilYOSH3DJXBrimx7PwrJdY/zAI5MGp229Mvhtcur76Lgt4qNWu9HTiwMGHP01Tkm3YP5gweF83GrQrA2tYUA==", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.6.tgz", + "integrity": "sha512-HwrGn8YMiUf7bcdVvB4NJ+eWT0BtEFpDtrYxVXEbR7p/XBSJjwiR7DEggIiRvxbualMKg+EZijQWJ3az2li0uw==", "requires": { - "@ethersproject/bytes": "^5.0.4", + "@ethersproject/bytes": "^5.0.4" + } + }, + "@ethersproject/bignumber": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.12.tgz", + "integrity": "sha512-mbFZjwthx6vFlHG9owXP/C5QkNvsA+xHpDCkPPPdG2n1dS9AmZAL5DI0InNLid60rQWL3MXpEl19tFmtL7Q9jw==", + "requires": { + "@ethersproject/bytes": "^5.0.8", "@ethersproject/logger": "^5.0.5", "bn.js": "^4.4.0" } }, "@ethersproject/bytes": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.4.tgz", - "integrity": "sha512-9R6A6l9JN8x1U4s1dJCR+9h3MZTT3xQofr/Xx8wbDvj6NnY4CbBB0o8ZgHXvR74yV90pY2EzCekpkMBJnRzkSw==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.8.tgz", + "integrity": "sha512-O+sJNVGzzuy51g+EMK8BegomqNIg+C2RO6vOt0XP6ac4o4saiq69FnjlsrNslaiMFVO7qcEHBsWJ9hx1tj1lMw==", "requires": { "@ethersproject/logger": "^5.0.5" } }, "@ethersproject/constants": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.3.tgz", - "integrity": "sha512-iN7KBrA0zNFybDyrkcAPOcyU3CHXYFMd+KM2Jr07Kjg+DVB5wPpEXsOdd/K1KWFsFtGfNdPZ7QP8siLtCePXrQ==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.7.tgz", + "integrity": "sha512-cbQK1UpE4hamB52Eg6DLhJoXeQ1plSzekh5Ujir1xdREdwdsZPPXKczkrWqBBR0KyywJZHN/o/hj0w8j7scSGg==", "requires": { - "@ethersproject/bignumber": "^5.0.6" + "@ethersproject/bignumber": "^5.0.7" } }, "@ethersproject/hash": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.3.tgz", - "integrity": "sha512-KSnJyL0G9lxbOK0UPrUcaYTc/RidrX8c+kn7xnEpTmSGxqlndw4BzvQcRgYt31bOIwuFtwlWvOo6AN2tJgdQtA==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.8.tgz", + "integrity": "sha512-Qay01tcFyFreYjSMt82rOQGMfQDmLm1sj3iNNO1BhrVf840xgBZuJ7gBATERzAjTuTCHUHw9BuGwxErJUS95yg==", "requires": { + "@ethersproject/abstract-signer": "^5.0.6", + "@ethersproject/address": "^5.0.5", + "@ethersproject/bignumber": "^5.0.8", "@ethersproject/bytes": "^5.0.4", "@ethersproject/keccak256": "^5.0.3", "@ethersproject/logger": "^5.0.5", - "@ethersproject/strings": "^5.0.3" + "@ethersproject/properties": "^5.0.4", + "@ethersproject/strings": "^5.0.4" } }, "@ethersproject/keccak256": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.3.tgz", - "integrity": "sha512-VhW3mgZMBZlETV6AyOmjNeNG+Pg68igiKkPpat8/FZl0CKnfgQ+KZQZ/ee1vT+X0IUM8/djqnei6btmtbA27Ug==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.6.tgz", + "integrity": "sha512-eJ4Id/i2rwrf5JXEA7a12bG1phuxjj47mPZgDUbttuNBodhSuZF2nEO5QdpaRjmlphQ8Kt9PNqY/z7lhtJptZg==", "requires": { "@ethersproject/bytes": "^5.0.4", "js-sha3": "0.5.7" @@ -289,31 +310,39 @@ } }, "@ethersproject/logger": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.5.tgz", - "integrity": "sha512-gJj72WGzQhUtCk6kfvI8elTaPOQyMvrMghp/nbz0ivTo39fZ7IjypFh/ySDeUSdBNplAwhzWKKejQhdpyefg/w==" + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.8.tgz", + "integrity": "sha512-SkJCTaVTnaZ3/ieLF5pVftxGEFX56pTH+f2Slrpv7cU0TNpUZNib84QQdukd++sWUp/S7j5t5NW+WegbXd4U/A==" + }, + "@ethersproject/networks": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.6.tgz", + "integrity": "sha512-2Cg1N5109zzFOBfkyuPj+FfF7ioqAsRffmybJ2lrsiB5skphIAE72XNSCs4fqktlf+rwSh/5o/UXRjXxvSktZw==", + "requires": { + "@ethersproject/logger": "^5.0.5" + } }, "@ethersproject/properties": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.3.tgz", - "integrity": "sha512-wLCSrbywkQgTO6tIF9ZdKsH9AIxPEqAJF/z5xcPkz1DK4mMAZgAXRNw1MrKYhyb+7CqNHbj3vxenNKFavGY/IA==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.6.tgz", + "integrity": "sha512-a9DUMizYhJ0TbtuDkO9iYlb2CDlpSKqGPDr+amvlZhRspQ6jbl5Eq8jfu4SCcGlcfaTbguJmqGnyOGn1EFt6xA==", "requires": { "@ethersproject/logger": "^5.0.5" } }, "@ethersproject/rlp": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.3.tgz", - "integrity": "sha512-Hz4yyA/ilGafASAqtTlLWkA/YqwhQmhbDAq2LSIp1AJNx+wtbKWFAKSckpeZ+WG/xZmT+fw5OFKK7a5IZ4DR5g==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.6.tgz", + "integrity": "sha512-M223MTaydfmQSsvqAl0FJZDYFlSqt6cgbhnssLDwqCKYegAHE16vrFyo+eiOapYlt32XAIJm0BXlqSunULzZuQ==", "requires": { "@ethersproject/bytes": "^5.0.4", "@ethersproject/logger": "^5.0.5" } }, "@ethersproject/signing-key": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.4.tgz", - "integrity": "sha512-I6pJoga1IvhtjYK5yXzCjs4ZpxrVbt9ZRAlpEw0SW9UuV020YfJH5EIVEGR2evdRceS3nAQIggqbsXSkP8Y1Dg==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.7.tgz", + "integrity": "sha512-JYndnhFPKH0daPcIjyhi+GMcw3srIHkQ40hGRe6DA0CdGrpMfgyfSYDQ2D8HL2lgR+Xm4SHfEB0qba6+sCyrvg==", "requires": { "@ethersproject/bytes": "^5.0.4", "@ethersproject/logger": "^5.0.5", @@ -322,24 +351,24 @@ } }, "@ethersproject/strings": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.3.tgz", - "integrity": "sha512-8kEx3+Z6cMn581yh093qnaSa8H7XzmLn6g8YFDHUpzXM7+bvXvnL2ciHrJ+EbvaMQZpej6nNtl0nm7XF4PmQHA==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.7.tgz", + "integrity": "sha512-a+6T80LvmXGMOOWQTZHtGGQEg1z4v8rm8oX70KNs55YtPXI/5J3LBbVf5pyqCKSlmiBw5IaepPvs5XGalRUSZQ==", "requires": { "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.3", + "@ethersproject/constants": "^5.0.4", "@ethersproject/logger": "^5.0.5" } }, "@ethersproject/transactions": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.4.tgz", - "integrity": "sha512-QvS5CzxmL46D9Y3OlddurYgEIi5mb0eAgrKm5pM074Uz/1qxCYr+Ah12I4hpaciZtCq4Fe12YWZqUFb1vGcH6Q==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.8.tgz", + "integrity": "sha512-i7NtOXVzUe+YSU6QufzlRrI2WzHaTmULAKHJv4duIZMLqzehCBXGA9lTpFgFdqGYcQJ7vOtNFC2BB2mSjmuXqg==", "requires": { - "@ethersproject/address": "^5.0.3", - "@ethersproject/bignumber": "^5.0.6", + "@ethersproject/address": "^5.0.4", + "@ethersproject/bignumber": "^5.0.7", "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.3", + "@ethersproject/constants": "^5.0.4", "@ethersproject/keccak256": "^5.0.3", "@ethersproject/logger": "^5.0.5", "@ethersproject/properties": "^5.0.3", @@ -347,6 +376,18 @@ "@ethersproject/signing-key": "^5.0.4" } }, + "@ethersproject/web": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.11.tgz", + "integrity": "sha512-x03ihbPoN1S8Gsh9WSwxkYxUIumLi02ZEKJku1C43sxBfe+mdprWyvujzYlpuoRNfWRgNhdRDKMP8JbG6MwNGA==", + "requires": { + "@ethersproject/base64": "^5.0.3", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.4" + } + }, "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -407,10 +448,13 @@ "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" }, "@solidity-parser/parser": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.7.1.tgz", - "integrity": "sha512-5ma2uuwPAEX1TPl2rAPAAuGlBkKnn2oUKQvnhTFlDIB8U/KDWX77FpHtL6Rcz+OwqSCWx9IClxACgyIEJ/GhIw==", - "dev": true + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.9.1.tgz", + "integrity": "sha512-ewNo+ZEQX8mFUOlTK6+0IYvM++6+iEeRBIBg4Mh8ghgRX72bkXJh6AWLWe/SG5+3WPdDL84MSsAlrvWFsGRdFw==", + "dev": true, + "requires": { + "antlr4": "^4.8.0" + } }, "@szmarczak/http-timer": { "version": "1.1.2", @@ -435,14 +479,14 @@ "dev": true }, "@types/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", - "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" }, "@types/node": { - "version": "10.14.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.16.tgz", - "integrity": "sha512-/opXIbfn0P+VLt+N8DE4l8Mn8rbhiJgabU96ZJ0p9mxOkIks5gh6RUnpHak7Yh0SFkyjO/ODbxsQQPV2bpMmyA==" + "version": "13.13.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.34.tgz", + "integrity": "sha512-g8D1HF2dMDKYSDl5+79izRwRgNPsSynmWMbj50mj7GZ0b7Lv4p8EmZjbo3h0h+6iLr6YmVz9VnF6XVZ3O6V1Ug==" }, "@types/pbkdf2": { "version": "3.1.0", @@ -482,12 +526,12 @@ "dev": true }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" @@ -506,9 +550,9 @@ "dev": true }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "ansi-styles": { @@ -521,9 +565,9 @@ } }, "antlr4": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz", - "integrity": "sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.9.0.tgz", + "integrity": "sha512-TAS2RfNblx/wlfy/h0YNaBSC1sg5rQ4Twm0h/ksCoWRAsLo9Freh367zXtRZdKVYSOLkOJbPDJL6TFclCr0Xvw==", "dev": true }, "anymatch": { @@ -578,15 +622,62 @@ } }, "array.prototype.map": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", - "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.3.tgz", + "integrity": "sha512-nNcb30v0wfDyIe26Yif3PcV1JXQp4zEeEfupG7L4SRjnD6HLbO5b2a7eVSba53bOx4YCHYMBHt+Fp4vYstneRA==", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", + "es-abstract": "^1.18.0-next.1", "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.4" + "is-string": "^1.0.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + } } }, "asn1": { @@ -641,9 +732,9 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", - "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==" + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "babel-eslint": { "version": "10.1.0", @@ -674,9 +765,9 @@ } }, "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -687,9 +778,9 @@ } }, "bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==" }, "binary-extensions": { "version": "2.1.0", @@ -794,12 +885,19 @@ } }, "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "requires": { - "bn.js": "^4.1.0", + "bn.js": "^5.0.0", "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==" + } } }, "browserify-sign": { @@ -822,6 +920,11 @@ "version": "5.1.3", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" } } }, @@ -844,12 +947,12 @@ } }, "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, "buffer-to-arraybuffer": { @@ -863,11 +966,11 @@ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, "bufferutil": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.1.tgz", - "integrity": "sha512-xowrxvpxojqkagPcWRQVXZl0YXhRhAtBEIq3VoER1NH5Mw1n1o0ojdspp+GS2J//2gCVyrzQDApQ4unGF+QOoA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.2.tgz", + "integrity": "sha512-AtnG3W6M8B2n4xDQ5R+70EXvOpnXsFYg/AK2yTZd+HQ/oxAdz+GI+DvjmhBw3L0ole+LJ0ngqY4JMbDzkfNzhA==", "requires": { - "node-gyp-build": "~3.7.0" + "node-gyp-build": "^4.2.0" } }, "bytes": { @@ -904,6 +1007,16 @@ } } }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", @@ -997,6 +1110,15 @@ "multihashes": "~0.4.15" }, "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "multicodec": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", @@ -1054,23 +1176,6 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -1113,6 +1218,12 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz", + "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1131,13 +1242,6 @@ "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "requires": { "safe-buffer": "5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } } }, "content-hash": { @@ -1267,17 +1371,6 @@ "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } } }, "crypto-browserify": { @@ -1456,9 +1549,9 @@ } }, "emoji-regex": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.0.0.tgz", - "integrity": "sha512-6p1NII1Vm62wni/VR/cUMauVQoxmLVb9csqQlvLz+hO2gk8U2UYDfXHQSUYIBKmZwAKz867IDqG7B+u0mj+M6w==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, "encodeurl": { @@ -1526,12 +1619,13 @@ "dev": true }, "es-get-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", - "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", + "integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", "dev": true, "requires": { - "es-abstract": "^1.17.4", + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.1", "has-symbols": "^1.0.1", "is-arguments": "^1.0.4", "is-map": "^2.0.1", @@ -1606,13 +1700,13 @@ "dev": true }, "eslint": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.11.0.tgz", - "integrity": "sha512-G9+qtYVCHaDi1ZuWzBsOWo2wSwd70TXnU6UHA3cTYHp7gCTXZcpggWFoUVAMRarg68qtPoNfFbzPh+VdOgmwmw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.15.0.tgz", + "integrity": "sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.1.3", + "@eslint/eslintrc": "^0.2.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -1622,10 +1716,10 @@ "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.0", + "espree": "^7.3.1", "esquery": "^1.2.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "file-entry-cache": "^6.0.0", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", "globals": "^12.1.0", @@ -1650,12 +1744,6 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -1691,31 +1779,14 @@ "dev": true }, "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { "ms": "2.1.2" } }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, "eslint-visitor-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", @@ -1744,18 +1815,12 @@ "dev": true }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "lru-cache": "^6.0.0" } }, "supports-color": { @@ -1770,18 +1835,15 @@ } }, "eslint-config-prettier": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.12.0.tgz", - "integrity": "sha512-9jWPlFlgNwRUYVoujvWTQ1aMO8o6648r+K7qU7K5Jmkbyqav1fuEZC0COYpGBxyiAJb65Ra9hrmFx19xRGwXWw==", - "dev": true, - "requires": { - "get-stdin": "^6.0.0" - } + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.0.0.tgz", + "integrity": "sha512-8Y8lGLVPPZdaNA7JXqnvETVC7IiVRgAP6afQu9gOQRn90YY3otMNh+x7Vr2vMePQntF+5erdSUBqSzCmU/AxaQ==", + "dev": true }, "eslint-config-standard": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz", - "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==", + "version": "16.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.2.tgz", + "integrity": "sha512-fx3f1rJDsl9bY7qzyX8SAtP8GBSk6MfXFaTfaGgk12aAYW4gJSyRm7dM790L6cbXv63fvjY4XeSzXnb4WM+SKw==", "dev": true }, "eslint-import-resolver-node": { @@ -1816,12 +1878,12 @@ } }, "eslint-plugin-es": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz", - "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", "dev": true, "requires": { - "eslint-utils": "^1.4.2", + "eslint-utils": "^2.0.0", "regexpp": "^3.0.0" } }, @@ -1868,13 +1930,13 @@ } }, "eslint-plugin-node": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz", - "integrity": "sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", "dev": true, "requires": { - "eslint-plugin-es": "^2.0.0", - "eslint-utils": "^1.4.2", + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", "ignore": "^5.1.1", "minimatch": "^3.0.4", "resolve": "^1.10.1", @@ -1896,9 +1958,9 @@ } }, "eslint-plugin-prettier": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", - "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.2.0.tgz", + "integrity": "sha512-kOUSJnFjAUFKwVxuzy6sA5yyMx6+o9ino4gCdShzBNx4eyFRudWRYKCFolKjoM40PEiuU6Cn7wBLfq3WsGg7qg==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -1910,12 +1972,6 @@ "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", "dev": true }, - "eslint-plugin-standard": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz", - "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==", - "dev": true - }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -1927,9 +1983,9 @@ } }, "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -1942,13 +1998,13 @@ "dev": true }, "espree": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", - "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "requires": { "acorn": "^7.4.0", - "acorn-jsx": "^5.2.0", + "acorn-jsx": "^5.3.1", "eslint-visitor-keys": "^1.3.0" }, "dependencies": { @@ -1966,15 +2022,6 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, - "esprima-extract-comments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/esprima-extract-comments/-/esprima-extract-comments-1.1.0.tgz", - "integrity": "sha512-sBQUnvJwpeE9QnPrxh7dpI/dp67erYG4WXEAreAMoelPRpMR7NWb4YtwRPn9b+H1uLQKl/qS8WYmyaljTpjIsw==", - "dev": true, - "requires": { - "esprima": "^4.0.0" - } - }, "esquery": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", @@ -2187,13 +2234,6 @@ "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } } }, "ext": { @@ -2227,25 +2267,15 @@ "tmp": "^0.0.33" } }, - "extract-comments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/extract-comments/-/extract-comments-1.1.0.tgz", - "integrity": "sha512-dzbZV2AdSSVW/4E7Ti5hZdHWbA+Z80RJsJhr5uiL10oyjl/gy7/o+HI1HwK4/WSZhlq4SNKU3oUzXlM13Qx02Q==", - "dev": true, - "requires": { - "esprima-extract-comments": "^1.1.0", - "parse-code-context": "^1.0.0" - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "fast-diff": { @@ -2255,9 +2285,9 @@ "dev": true }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", @@ -2275,12 +2305,12 @@ } }, "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" } }, "fill-range": { @@ -2326,12 +2356,12 @@ } }, "p-limit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", - "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" } }, "p-locate": { @@ -2342,39 +2372,32 @@ "requires": { "p-limit": "^3.0.2" } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true } } }, "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", + "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", "dev": true, "requires": { "is-buffer": "~2.0.3" } }, "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" } }, "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", + "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", "dev": true }, "forever-agent": { @@ -2446,9 +2469,9 @@ "dev": true }, "ganache-cli": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ganache-cli/-/ganache-cli-6.12.0.tgz", - "integrity": "sha512-WV354mOSCbVH+qR609ftpz/1zsZPRsHMaQ4jo9ioBQAkguYNVU5arfgIE0+0daU0Vl9WJ/OMhRyl0XRswd/j9A==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ganache-cli/-/ganache-cli-6.12.1.tgz", + "integrity": "sha512-zoefZLQpQyEJH9jgtVYgM+ENFLAC9iwys07IDCsju2Ieq9KSTLH89RxSP4bhizXKV/h/+qaWpfyCBGWnBfqgIQ==", "dev": true, "requires": { "ethereumjs-util": "6.2.1", @@ -3226,11 +3249,24 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + } + } }, "get-stream": { "version": "4.1.0", @@ -3249,9 +3285,9 @@ } }, "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -3272,12 +3308,12 @@ } }, "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "requires": { "min-document": "^2.19.0", - "process": "~0.5.1" + "process": "^0.11.10" } }, "globals": { @@ -3330,9 +3366,9 @@ }, "dependencies": { "ajv": { - "version": "6.12.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", - "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3389,6 +3425,13 @@ "inherits": "^2.0.4", "readable-stream": "^3.6.0", "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } } }, "hash.js": { @@ -3485,9 +3528,9 @@ } }, "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { "version": "4.0.6", @@ -3496,9 +3539,9 @@ "dev": true }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", + "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -3553,12 +3596,6 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -3605,10 +3642,13 @@ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } }, "is-arrayish": { "version": "0.2.1", @@ -3626,9 +3666,9 @@ } }, "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true }, "is-callable": { @@ -3686,6 +3726,12 @@ "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", "dev": true }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3693,9 +3739,9 @@ "dev": true }, "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" }, "is-plain-obj": { "version": "1.1.0", @@ -3896,13 +3942,6 @@ "requires": { "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" - } } }, "keyv": { @@ -3960,9 +3999,9 @@ } }, "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, "log-symbols": { @@ -4035,6 +4074,23 @@ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -4148,12 +4204,9 @@ } }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, "mkdirp-promise": { "version": "5.0.1", @@ -4211,20 +4264,6 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4251,15 +4290,6 @@ "requires": { "has-flag": "^4.0.0" } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -4280,6 +4310,17 @@ "requires": { "base-x": "^3.0.8", "buffer": "^5.5.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } } }, "multicodec": { @@ -4300,6 +4341,15 @@ "varint": "^5.0.0" }, "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "multibase": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", @@ -4350,9 +4400,9 @@ "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" }, "node-gyp-build": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.7.0.tgz", - "integrity": "sha512-L/Eg02Epx6Si2NXmedx+Okg+4UHqmaf3TNcxd50SF9NQGcJaON3AtU++kax69XV7YWz4tUspqZSAsVofhFKG2w==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", + "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" }, "normalize-package-data": { "version": "2.5.0", @@ -4440,9 +4490,9 @@ } }, "oboe": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz", - "integrity": "sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY=", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", + "integrity": "sha1-VVQoTFQ6ImbXo48X4HOCH73jk80=", "requires": { "http-https": "^1.0.0" } @@ -4566,12 +4616,6 @@ "safe-buffer": "^5.1.1" } }, - "parse-code-context": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-code-context/-/parse-code-context-1.0.0.tgz", - "integrity": "sha512-OZQaqKaQnR21iqhlnPfVisFjBWjhnMl5J9MgbP8xC+EwoVqbXrq78lp+9Zb3ahmLzrIX5Us/qbvBnaS3hkH6OA==", - "dev": true - }, "parse-headers": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", @@ -4696,9 +4740,9 @@ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" }, "prettier": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", - "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", "dev": true }, "prettier-linter-helpers": { @@ -4711,31 +4755,25 @@ } }, "prettier-plugin-solidity": { - "version": "1.0.0-alpha.57", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-alpha.57.tgz", - "integrity": "sha512-GTcL3OzxPn54TMlopE+wcXOUfEnpw05jvJw3KJrXkWTHER1CbkuAFRP4xiFtbJYq35ssSRO5FN4yMshx2grTIw==", + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.1.tgz", + "integrity": "sha512-kfPkR+UscT/Cw+2O8RSh6gCnIY4qsJJtuE4xZpIq42EyNyTLBabDwjH1QocXHwmlgL6QffydDge76ERlyJRaAA==", "dev": true, "requires": { - "@solidity-parser/parser": "^0.8.0", + "@solidity-parser/parser": "^0.9.1", "dir-to-object": "^2.0.0", "emoji-regex": "^9.0.0", "escape-string-regexp": "^4.0.0", - "extract-comments": "^1.1.0", "prettier": "^2.0.5", "semver": "^7.3.2", + "solidity-comments-extractor": "^0.0.4", "string-width": "^4.2.0" }, "dependencies": { - "@solidity-parser/parser": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.8.0.tgz", - "integrity": "sha512-4Eg1iWe6ZuJC9Ynfd8D2cnu06So0QL6V3i+fgQRqT8twPMr+N+kUvS5K7ILgWpuoAag/jb3r0wBDfmpib+yvaw==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "emoji-regex": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.0.tgz", + "integrity": "sha512-DNc3KFPK18bPdElMJnf/Pkv5TXhxFU3YFDEuGLDRtPmV4rkmCjBkCSEp22u6rBHdSN9Vlp/GK7k98prmE1Jgug==", "dev": true }, "escape-string-regexp": { @@ -4751,10 +4789,13 @@ "dev": true }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "string-width": { "version": "4.2.0", @@ -4774,22 +4815,13 @@ "dev": true } } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } } } }, "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, "progress": { "version": "2.0.3", @@ -4811,9 +4843,9 @@ } }, "protobufjs": { - "version": "6.8.8", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz", - "integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.2.tgz", + "integrity": "sha512-27yj+04uF6ya9l+qfpH187aqEzfCF4+Uit0I9ZBQVqK09hk/SQzKa2MUqUpXaVa7LOFRg1TSSr3lVxGOk6c0SQ==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -4825,8 +4857,8 @@ "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", + "@types/long": "^4.0.1", + "@types/node": "^13.7.0", "long": "^4.0.0" } }, @@ -5056,9 +5088,9 @@ } }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -5088,18 +5120,18 @@ "dev": true }, "rxjs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safer-buffer": { "version": "2.1.2", @@ -5119,13 +5151,6 @@ "elliptic": "^6.5.2", "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" - } } }, "semver": { @@ -5263,23 +5288,15 @@ "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } } }, "solhint": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/solhint/-/solhint-3.2.0.tgz", - "integrity": "sha512-BGp7JnnoLzknGC/arcH33oN/LjOz0hKgdauOcBOO5jNjhjnPQ3cAacSMH64fWYShAg5+HYQaSRubInpSKSvzLg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/solhint/-/solhint-3.3.2.tgz", + "integrity": "sha512-8tHCkIAk1axLLG6Qu2WIH3GgNABonj9eAWejJbov3o3ujkZQRNHeHU1cC4/Dmjsh3Om7UzFFeADUHu2i7ZJeiw==", "dev": true, "requires": { - "@solidity-parser/parser": "^0.7.0", + "@solidity-parser/parser": "^0.8.2", "ajv": "^6.6.1", "antlr4": "4.7.1", "ast-parents": "0.0.1", @@ -5296,10 +5313,16 @@ "semver": "^6.3.0" }, "dependencies": { + "@solidity-parser/parser": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.8.2.tgz", + "integrity": "sha512-8LySx3qrNXPgB5JiULfG10O3V7QTxI/TLzSw5hFQhXWSkVxZBAv4rZQ0sYgLEbc8g3L2lmnujj1hKul38Eu5NQ==", + "dev": true + }, "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true }, "ansi-regex": { @@ -5308,10 +5331,10 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "commander": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz", - "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", + "antlr4": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.7.1.tgz", + "integrity": "sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ==", "dev": true }, "cross-spawn": { @@ -5336,12 +5359,12 @@ } }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "eslint": { @@ -5406,6 +5429,15 @@ "estraverse": "^4.1.1" } }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, "espree": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", @@ -5417,6 +5449,32 @@ "eslint-visitor-keys": "^1.0.0" } }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -5427,6 +5485,15 @@ "type-check": "~0.3.2" } }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -5472,6 +5539,15 @@ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -5516,9 +5592,24 @@ "requires": { "prelude-ls": "~1.1.2" } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, + "solidity-comments-extractor": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.4.tgz", + "integrity": "sha512-58glBODwXIKMaQ7rfcJOrWtFQMMOK28tJ0/LcB5Xhu7WtAxk4UX2fpgKPuaL41XjMp/y0gAa1MTLqk018wuSzA==", + "dev": true + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -5590,13 +5681,31 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "string.prototype.trimend": { @@ -5731,15 +5840,22 @@ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "requires": { "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" } }, "strip-bom": { @@ -5789,6 +5905,15 @@ "xhr-request": "^1.0.1" }, "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -5845,46 +5970,6 @@ "lodash": "^4.17.14", "slice-ansi": "^2.1.0", "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } } }, "tar": { @@ -5899,6 +5984,16 @@ "mkdirp": "^0.5.0", "safe-buffer": "^5.1.2", "yallist": "^3.0.3" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + } } }, "text-table": { @@ -5962,9 +6057,9 @@ } }, "truffle": { - "version": "5.1.48", - "resolved": "https://registry.npmjs.org/truffle/-/truffle-5.1.48.tgz", - "integrity": "sha512-Z8485qH5Db8P05dVy7SHQHcaa+hXAekvPcVkkv8zONsVBqOmS3q48eajukdeKNbLlfPWb3m7TYdPzrGFBDcFiQ==", + "version": "5.1.56", + "resolved": "https://registry.npmjs.org/truffle/-/truffle-5.1.56.tgz", + "integrity": "sha512-hmRcHZqrOF5vlc0s4CoM72mRMRgP/jObK57ixfDAri+oLRgHgIKBf98R7nsy0ruq+WHCAdq1jslmrF026lUxAw==", "dev": true, "requires": { "app-module-path": "^2.2.0", @@ -5985,9 +6080,9 @@ } }, "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, "tunnel-agent": { @@ -6061,9 +6156,9 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", "requires": { "punycode": "^2.1.0" } @@ -6087,11 +6182,11 @@ "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" }, "utf-8-validate": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.2.tgz", - "integrity": "sha512-SwV++i2gTD5qh2XqaPzBnNX88N6HdyhQrNNRykvcS0QKvItV9u3vPEJr+X5Hhfb1JC0r0e1alL0iB09rY8+nmw==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.3.tgz", + "integrity": "sha512-jtJM6fpGv8C1SoH4PtG22pGto6x+Y8uPprW0tw3//gGFhDDTiuksgradgFN6yRayDP4SyZZa6ZMGHLIa17+M8A==", "requires": { - "node-gyp-build": "~3.7.0" + "node-gyp-build": "^4.2.0" } }, "utf8": { @@ -6115,9 +6210,9 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "dev": true }, "validate-npm-package-license": { @@ -6131,9 +6226,9 @@ } }, "varint": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", - "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=" + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" }, "vary": { "version": "1.1.2", @@ -6151,23 +6246,23 @@ } }, "web3": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.11.tgz", - "integrity": "sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.3.0.tgz", + "integrity": "sha512-4q9dna0RecnrlgD/bD1C5S+81Untbd6Z/TBD7rb+D5Bvvc0Wxjr4OP70x+LlnwuRDjDtzBwJbNUblh2grlVArw==", "requires": { - "web3-bzz": "1.2.11", - "web3-core": "1.2.11", - "web3-eth": "1.2.11", - "web3-eth-personal": "1.2.11", - "web3-net": "1.2.11", - "web3-shh": "1.2.11", - "web3-utils": "1.2.11" + "web3-bzz": "1.3.0", + "web3-core": "1.3.0", + "web3-eth": "1.3.0", + "web3-eth-personal": "1.3.0", + "web3-net": "1.3.0", + "web3-shh": "1.3.0", + "web3-utils": "1.3.0" } }, "web3-bzz": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.11.tgz", - "integrity": "sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.3.0.tgz", + "integrity": "sha512-ibYAnKab+sgTo/UdfbrvYfWblXjjgSMgyy9/FHa6WXS14n/HVB+HfWqGz2EM3fok8Wy5XoKGMvdqvERQ/mzq1w==", "requires": { "@types/node": "^12.12.6", "got": "9.6.0", @@ -6176,120 +6271,120 @@ }, "dependencies": { "@types/node": { - "version": "12.12.58", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.58.tgz", - "integrity": "sha512-Be46CNIHWAagEfINOjmriSxuv7IVcqbGe+sDSg2SYCEz/0CRBy7LRASGfRbD8KZkqoePU73Wsx3UvOSFcq/9hA==" + "version": "12.19.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.8.tgz", + "integrity": "sha512-D4k2kNi0URNBxIRCb1khTnkWNHv8KSL1owPmS/K5e5t8B2GzMReY7AsJIY1BnP5KdlgC4rj9jk2IkDMasIE7xg==" } } }, "web3-core": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.11.tgz", - "integrity": "sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.3.0.tgz", + "integrity": "sha512-BwWvAaKJf4KFG9QsKRi3MNoNgzjI6szyUlgme1qNPxUdCkaS3Rdpa0VKYNHP7M/YTk82/59kNE66mH5vmoaXjA==", "requires": { "@types/bn.js": "^4.11.5", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.2.11", - "web3-core-method": "1.2.11", - "web3-core-requestmanager": "1.2.11", - "web3-utils": "1.2.11" + "web3-core-helpers": "1.3.0", + "web3-core-method": "1.3.0", + "web3-core-requestmanager": "1.3.0", + "web3-utils": "1.3.0" }, "dependencies": { "@types/node": { - "version": "12.12.58", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.58.tgz", - "integrity": "sha512-Be46CNIHWAagEfINOjmriSxuv7IVcqbGe+sDSg2SYCEz/0CRBy7LRASGfRbD8KZkqoePU73Wsx3UvOSFcq/9hA==" + "version": "12.19.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.8.tgz", + "integrity": "sha512-D4k2kNi0URNBxIRCb1khTnkWNHv8KSL1owPmS/K5e5t8B2GzMReY7AsJIY1BnP5KdlgC4rj9jk2IkDMasIE7xg==" } } }, "web3-core-helpers": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz", - "integrity": "sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.3.0.tgz", + "integrity": "sha512-+MFb1kZCrRctf7UYE7NCG4rGhSXaQJ/KF07di9GVK1pxy1K0+rFi61ZobuV1ky9uQp+uhhSPts4Zp55kRDB5sw==", "requires": { "underscore": "1.9.1", - "web3-eth-iban": "1.2.11", - "web3-utils": "1.2.11" + "web3-eth-iban": "1.3.0", + "web3-utils": "1.3.0" } }, "web3-core-method": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.11.tgz", - "integrity": "sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.3.0.tgz", + "integrity": "sha512-h0yFDrYVzy5WkLxC/C3q+hiMnzxdWm9p1T1rslnuHgOp6nYfqzu/6mUIXrsS4h/OWiGJt+BZ0xVZmtC31HDWtg==", "requires": { "@ethersproject/transactions": "^5.0.0-beta.135", "underscore": "1.9.1", - "web3-core-helpers": "1.2.11", - "web3-core-promievent": "1.2.11", - "web3-core-subscriptions": "1.2.11", - "web3-utils": "1.2.11" + "web3-core-helpers": "1.3.0", + "web3-core-promievent": "1.3.0", + "web3-core-subscriptions": "1.3.0", + "web3-utils": "1.3.0" } }, "web3-core-promievent": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz", - "integrity": "sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.3.0.tgz", + "integrity": "sha512-blv69wrXw447TP3iPvYJpllkhW6B18nfuEbrfcr3n2Y0v1Jx8VJacNZFDFsFIcgXcgUIVCtOpimU7w9v4+rtaw==", "requires": { "eventemitter3": "4.0.4" } }, "web3-core-requestmanager": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz", - "integrity": "sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.3.0.tgz", + "integrity": "sha512-3yMbuGcomtzlmvTVqNRydxsx7oPlw3ioRL6ReF9PeNYDkUsZaUib+6Dp5eBt7UXh5X+SIn/xa1smhDHz5/HpAw==", "requires": { "underscore": "1.9.1", - "web3-core-helpers": "1.2.11", - "web3-providers-http": "1.2.11", - "web3-providers-ipc": "1.2.11", - "web3-providers-ws": "1.2.11" + "web3-core-helpers": "1.3.0", + "web3-providers-http": "1.3.0", + "web3-providers-ipc": "1.3.0", + "web3-providers-ws": "1.3.0" } }, "web3-core-subscriptions": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz", - "integrity": "sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.3.0.tgz", + "integrity": "sha512-MUUQUAhJDb+Nz3S97ExVWveH4utoUnsbPWP+q1HJH437hEGb4vunIb9KvN3hFHLB+aHJfPeStM/4yYTz5PeuyQ==", "requires": { "eventemitter3": "4.0.4", "underscore": "1.9.1", - "web3-core-helpers": "1.2.11" + "web3-core-helpers": "1.3.0" } }, "web3-eth": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.11.tgz", - "integrity": "sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.3.0.tgz", + "integrity": "sha512-/bzJcxXPM9EM18JM5kO2JjZ3nEqVo3HxqU93aWAEgJNqaP/Lltmufl2GpvIB2Hvj+FXAjAXquxUdQ2/xP7BzHQ==", "requires": { "underscore": "1.9.1", - "web3-core": "1.2.11", - "web3-core-helpers": "1.2.11", - "web3-core-method": "1.2.11", - "web3-core-subscriptions": "1.2.11", - "web3-eth-abi": "1.2.11", - "web3-eth-accounts": "1.2.11", - "web3-eth-contract": "1.2.11", - "web3-eth-ens": "1.2.11", - "web3-eth-iban": "1.2.11", - "web3-eth-personal": "1.2.11", - "web3-net": "1.2.11", - "web3-utils": "1.2.11" + "web3-core": "1.3.0", + "web3-core-helpers": "1.3.0", + "web3-core-method": "1.3.0", + "web3-core-subscriptions": "1.3.0", + "web3-eth-abi": "1.3.0", + "web3-eth-accounts": "1.3.0", + "web3-eth-contract": "1.3.0", + "web3-eth-ens": "1.3.0", + "web3-eth-iban": "1.3.0", + "web3-eth-personal": "1.3.0", + "web3-net": "1.3.0", + "web3-utils": "1.3.0" } }, "web3-eth-abi": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz", - "integrity": "sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.3.0.tgz", + "integrity": "sha512-1OrZ9+KGrBeBRd3lO8upkpNua9+7cBsQAgor9wbA25UrcUYSyL8teV66JNRu9gFxaTbkpdrGqM7J/LXpraXWrg==", "requires": { "@ethersproject/abi": "5.0.0-beta.153", "underscore": "1.9.1", - "web3-utils": "1.2.11" + "web3-utils": "1.3.0" } }, "web3-eth-accounts": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz", - "integrity": "sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.3.0.tgz", + "integrity": "sha512-/Q7EVW4L2wWUbNRtOTwAIrYvJid/5UnKMw67x/JpvRMwYC+e+744P536Ja6SG4X3MnzFvd3E/jruV4qa6k+zIw==", "requires": { "crypto-browserify": "3.12.0", "eth-lib": "0.2.8", @@ -6298,10 +6393,10 @@ "scrypt-js": "^3.0.1", "underscore": "1.9.1", "uuid": "3.3.2", - "web3-core": "1.2.11", - "web3-core-helpers": "1.2.11", - "web3-core-method": "1.2.11", - "web3-utils": "1.2.11" + "web3-core": "1.3.0", + "web3-core-helpers": "1.3.0", + "web3-core-method": "1.3.0", + "web3-utils": "1.3.0" }, "dependencies": { "eth-lib": { @@ -6322,121 +6417,121 @@ } }, "web3-eth-contract": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz", - "integrity": "sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.3.0.tgz", + "integrity": "sha512-3SCge4SRNCnzLxf0R+sXk6vyTOl05g80Z5+9/B5pERwtPpPWaQGw8w01vqYqsYBKC7zH+dxhMaUgVzU2Dgf7bQ==", "requires": { "@types/bn.js": "^4.11.5", "underscore": "1.9.1", - "web3-core": "1.2.11", - "web3-core-helpers": "1.2.11", - "web3-core-method": "1.2.11", - "web3-core-promievent": "1.2.11", - "web3-core-subscriptions": "1.2.11", - "web3-eth-abi": "1.2.11", - "web3-utils": "1.2.11" + "web3-core": "1.3.0", + "web3-core-helpers": "1.3.0", + "web3-core-method": "1.3.0", + "web3-core-promievent": "1.3.0", + "web3-core-subscriptions": "1.3.0", + "web3-eth-abi": "1.3.0", + "web3-utils": "1.3.0" } }, "web3-eth-ens": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz", - "integrity": "sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.3.0.tgz", + "integrity": "sha512-WnOru+EcuM5dteiVYJcHXo/I7Wq+ei8RrlS2nir49M0QpYvUPGbCGgTbifcjJQTWamgORtWdljSA1s2Asdb74w==", "requires": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", "underscore": "1.9.1", - "web3-core": "1.2.11", - "web3-core-helpers": "1.2.11", - "web3-core-promievent": "1.2.11", - "web3-eth-abi": "1.2.11", - "web3-eth-contract": "1.2.11", - "web3-utils": "1.2.11" + "web3-core": "1.3.0", + "web3-core-helpers": "1.3.0", + "web3-core-promievent": "1.3.0", + "web3-eth-abi": "1.3.0", + "web3-eth-contract": "1.3.0", + "web3-utils": "1.3.0" } }, "web3-eth-iban": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz", - "integrity": "sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.3.0.tgz", + "integrity": "sha512-v9mZWhR4fPF17/KhHLiWir4YHWLe09O3B/NTdhWqw3fdAMJNztzMHGzgHxA/4fU+rhrs/FhDzc4yt32zMEXBZw==", "requires": { "bn.js": "^4.11.9", - "web3-utils": "1.2.11" + "web3-utils": "1.3.0" } }, "web3-eth-personal": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz", - "integrity": "sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.3.0.tgz", + "integrity": "sha512-2czUhElsJdLpuNfun9GeLiClo5O6Xw+bLSjl3f4bNG5X2V4wcIjX2ygep/nfstLLtkz8jSkgl/bV7esANJyeRA==", "requires": { "@types/node": "^12.12.6", - "web3-core": "1.2.11", - "web3-core-helpers": "1.2.11", - "web3-core-method": "1.2.11", - "web3-net": "1.2.11", - "web3-utils": "1.2.11" + "web3-core": "1.3.0", + "web3-core-helpers": "1.3.0", + "web3-core-method": "1.3.0", + "web3-net": "1.3.0", + "web3-utils": "1.3.0" }, "dependencies": { "@types/node": { - "version": "12.12.58", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.58.tgz", - "integrity": "sha512-Be46CNIHWAagEfINOjmriSxuv7IVcqbGe+sDSg2SYCEz/0CRBy7LRASGfRbD8KZkqoePU73Wsx3UvOSFcq/9hA==" + "version": "12.19.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.8.tgz", + "integrity": "sha512-D4k2kNi0URNBxIRCb1khTnkWNHv8KSL1owPmS/K5e5t8B2GzMReY7AsJIY1BnP5KdlgC4rj9jk2IkDMasIE7xg==" } } }, "web3-net": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.11.tgz", - "integrity": "sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.3.0.tgz", + "integrity": "sha512-Xz02KylOyrB2YZzCkysEDrY7RbKxb7LADzx3Zlovfvuby7HBwtXVexXKtoGqksa+ns1lvjQLLQGb+OeLi7Sr7w==", "requires": { - "web3-core": "1.2.11", - "web3-core-method": "1.2.11", - "web3-utils": "1.2.11" + "web3-core": "1.3.0", + "web3-core-method": "1.3.0", + "web3-utils": "1.3.0" } }, "web3-providers-http": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.11.tgz", - "integrity": "sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.3.0.tgz", + "integrity": "sha512-cMKhUI6PqlY/EC+ZDacAxajySBu8AzW8jOjt1Pe/mbRQgS0rcZyvLePGTTuoyaA8C21F8UW+EE5jj7YsNgOuqA==", "requires": { - "web3-core-helpers": "1.2.11", + "web3-core-helpers": "1.3.0", "xhr2-cookies": "1.1.0" } }, "web3-providers-ipc": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz", - "integrity": "sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.3.0.tgz", + "integrity": "sha512-0CrLuRofR+1J38nEj4WsId/oolwQEM6Yl1sOt41S/6bNI7htdkwgVhSloFIMJMDFHtRw229QIJ6wIaKQz0X1Og==", "requires": { - "oboe": "2.1.4", + "oboe": "2.1.5", "underscore": "1.9.1", - "web3-core-helpers": "1.2.11" + "web3-core-helpers": "1.3.0" } }, "web3-providers-ws": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz", - "integrity": "sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.3.0.tgz", + "integrity": "sha512-Im5MthhJnJst8nSoq0TgbyOdaiFQFa5r6sHPOVllhgIgViDqzbnlAFW9sNzQ0Q8VXPNfPIQKi9cOrHlSRNPjRw==", "requires": { "eventemitter3": "4.0.4", "underscore": "1.9.1", - "web3-core-helpers": "1.2.11", - "websocket": "^1.0.31" + "web3-core-helpers": "1.3.0", + "websocket": "^1.0.32" } }, "web3-shh": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.11.tgz", - "integrity": "sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.3.0.tgz", + "integrity": "sha512-IZTojA4VCwVq+7eEIHuL1tJXtU+LJDhO8Y2QmuwetEWW1iBgWCGPHZasipWP+7kDpSm/5lo5GRxL72FF/Os/tA==", "requires": { - "web3-core": "1.2.11", - "web3-core-method": "1.2.11", - "web3-core-subscriptions": "1.2.11", - "web3-net": "1.2.11" + "web3-core": "1.3.0", + "web3-core-method": "1.3.0", + "web3-core-subscriptions": "1.3.0", + "web3-net": "1.3.0" } }, "web3-utils": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.11.tgz", - "integrity": "sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.3.0.tgz", + "integrity": "sha512-2mS5axFCbkhicmoDRuJeuo0TVGQDgC2sPi/5dblfVC+PMtX0efrb8Xlttv/eGkq7X4E83Pds34FH98TP2WOUZA==", "requires": { "bn.js": "^4.11.9", "eth-lib": "0.2.8", @@ -6474,9 +6569,9 @@ } }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -6495,6 +6590,33 @@ "dev": true, "requires": { "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "word-wrap": { @@ -6526,23 +6648,6 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -6566,6 +6671,17 @@ "dev": true, "requires": { "mkdirp": "^0.5.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } } }, "ws": { @@ -6576,21 +6692,14 @@ "async-limiter": "~1.0.0", "safe-buffer": "~5.1.0", "ultron": "~1.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } } }, "xhr": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", - "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", "requires": { - "global": "~4.3.0", + "global": "~4.4.0", "is-function": "^1.0.1", "parse-headers": "^2.0.0", "xtend": "^4.0.0" @@ -6632,9 +6741,9 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true }, "yaeti": { @@ -6665,18 +6774,6 @@ "yargs-parser": "^13.1.2" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -6725,26 +6822,6 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, @@ -6771,18 +6848,6 @@ "yargs": "^14.2.3" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -6832,26 +6897,6 @@ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, "yargs": { "version": "14.2.3", "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", @@ -6882,6 +6927,12 @@ } } } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/package.json b/package.json index 511bbd9..da8e662 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "sgn-contract", "description": "Mainchain smart contracts for Celer State Guardian Network (SGN)", - "version": "0.2.5", + "version": "0.2.6", "homepage": "https://celer.network", "repository": { "type": "git", @@ -24,28 +24,26 @@ "prettier": "prettier --write contracts/*.sol" }, "dependencies": { - "buffer": "^5.6.0", + "buffer": "^6.0.3", "openzeppelin-solidity": "2.1.3", - "protobufjs": "6.8.8", - "web3": "^1.2.11" + "protobufjs": "^6.10.2", + "web3": "^1.3.0" }, "devDependencies": { "acorn": "^8.0.4", - "babel-eslint": "^10.0.3", - "eslint": "^7.11.0", - "eslint-config-prettier": "^6.12.0", - "eslint-config-standard": "^14.1.0", + "babel-eslint": "^10.1.0", + "eslint": "^7.15.0", + "eslint-config-prettier": "^7.0.0", + "eslint-config-standard": "^16.0.2", "eslint-plugin-import": "^2.22.1", - "eslint-plugin-node": "^10.0.0", - "eslint-plugin-prettier": "^3.1.2", + "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^4.2.1", - "eslint-plugin-standard": "^4.0.1", - "ganache-cli": "^6.12.0", - "kind-of": ">=6.0.3", - "minimist": ">=0.2.1", - "prettier": "2.1.2", - "prettier-plugin-solidity": "^1.0.0-alpha.57", - "solhint": "^3.2.0", - "truffle": "^5.1.48" + "ganache-cli": "^6.12.1", + "kind-of": "^6.0.3", + "minimist": "^1.2.5", + "prettier": "^2.2.1", + "prettier-plugin-solidity": "^1.0.0-beta.1", + "solhint": "^3.3.2", + "truffle": "^5.1.56" } } diff --git a/test/basic_test.js b/test/basic_test.js index 4b7fd3c..b4a5659 100644 --- a/test/basic_test.js +++ b/test/basic_test.js @@ -9,7 +9,7 @@ const SGN = artifacts.require('SGN'); const CELRToken = artifacts.require('CELRToken'); const consts = require('./constants.js'); -// basic tests with a single valdiator candidate and a single delegator +// basic tests with a single validator candidate and a single delegator contract('basic tests', async (accounts) => { const CANDIDATE = accounts[1]; const DELEGATOR = accounts[2]; @@ -180,7 +180,9 @@ contract('basic tests', async (accounts) => { }); it('should delegate to candidate by a delegator successfully', async () => { - const tx = await dposInstance.delegate(CANDIDATE, consts.DELEGATOR_STAKE, {from: DELEGATOR}); + const tx = await dposInstance.delegate(CANDIDATE, consts.DELEGATOR_STAKE, { + from: DELEGATOR + }); const {event, args} = tx.logs[1]; assert.equal(event, 'Delegate'); @@ -251,10 +253,7 @@ contract('basic tests', async (accounts) => { try { await dposInstance.withdrawFromUnbondedCandidate(CANDIDATE, 1, {from: DELEGATOR}); } catch (error) { - assert.isAbove( - error.message.search('Amount is smaller than minimum requirement'), - -1 - ); + assert.isAbove(error.message.search('Amount is smaller than minimum requirement'), -1); return; } assert.fail('should have thrown before'); @@ -319,10 +318,7 @@ contract('basic tests', async (accounts) => { it('should fail withdrawFromUnbondedCandidate', async () => { try { - await dposInstance.withdrawFromUnbondedCandidate( - CANDIDATE, - consts.DELEGATOR_STAKE - ); + await dposInstance.withdrawFromUnbondedCandidate(CANDIDATE, consts.DELEGATOR_STAKE); } catch (error) { assert.isAbove(error.message.search('invalid status'), -1); return; @@ -398,7 +394,9 @@ contract('basic tests', async (accounts) => { it('should increase min self stake successfully', async () => { const higherMinSelfStake = (parseInt(consts.MIN_SELF_STAKE) + 1000000).toString(); - const tx = await dposInstance.updateMinSelfStake(higherMinSelfStake, {from: CANDIDATE}); + const tx = await dposInstance.updateMinSelfStake(higherMinSelfStake, { + from: CANDIDATE + }); assert.equal(tx.logs[0].event, 'UpdateMinSelfStake'); assert.equal(tx.logs[0].args.candidate, CANDIDATE); assert.equal(tx.logs[0].args.minSelfStake, higherMinSelfStake); @@ -502,7 +500,7 @@ contract('basic tests', async (accounts) => { }); it('should only confirm withdrawal partial amount due to slash', async () => { - slashAmt = parseInt(consts.DELEGATOR_STAKE) - parseInt(consts.ONE_CELR) + const slashAmt = parseInt(consts.DELEGATOR_STAKE) - parseInt(consts.ONE_CELR); await Timetravel.advanceBlocks(consts.DPOS_GO_LIVE_TIMEOUT); const request = await getPenaltyRequestBytes({ nonce: 1, @@ -517,7 +515,7 @@ contract('basic tests', async (accounts) => { await dposInstance.slash(request); await Timetravel.advanceBlocks(consts.SLASH_TIMEOUT); - tx = await dposInstance.confirmWithdraw(CANDIDATE, {from: DELEGATOR}); + const tx = await dposInstance.confirmWithdraw(CANDIDATE, {from: DELEGATOR}); assert.equal(tx.logs[0].event, 'ConfirmWithdraw'); assert.equal(tx.logs[0].args.delegator, DELEGATOR); assert.equal(tx.logs[0].args.candidate, CANDIDATE); @@ -525,7 +523,7 @@ contract('basic tests', async (accounts) => { }); it('should confirm withdrawal zero amt due to all stakes being slashed', async () => { - slashAmt = parseInt(consts.DELEGATOR_STAKE) + const slashAmt = parseInt(consts.DELEGATOR_STAKE); await Timetravel.advanceBlocks(consts.DPOS_GO_LIVE_TIMEOUT); const request = await getPenaltyRequestBytes({ nonce: 1, @@ -540,7 +538,7 @@ contract('basic tests', async (accounts) => { await dposInstance.slash(request); await Timetravel.advanceBlocks(consts.SLASH_TIMEOUT); - tx = await dposInstance.confirmWithdraw(CANDIDATE, {from: DELEGATOR}); + const tx = await dposInstance.confirmWithdraw(CANDIDATE, {from: DELEGATOR}); assert.equal(tx.logs[0].event, 'ConfirmWithdraw'); assert.equal(tx.logs[0].args.delegator, DELEGATOR); assert.equal(tx.logs[0].args.candidate, CANDIDATE); diff --git a/test/gov_test.js b/test/gov_test.js index 3ba186a..879f7c5 100644 --- a/test/gov_test.js +++ b/test/gov_test.js @@ -1,11 +1,9 @@ const Web3 = require('web3'); const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545')); -const sha3 = web3.utils.keccak256; const protoChainFactory = require('./helper/protoChainFactory'); const Timetravel = require('./helper/timetravel'); const DPoS = artifacts.require('DPoS'); -const SGN = artifacts.require('SGN'); const CELRToken = artifacts.require('CELRToken'); const consts = require('./constants.js'); @@ -80,7 +78,7 @@ contract('governance tests', async (accounts) => { describe('after someone createParamProposal successfully', async () => { const proposalId = 0; - const migrationStartTime = 10 + const migrationStartTime = 10; beforeEach(async () => { await dposInstance.createParamProposal(consts.ENUM_MIGRATION_TIME, migrationStartTime); @@ -252,7 +250,10 @@ contract('governance tests', async (accounts) => { // sidechain governance tests it('should createSidechainProposal successfully', async () => { const newRegistrationStatus = true; - const tx = await dposInstance.createSidechainProposal(NEW_SIDECHAIN_ADDR, newRegistrationStatus); + const tx = await dposInstance.createSidechainProposal( + NEW_SIDECHAIN_ADDR, + newRegistrationStatus + ); const block = await web3.eth.getBlock('latest'); const {event, args} = tx.logs[0]; diff --git a/test/helper/protoChainFactory.js b/test/helper/protoChainFactory.js index 2c7ee3a..628f3df 100644 --- a/test/helper/protoChainFactory.js +++ b/test/helper/protoChainFactory.js @@ -3,135 +3,115 @@ const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545')); const sha3 = web3.utils.keccak256; const protoChainLoader = require('./protoChainLoader'); -const { signMessage } = require('./sign'); +const {signMessage} = require('./sign'); const utilities = require('./utilities'); -const { uint2bytes } = utilities; +const {uint2bytes} = utilities; // calculate the signature of given address on given hash const calculateSignature = async (address, hash) => { - // can't directly use web3.eth.sign() because of this issue: - // https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1622 - const sigHex = await signMessage(address, hash); - const sigBytes = web3.utils.hexToBytes(sigHex); - return sigBytes; + // can't directly use web3.eth.sign() because of this issue: + // https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1622 + const sigHex = await signMessage(address, hash); + const sigBytes = web3.utils.hexToBytes(sigHex); + return sigBytes; }; const calculateSignatures = async (addresses, hash) => { - const sigs = []; - for (let i = 0; i < addresses.length; i++) { - const sig = await calculateSignature(addresses[i], hash); - sigs.push(sig); - } - return sigs; + const sigs = []; + for (let i = 0; i < addresses.length; i++) { + const sig = await calculateSignature(addresses[i], hash); + sigs.push(sig); + } + return sigs; }; module.exports = async () => { - const protoChain = await protoChainLoader(); - - const { - PenaltyRequest, - RewardRequest, - Penalty, - Reward, - AccountAmtPair - } = protoChain; - - /** ******** internal API **********/ - // get array of AccountAmtPair proto - const getAccountAmtPairs = (accounts, amounts) => { - assert(accounts.length === amounts.length); - const pairs = []; - for (let i = 0; i < accounts.length; i++) { - const pair = { - account: web3.utils.hexToBytes(accounts[i]), - amt: uint2bytes(amounts[i]) - }; - const pairProto = AccountAmtPair.create(pair); - pairs.push(pairProto); - } - return pairs; - }; + const protoChain = await protoChainLoader(); - /** ******** external API **********/ - const getPenaltyRequestBytes = async ({ - nonce, - expireTime, - validatorAddr, - delegatorAddrs, - delegatorAmts, - beneficiaryAddrs, - beneficiaryAmts, - signers - }) => { - const penalizedDelegators = getAccountAmtPairs( - delegatorAddrs, - delegatorAmts - ); - const beneficiaries = getAccountAmtPairs( - beneficiaryAddrs, - beneficiaryAmts - ); + const {PenaltyRequest, RewardRequest, Penalty, Reward, AccountAmtPair} = protoChain; - const penalty = { - nonce: nonce, - expireTime: expireTime, - validatorAddress: web3.utils.hexToBytes(validatorAddr), - penalizedDelegators: penalizedDelegators, - beneficiaries: beneficiaries - }; - const penaltyProto = Penalty.create(penalty); - const penaltyBytes = Penalty.encode(penaltyProto) - .finish() - .toJSON().data; + /** ******** internal API **********/ + // get array of AccountAmtPair proto + const getAccountAmtPairs = (accounts, amounts) => { + assert(accounts.length === amounts.length); + const pairs = []; + for (let i = 0; i < accounts.length; i++) { + const pair = { + account: web3.utils.hexToBytes(accounts[i]), + amt: uint2bytes(amounts[i]) + }; + const pairProto = AccountAmtPair.create(pair); + pairs.push(pairProto); + } + return pairs; + }; - const penaltyBytesHash = sha3(penaltyBytes); - const sigs = await calculateSignatures(signers, penaltyBytesHash); - const penaltyRequest = { - penalty: penaltyBytes, - sigs: sigs - }; - const penaltyRequestProto = PenaltyRequest.create(penaltyRequest); - const penaltyRequestBytes = PenaltyRequest.encode(penaltyRequestProto) - .finish() - .toJSON().data; + /** ******** external API **********/ + const getPenaltyRequestBytes = async ({ + nonce, + expireTime, + validatorAddr, + delegatorAddrs, + delegatorAmts, + beneficiaryAddrs, + beneficiaryAmts, + signers + }) => { + const penalizedDelegators = getAccountAmtPairs(delegatorAddrs, delegatorAmts); + const beneficiaries = getAccountAmtPairs(beneficiaryAddrs, beneficiaryAmts); - return penaltyRequestBytes; + const penalty = { + nonce: nonce, + expireTime: expireTime, + validatorAddress: web3.utils.hexToBytes(validatorAddr), + penalizedDelegators: penalizedDelegators, + beneficiaries: beneficiaries }; + const penaltyProto = Penalty.create(penalty); + const penaltyBytes = Penalty.encode(penaltyProto).finish(); - const getRewardRequestBytes = async ({ - receiver, - cumulativeMiningReward, - cumulativeServiceReward, - signers - }) => { - const reward = { - receiver: web3.utils.hexToBytes(receiver), - cumulativeMiningReward: uint2bytes(cumulativeMiningReward), - cumulativeServiceReward: uint2bytes(cumulativeServiceReward) - }; - const rewardProto = Reward.create(reward); - const rewardBytes = Reward.encode(rewardProto) - .finish() - .toJSON().data; + const penaltyBytesHash = sha3(penaltyBytes); + const sigs = await calculateSignatures(signers, penaltyBytesHash); + const penaltyRequest = { + penalty: penaltyBytes, + sigs: sigs + }; + const penaltyRequestProto = PenaltyRequest.create(penaltyRequest); + const penaltyRequestBytes = PenaltyRequest.encode(penaltyRequestProto).finish(); - const rewardBytesHash = sha3(rewardBytes); - const sigs = await calculateSignatures(signers, rewardBytesHash); - const rewardRequest = { - reward: rewardBytes, - sigs: sigs - }; - const rewardRequestProto = RewardRequest.create(rewardRequest); - const rewardRequestBytes = RewardRequest.encode(rewardRequestProto) - .finish() - .toJSON().data; + return penaltyRequestBytes; + }; - return rewardRequestBytes; + const getRewardRequestBytes = async ({ + receiver, + cumulativeMiningReward, + cumulativeServiceReward, + signers + }) => { + const reward = { + receiver: web3.utils.hexToBytes(receiver), + cumulativeMiningReward: uint2bytes(cumulativeMiningReward), + cumulativeServiceReward: uint2bytes(cumulativeServiceReward) }; + const rewardProto = Reward.create(reward); + const rewardBytes = Reward.encode(rewardProto).finish(); - /** ******** exposed APIs **********/ - return { - getPenaltyRequestBytes, // async - getRewardRequestBytes // async + const rewardBytesHash = sha3(rewardBytes); + const sigs = await calculateSignatures(signers, rewardBytesHash); + const rewardRequest = { + reward: rewardBytes, + sigs: sigs }; + const rewardRequestProto = RewardRequest.create(rewardRequest); + const rewardRequestBytes = RewardRequest.encode(rewardRequestProto).finish(); + + return rewardRequestBytes; + }; + + /** ******** exposed APIs **********/ + return { + getPenaltyRequestBytes, // async + getRewardRequestBytes // async + }; }; diff --git a/test/helper/protoChainLoader.js b/test/helper/protoChainLoader.js index da7cbf1..3802d5c 100644 --- a/test/helper/protoChainLoader.js +++ b/test/helper/protoChainLoader.js @@ -2,21 +2,19 @@ const protobuf = require('protobufjs'); protobuf.common('google/protobuf/descriptor.proto', {}); module.exports = async () => { - const sgn = await protobuf.load( - `${__dirname}/../../contracts/lib/data/proto/sgn.proto` - ); + const sgn = await protobuf.load(`${__dirname}/../../contracts/lib/data/proto/sgn.proto`); - const PenaltyRequest = sgn.lookupType('sgn.PenaltyRequest'); - const RewardRequest = sgn.lookupType('sgn.RewardRequest'); - const Penalty = sgn.lookupType('sgn.Penalty'); - const Reward = sgn.lookupType('sgn.Reward'); - const AccountAmtPair = sgn.lookupType('sgn.AccountAmtPair'); + const PenaltyRequest = sgn.lookupType('sgn.PenaltyRequest'); + const RewardRequest = sgn.lookupType('sgn.RewardRequest'); + const Penalty = sgn.lookupType('sgn.Penalty'); + const Reward = sgn.lookupType('sgn.Reward'); + const AccountAmtPair = sgn.lookupType('sgn.AccountAmtPair'); - return { - PenaltyRequest, - RewardRequest, - Penalty, - Reward, - AccountAmtPair - }; + return { + PenaltyRequest, + RewardRequest, + Penalty, + Reward, + AccountAmtPair + }; }; diff --git a/test/helper/sign.js b/test/helper/sign.js index c81d83e..0d42dfb 100644 --- a/test/helper/sign.js +++ b/test/helper/sign.js @@ -1,34 +1,32 @@ // Sign helper for this issue: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1622 // Copied from openzeppelin-solidity(v2.2.0)/test/helpers/sign.js -const REAL_SIGNATURE_SIZE = 2 * 65; // 65 bytes in hexadecimal string legnth +const REAL_SIGNATURE_SIZE = 2 * 65; // 65 bytes in hexadecimal string length const PADDED_SIGNATURE_SIZE = 2 * 96; // 96 bytes in hexadecimal string length const DUMMY_SIGNATURE = `0x${web3.utils.padLeft('', REAL_SIGNATURE_SIZE)}`; function toEthSignedMessageHash(messageHex) { - const messageBuffer = Buffer.from(messageHex.substring(2), 'hex'); - const prefix = Buffer.from( - `\u0019Ethereum Signed Message:\n${messageBuffer.length}` - ); - return web3.utils.sha3(Buffer.concat([prefix, messageBuffer])); + const messageBuffer = Buffer.from(messageHex.substring(2), 'hex'); + const prefix = Buffer.from(`\u0019Ethereum Signed Message:\n${messageBuffer.length}`); + return web3.utils.sha3(Buffer.concat([prefix, messageBuffer])); } function fixSignature(signature) { - // in geth its always 27/28, in ganache its 0/1. Change to 27/28 to prevent - // signature malleability if version is 0/1 - // see https://github.com/ethereum/go-ethereum/blob/v1.8.23/internal/ethapi/api.go#L465 - let v = parseInt(signature.slice(130, 132), 16); - if (v < 27) { - v += 27; - } - const vHex = v.toString(16); - return signature.slice(0, 130) + vHex; + // in geth its always 27/28, in ganache its 0/1. Change to 27/28 to prevent + // signature malleability if version is 0/1 + // see https://github.com/ethereum/go-ethereum/blob/v1.8.23/internal/ethapi/api.go#L465 + let v = parseInt(signature.slice(130, 132), 16); + if (v < 27) { + v += 27; + } + const vHex = v.toString(16); + return signature.slice(0, 130) + vHex; } // signs message in node (ganache auto-applies "Ethereum Signed Message" prefix) async function signMessage(signer, messageHex = '0x') { - return fixSignature(await web3.eth.sign(messageHex, signer)); + return fixSignature(await web3.eth.sign(messageHex, signer)); } /** @@ -40,37 +38,31 @@ async function signMessage(signer, messageHex = '0x') { * @param methodName string * @param methodArgs any[] */ -const getSignFor = (contract, signer) => ( - redeemer, - methodName, - methodArgs = [] -) => { - const parts = [contract.address, redeemer]; +const getSignFor = (contract, signer) => (redeemer, methodName, methodArgs = []) => { + const parts = [contract.address, redeemer]; - // if we have a method, add it to the parts that we're signing - if (methodName) { - if (methodArgs.length > 0) { - parts.push( - contract.contract.methods[methodName]( - ...methodArgs.concat([DUMMY_SIGNATURE]) - ) - .encodeABI() - .slice(0, -1 * PADDED_SIGNATURE_SIZE) - ); - } else { - const abi = contract.abi.find(abi => abi.name === methodName); - parts.push(abi.signature); - } + // if we have a method, add it to the parts that we're signing + if (methodName) { + if (methodArgs.length > 0) { + parts.push( + contract.contract.methods[methodName](...methodArgs.concat([DUMMY_SIGNATURE])) + .encodeABI() + .slice(0, -1 * PADDED_SIGNATURE_SIZE) + ); + } else { + const abi = contract.abi.find((abi) => abi.name === methodName); + parts.push(abi.signature); } + } - // return the signature of the "Ethereum Signed Message" hash of the hash of `parts` - const messageHex = web3.utils.soliditySha3(...parts); - return signMessage(signer, messageHex); + // return the signature of the "Ethereum Signed Message" hash of the hash of `parts` + const messageHex = web3.utils.soliditySha3(...parts); + return signMessage(signer, messageHex); }; module.exports = { - signMessage, - toEthSignedMessageHash, - fixSignature, - getSignFor + signMessage, + toEthSignedMessageHash, + fixSignature, + getSignFor }; diff --git a/test/helper/timetravel.js b/test/helper/timetravel.js index ae439ca..eb86f2a 100644 --- a/test/helper/timetravel.js +++ b/test/helper/timetravel.js @@ -1,60 +1,60 @@ // base on https://medium.com/edgefund/time-travelling-truffle-tests-f581c1964687 -const advanceTimeAndBlock = async time => { - await advanceTime(time); - await advanceOneBlock(); +const advanceTimeAndBlock = async (time) => { + await advanceTime(time); + await advanceOneBlock(); - return Promise.resolve(web3.eth.getBlock('latest')); + return Promise.resolve(web3.eth.getBlock('latest')); }; -const advanceTime = time => { - return new Promise((resolve, reject) => { - web3.currentProvider.send( - { - jsonrpc: '2.0', - method: 'evm_increaseTime', - params: [time], - id: new Date().getTime() - }, - (err, result) => { - if (err) { - return reject(err); - } - return resolve(result); - } - ); - }); +const advanceTime = (time) => { + return new Promise((resolve, reject) => { + web3.currentProvider.send( + { + jsonrpc: '2.0', + method: 'evm_increaseTime', + params: [time], + id: new Date().getTime() + }, + (err, result) => { + if (err) { + return reject(err); + } + return resolve(result); + } + ); + }); }; const advanceOneBlock = () => { - return new Promise((resolve, reject) => { - web3.currentProvider.send( - { - jsonrpc: '2.0', - method: 'evm_mine', - id: new Date().getTime() - }, - (err, result) => { - if (err) { - return reject(err); - } - const newBlockHash = web3.eth.getBlock('latest').hash; + return new Promise((resolve, reject) => { + web3.currentProvider.send( + { + jsonrpc: '2.0', + method: 'evm_mine', + id: new Date().getTime() + }, + (err, result) => { + if (err) { + return reject(err); + } + const newBlockHash = web3.eth.getBlock('latest').hash; - return resolve(newBlockHash); - } - ); - }); + return resolve(newBlockHash); + } + ); + }); }; async function advanceBlocks(number) { - for (let i = 0; i < number; i++) { - await advanceOneBlock(); - } + for (let i = 0; i < number; i++) { + await advanceOneBlock(); + } } module.exports = { - advanceTime, - advanceOneBlock, - advanceBlocks, - advanceTimeAndBlock + advanceTime, + advanceOneBlock, + advanceBlocks, + advanceTimeAndBlock }; diff --git a/test/helper/utilities.js b/test/helper/utilities.js index be889e1..a212dc2 100644 --- a/test/helper/utilities.js +++ b/test/helper/utilities.js @@ -1,25 +1,25 @@ function toHexString(byteArray) { - return Array.from(byteArray, function(byte) { - return ('0' + (byte & 0xFF).toString(16)).slice(-2); - }).join('') + return Array.from(byteArray, function (byte) { + return ('0' + (byte & 0xff).toString(16)).slice(-2); + }).join(''); } function toByteArray(hexString) { - var result = []; - if (hexString.substr(0, 2) == '0x') { - hexString = hexString.slice(2) + const result = []; + if (hexString.substr(0, 2) === '0x') { + hexString = hexString.slice(2); } - if (hexString.length % 2 == 1) { - hexString = '0' + hexString + if (hexString.length % 2 === 1) { + hexString = '0' + hexString; } - for (var i = 0; i < hexString.length; i += 2) { + for (let i = 0; i < hexString.length; i += 2) { result.push(parseInt(hexString.substr(i, 2), 16)); } return result; } function uint2bytes(x) { - return toByteArray(x.toString(16)) + return toByteArray(x.toString(16)); } -module.exports = { uint2bytes }; +module.exports = {toHexString, uint2bytes}; diff --git a/test/multi_validator_test.js b/test/multi_validator_test.js index 887d240..378fd0b 100644 --- a/test/multi_validator_test.js +++ b/test/multi_validator_test.js @@ -1,8 +1,3 @@ -const Web3 = require('web3'); -const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545')); -const sha3 = web3.utils.keccak256; - -const protoChainFactory = require('./helper/protoChainFactory'); const Timetravel = require('./helper/timetravel'); const DPoS = artifacts.require('DPoS'); const SGN = artifacts.require('SGN'); @@ -24,6 +19,7 @@ contract('multiple validators tests', async (accounts) => { let celerToken; let dposInstance; + let sgnInstance; beforeEach(async () => { celerToken = await CELRToken.new(); @@ -47,7 +43,7 @@ contract('multiple validators tests', async (accounts) => { await celerToken.transfer(accounts[i], consts.TEN_CELR); await celerToken.approve(dposInstance.address, consts.TEN_CELR, {from: accounts[i]}); } - const delegatorbalance = '100000000000000000000' // 100 CELR + const delegatorbalance = '100000000000000000000'; // 100 CELR await celerToken.transfer(DELEGATOR, delegatorbalance); await celerToken.approve(dposInstance.address, delegatorbalance, {from: DELEGATOR}); @@ -116,12 +112,12 @@ contract('multiple validators tests', async (accounts) => { }); it('should confirmUnbondedCandidate after unbondTime', async () => { - const res = await dposInstance.getCandidateInfo(VALIDATORS[0]) - assert.equal(res.status.toNumber(), consts.STATUS_UNBONDING) + const res = await dposInstance.getCandidateInfo(VALIDATORS[0]); + assert.equal(res.status.toNumber(), consts.STATUS_UNBONDING); let pass = false; try { - await dposInstance.confirmUnbondedCandidate(VALIDATORS[0]) + await dposInstance.confirmUnbondedCandidate(VALIDATORS[0]); } catch (e) { assert.isAbove(e.message.search('revert'), -1); pass = true; @@ -131,14 +127,14 @@ contract('multiple validators tests', async (accounts) => { } await Timetravel.advanceBlocks(consts.SLASH_TIMEOUT); - const tx = await dposInstance.confirmUnbondedCandidate(VALIDATORS[0]) + const tx = await dposInstance.confirmUnbondedCandidate(VALIDATORS[0]); const {event, args} = tx.logs[0]; assert.equal(event, 'CandidateUnbonded'); assert.equal(args.candidate, VALIDATORS[0]); }); - it('should replace validator that has min stakes with the unbonding validtor', async () => { + it('should replace validator that has min stakes with the unbonding validator', async () => { await dposInstance.intendWithdraw(VALIDATORS[3], consts.ONE_CELR, {from: DELEGATOR}); const tx = await dposInstance.claimValidator({from: VALIDATORS[0]}); @@ -149,6 +145,5 @@ contract('multiple validators tests', async (accounts) => { assert.equal(tx.logs[1].args.ethAddr, VALIDATORS[0]); assert.equal(tx.logs[1].args.changeType, consts.TYPE_VALIDATOR_ADD); }); - }); }); diff --git a/test/reward_test.js b/test/reward_test.js index 050df13..8308841 100644 --- a/test/reward_test.js +++ b/test/reward_test.js @@ -11,7 +11,6 @@ const consts = require('./constants.js'); contract('reward tests', async (accounts) => { const CANDIDATE = accounts[1]; - const DELEGATOR = accounts[2]; const SUBSCRIBER = accounts[3]; const RECEIVER = accounts[4]; const LARGER_LOCK_END_TIME = 100000; @@ -157,7 +156,7 @@ contract('reward tests', async (accounts) => { }); it('should announce increase commission rate successfully', async () => { - let higherRate = consts.COMMISSION_RATE + 10; + const higherRate = consts.COMMISSION_RATE + 10; const tx = await dposInstance.announceIncreaseCommissionRate(higherRate, LARGER_LOCK_END_TIME, { from: CANDIDATE }); @@ -170,7 +169,7 @@ contract('reward tests', async (accounts) => { }); describe('after announceIncreaseCommissionRate', async () => { - let higherRate = consts.COMMISSION_RATE + 10; + const higherRate = consts.COMMISSION_RATE + 10; beforeEach(async () => { await dposInstance.announceIncreaseCommissionRate(higherRate, LARGER_LOCK_END_TIME, { diff --git a/test/slash_test.js b/test/slash_test.js index c600618..8736d9b 100644 --- a/test/slash_test.js +++ b/test/slash_test.js @@ -1,11 +1,6 @@ -const Web3 = require('web3'); -const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545')); -const sha3 = web3.utils.keccak256; - const protoChainFactory = require('./helper/protoChainFactory'); const Timetravel = require('./helper/timetravel'); const DPoS = artifacts.require('DPoS'); -const SGN = artifacts.require('SGN'); const CELRToken = artifacts.require('CELRToken'); const consts = require('./constants.js'); @@ -115,7 +110,7 @@ contract('single-validator slash tests', async (accounts) => { const senderAmt = await celerToken.balanceOf(SENDER); assert.equal(newMiningPool.toString(), oldMiningPool.addn(7).toString()); assert.equal(newTokenAmt.toString(), oldTokenAmt.addn(6).toString()); - assert.equal(senderAmt.toString(), "2"); + assert.equal(senderAmt.toString(), '2'); }); it('should fail to slash with same request twice', async () => { @@ -163,7 +158,7 @@ contract('single-validator slash tests', async (accounts) => { assert.fail('should have thrown before'); }); - it("should fail to slash if amount sums don't match", async () => { + it(`should fail to slash if amount sums don't match`, async () => { const request = await getPenaltyRequestBytes({ nonce: 1, expireTime: 1000000, @@ -185,8 +180,8 @@ contract('single-validator slash tests', async (accounts) => { assert.fail('should have thrown before'); }); - it("should fail to slash more than one's stake", async () => { - slashAmt = parseInt(consts.DELEGATOR_STAKE) + parseInt(consts.ONE_CELR) + it(`should fail to slash more than one's stake`, async () => { + const slashAmt = parseInt(consts.DELEGATOR_STAKE) + parseInt(consts.ONE_CELR); const request = await getPenaltyRequestBytes({ nonce: 10, expireTime: 1000000, diff --git a/test/subscribe_test.js b/test/subscribe_test.js index 3880d26..fbedbfb 100644 --- a/test/subscribe_test.js +++ b/test/subscribe_test.js @@ -2,7 +2,6 @@ const Web3 = require('web3'); const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545')); const sha3 = web3.utils.keccak256; -const protoChainFactory = require('./helper/protoChainFactory'); const Timetravel = require('./helper/timetravel'); const DPoS = artifacts.require('DPoS'); const SGN = artifacts.require('SGN'); @@ -11,18 +10,11 @@ const consts = require('./constants.js'); contract('subscribe tests', async (accounts) => { const CANDIDATE = accounts[1]; - const DELEGATOR = accounts[2]; const SUBSCRIBER = accounts[3]; let celerToken; let dposInstance; let sgnInstance; - let getRewardRequestBytes; - - before(async () => { - const protoChainInstance = await protoChainFactory(); - getRewardRequestBytes = protoChainInstance.getRewardRequestBytes; - }); beforeEach(async () => { celerToken = await CELRToken.new(); diff --git a/tools/gen_go_binding.sh b/tools/gen_go_binding.sh index 1c9ea18..b7c39f1 100755 --- a/tools/gen_go_binding.sh +++ b/tools/gen_go_binding.sh @@ -1,18 +1,21 @@ #!/usr/bin/env bash # for local generating abi, bin, and go binding -# usage: tools/gen_go_binding.sh [Sol file name] [output path] [package name] +# usage: tools/gen_go_binding.sh [Sol file name] [genfiles path] [bindings path] [package name] [bindings file name] set -e -SOLNAME="$1" # do not include ".sol" -OUTPUTPATH="$2" -PKGNAME="$3" +SOL_NAME="$1" # do not include ".sol" +GENFILES_PATH="$2" +BINDINGS_PATH="$3" +PKG_NAME="$4" +FILE_NAME="$5" -mkdir -p $OUTPUTPATH +mkdir -p $GENFILES_PATH +mkdir -p $BINDINGS_PATH/$PKG_NAME # extract abi bin -jq .abi build/contracts/$SOLNAME.json > $OUTPUTPATH/$SOLNAME.abi -jq -r .bytecode build/contracts/$SOLNAME.json > $OUTPUTPATH/$SOLNAME.bin +jq .abi build/contracts/$SOL_NAME.json >$GENFILES_PATH/$SOL_NAME.abi +jq -r .bytecode build/contracts/$SOL_NAME.json >$GENFILES_PATH/$SOL_NAME.bin # abigen files -abigen -abi $OUTPUTPATH/$SOLNAME.abi -bin $OUTPUTPATH/$SOLNAME.bin -pkg $PKGNAME -type $SOLNAME -out $OUTPUTPATH/$PKGNAME.go +abigen -abi $GENFILES_PATH/$SOL_NAME.abi -bin $GENFILES_PATH/$SOL_NAME.bin -pkg $PKG_NAME -type $SOL_NAME -out $BINDINGS_PATH/$PKG_NAME/$FILE_NAME.go diff --git a/truffle-config.js b/truffle-config.js index 2a02fea..dcb5588 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -44,7 +44,8 @@ module.exports = { development: { host: '127.0.0.1', // Localhost (default: none) port: 8545, // Standard Ethereum port (default: none) - network_id: '*' // Any network (default: none) + network_id: '*', // Any network (default: none) + disableConfirmationListener: true } // Another network with more advanced options...