diff --git a/hardhat/contracts/LilypadPow.sol b/hardhat/contracts/LilypadPow.sol index 0e8a6148..4e79fac6 100644 --- a/hardhat/contracts/LilypadPow.sol +++ b/hardhat/contracts/LilypadPow.sol @@ -13,6 +13,7 @@ contract LilypadPow is Initializable, OwnableUpgradeable { uint256 complete_timestamp; //used to estimate hashrate of this submission bytes32 challenge; //record this to provent user never change challenge uint256 difficulty; + uint256 report_hashrates; //report by users, but this value maybe not truth } struct Challenge { @@ -95,7 +96,7 @@ contract LilypadPow is Initializable, OwnableUpgradeable { } // submitWork miner submint a nonce value, sc check the difficulty and emit a valid pow event when success - function submitWork(uint256 nonce, string calldata nodeId) external { + function submitWork(uint256 nonce, string calldata nodeId, uint256 report_hashrates) external { checkTimeWindow(); Challenge memory lastChallenge = lastChallenges[msg.sender]; @@ -135,7 +136,8 @@ contract LilypadPow is Initializable, OwnableUpgradeable { lastChallenge.timestamp, block.timestamp, lastChallenge.challenge, - lastChallenge.difficulty + lastChallenge.difficulty, + report_hashrates ) ); @@ -148,7 +150,8 @@ contract LilypadPow is Initializable, OwnableUpgradeable { lastChallenge.timestamp, block.timestamp, lastChallenge.challenge, - lastChallenge.difficulty + lastChallenge.difficulty, + report_hashrates ); } @@ -169,7 +172,8 @@ contract LilypadPow is Initializable, OwnableUpgradeable { uint256 start_timestamp, uint256 complete_timestamp, bytes32 challenge, - uint256 difficulty + uint256 difficulty, + uint256 report_hashrates ); event GenerateChallenge(bytes32 challenge, uint256 difficulty); event NewPowRound(); diff --git a/pkg/resourceprovider/minerctl.go b/pkg/resourceprovider/minerctl.go index fc466e01..e13cccf1 100644 --- a/pkg/resourceprovider/minerctl.go +++ b/pkg/resourceprovider/minerctl.go @@ -209,7 +209,7 @@ out: stopWorkers() cache.Add(result.Id, new(uint256.Int)) time.Sleep(time.Second * hpsUpdateSecs) //to ensure data was reported - hashrate := float64(m.totalHash) / 1000 / 1000 / dur + hashrate := float64(m.totalHash) / 1000 / dur m.submit(result.Nonce.ToBig(), hashrate) case allTask := <-m.task: stopWorkers() diff --git a/pkg/resourceprovider/resourceprovider.go b/pkg/resourceprovider/resourceprovider.go index 56518e9b..d72cfeb5 100644 --- a/pkg/resourceprovider/resourceprovider.go +++ b/pkg/resourceprovider/resourceprovider.go @@ -139,9 +139,10 @@ func (resourceProvider *ResourceProvider) StartMineLoop(ctx context.Context) cha ID: id, Address: walletAddress.String(), Date: finishTime, - Hashrate: hashrate, + Hashrate: hashrate / 1000, //mhash }) - txId, err := resourceProvider.web3SDK.SubmitWork(ctx, nonce, nodeId) + + txId, err := resourceProvider.web3SDK.SubmitWork(ctx, nonce, nodeId, big.NewInt(int64(hashrate))) //store khash/s if err != nil { log.Err(err).Msgf("Submit work fail") return diff --git a/pkg/web3/api.go b/pkg/web3/api.go index 030508ef..bbf70555 100644 --- a/pkg/web3/api.go +++ b/pkg/web3/api.go @@ -275,8 +275,9 @@ func (sdk *Web3SDK) SubmitWork( ctx context.Context, nonce *big.Int, nodeId string, + hashrate *big.Int, ) (common.Hash, error) { - tx, err := sdk.Contracts.Pow.SubmitWork(sdk.TransactOpts, nonce, nodeId) + tx, err := sdk.Contracts.Pow.SubmitWork(sdk.TransactOpts, nonce, nodeId, hashrate) if err != nil { return common.Hash{}, err } diff --git a/pkg/web3/bindings/pow/pow.go b/pkg/web3/bindings/pow/pow.go index 1aa86747..adaff654 100644 --- a/pkg/web3/bindings/pow/pow.go +++ b/pkg/web3/bindings/pow/pow.go @@ -38,12 +38,13 @@ type LilypadPowPOWSubmission struct { CompleteTimestamp *big.Int Challenge [32]byte Difficulty *big.Int + ReportHashrates *big.Int } // PowMetaData contains all meta data concerning the Pow contract. var PowMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"challenge\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"name\":\"GenerateChallenge\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"NewPowRound\",\"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\":\"walletAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"nodeId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"start_timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"complete_timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"challenge\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"name\":\"ValidPOWSubmitted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"calculate_difficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"name\":\"change_difficulty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkTimeWindow\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"nodeId\",\"type\":\"string\"}],\"name\":\"generateChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinerCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getMinerPowSubmissionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getMinerPowSubmissions\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"walletAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"nodeId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start_timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"complete_timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"challenge\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"internalType\":\"structLilypadPow.POWSubmission[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMiners\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastChallenges\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"challenge\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"nodeId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"miners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"powSubmissions\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"walletAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"nodeId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start_timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"complete_timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"challenge\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"nodeId\",\"type\":\"string\"}],\"name\":\"submitWork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"triggerNewPowRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validProofs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"window_end\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"window_start\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b5061251a8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610140575f3560e01c8063a738bf8f116100b6578063bb52c1371161007a578063bb52c13714610323578063bfb660de14610341578063c2c434da1461034b578063da8accf91461037b578063e0d152af14610397578063f2fde38b146103c757610140565b8063a738bf8f146102a5578063ab098945146102c3578063adf0047c146102df578063b28d87ea146102fb578063b681f2fd1461031957610140565b80636189f3ac116101085780636189f3ac14610204578063715018a61461023757806378e97925146102415780638129fc1c1461025f5780638b2db16e146102695780638da5cb5b1461028757610140565b80631633da6e146101445780631bb0d808146101625780632d68c39714610192578063331bade1146101b05780634bbe05e4146101ce575b5f80fd5b61014c6103e3565b60405161015991906114d9565b60405180910390f35b61017c6004803603810190610177919061152b565b61046e565b604051610189919061156e565b60405180910390f35b61019a6104b7565b6040516101a7919061156e565b60405180910390f35b6101b86104f4565b6040516101c5919061156e565b60405180910390f35b6101e860048036038101906101e391906115b1565b6104fa565b6040516101fb97969594939291906116a0565b60405180910390f35b61021e6004803603810190610219919061152b565b6105f7565b60405161022e9493929190611714565b60405180910390f35b61023f6106a9565b005b6102496106bc565b604051610256919061156e565b60405180910390f35b6102676106c2565b005b61027161081e565b60405161027e919061156e565b60405180910390f35b61028f610824565b60405161029c919061175e565b60405180910390f35b6102ad61084c565b6040516102ba919061156e565b60405180910390f35b6102dd60048036038101906102d891906117d8565b610852565b005b6102f960048036038101906102f49190611823565b6109ae565b005b6103036109c0565b604051610310919061156e565b60405180910390f35b6103216109c6565b005b61032b610a16565b604051610338919061156e565b60405180910390f35b610349610a22565b005b6103656004803603810190610360919061152b565b610a68565b6040516103729190611a08565b60405180910390f35b61039560048036038101906103909190611a28565b610c17565b005b6103b160048036038101906103ac9190611823565b611113565b6040516103be919061175e565b60405180910390f35b6103e160048036038101906103dc919061152b565b61114e565b005b6060606780548060200260200160405190810160405280929190818152602001828054801561046457602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161041b575b5050505050905090565b5f60665f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490509050919050565b5f806015446104c69190611ab2565b605a6104d29190611b0f565b90506064816065546104e49190611b42565b6104ee9190611b83565b91505090565b606b5481565b6066602052815f5260405f208181548110610513575f80fd5b905f5260205f2090600702015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101805461055890611be0565b80601f016020809104026020016040519081016040528092919081815260200182805461058490611be0565b80156105cf5780601f106105a6576101008083540402835291602001916105cf565b820191905f5260205f20905b8154815290600101906020018083116105b257829003601f168201915b5050505050908060020154908060030154908060040154908060050154908060060154905087565b6068602052805f5260405f205f91509050805f01549080600101549080600201805461062290611be0565b80601f016020809104026020016040519081016040528092919081815260200182805461064e90611be0565b80156106995780601f1061067057610100808354040283529160200191610699565b820191905f5260205f20905b81548152906001019060200180831161067c57829003601f168201915b5050505050908060030154905084565b6106b16111d0565b6106ba5f61124e565b565b606a5481565b5f8060019054906101000a900460ff161590508080156106f1575060015f8054906101000a900460ff1660ff16105b8061071d575061070030611311565b15801561071c575060015f8054906101000a900460ff1660ff16145b5b61075c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075390611c80565b60405180910390fd5b60015f806101000a81548160ff021916908360ff16021790555080156107975760015f60016101000a81548160ff0219169083151502179055505b61079f611333565b7c149a6a3000000000000000000000000000000000000000000000000000606581905550801561081b575f8060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516108129190611cec565b60405180910390a15b50565b60655481565b5f60335f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606c5481565b61085a610a22565b5f42606b54338585604051602001610876959493929190611da6565b6040516020818303038152906040528051906020012090505f6108976104b7565b9050604051806080016040528083815260200182815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081526020014281525060685f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f01556020820151816001015560408201518160020190816109619190611fb2565b50606082015181600301559050507f496186a9d930bac0744acdcd1d0c054b18283eecbe99d30bda98102d3d06b8ef82826040516109a0929190612081565b60405180910390a150505050565b6109b66111d0565b8060658190555050565b60695481565b6109ce6111d0565b43606b81905550601e436109e29190611b0f565b606c819055507f10cc99616aca050d810fd487c95f968e516d0fa25318530ed50753153d060a1e60405160405180910390a1565b5f606780549050905090565b606c544310610a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5d906120f2565b60405180910390fd5b565b606060665f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610c0c578382905f5260205f2090600702016040518060e00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054610b4b90611be0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7790611be0565b8015610bc25780601f10610b9957610100808354040283529160200191610bc2565b820191905f5260205f20905b815481529060010190602001808311610ba557829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505081526020019060010190610ac6565b505050509050919050565b610c1f610a22565b5f60685f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f820154815260200160018201548152602001600282018054610c8b90611be0565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb790611be0565b8015610d025780601f10610cd957610100808354040283529160200191610d02565b820191905f5260205f20905b815481529060010190602001808311610ce557829003601f168201915b5050505050815260200160038201548152505090505f8160600151606b54338686604051602001610d37959493929190611da6565b60405160208183030381529060405280519060200120905080825f015114610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b90612180565b60405180910390fd5b5f8186604051602001610da89291906121be565b6040516020818303038152906040528051906020012090508260200151815f1c10610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff90612259565b60405180910390fd5b60695f815480929190610e1a90612277565b91905055505f60665f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f818054905003610ecb57606733908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b806040518060e001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050815260200189815260200186606001518152602001428152602001865f015181526020018660200151815250908060018154018082558091505060019003905f5260205f2090600702015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019081610fe29190611fb2565b5060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c08201518160060155505060405180608001604052805f801b81526020015f815260200160405180602001604052805f81525081526020015f81525060685f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f01556020820151816001015560408201518160020190816110ac9190611fb2565b50606082015181600301559050507f172b7d59e60446d8dfc98985344fb883c871ef150b1db4d1592bcb67699037323387878a8860600151428a5f01518b602001516040516111029897969594939291906122ea565b60405180910390a150505050505050565b60678181548110611122575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111566111d0565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb906123d0565b60405180910390fd5b6111cd8161124e565b50565b6111d861138b565b73ffffffffffffffffffffffffffffffffffffffff166111f6610824565b73ffffffffffffffffffffffffffffffffffffffff161461124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124390612438565b60405180910390fd5b565b5f60335f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160335f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f60019054906101000a900460ff16611381576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611378906124c6565b60405180910390fd5b611389611392565b565b5f33905090565b5f60019054906101000a900460ff166113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d7906124c6565b60405180910390fd5b6113f06113eb61138b565b61124e565b565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114448261141b565b9050919050565b6114548161143a565b82525050565b5f611465838361144b565b60208301905092915050565b5f602082019050919050565b5f611487826113f2565b61149181856113fc565b935061149c8361140c565b805f5b838110156114cc5781516114b3888261145a565b97506114be83611471565b92505060018101905061149f565b5085935050505092915050565b5f6020820190508181035f8301526114f1818461147d565b905092915050565b5f80fd5b5f80fd5b61150a8161143a565b8114611514575f80fd5b50565b5f8135905061152581611501565b92915050565b5f602082840312156115405761153f6114f9565b5b5f61154d84828501611517565b91505092915050565b5f819050919050565b61156881611556565b82525050565b5f6020820190506115815f83018461155f565b92915050565b61159081611556565b811461159a575f80fd5b50565b5f813590506115ab81611587565b92915050565b5f80604083850312156115c7576115c66114f9565b5b5f6115d485828601611517565b92505060206115e58582860161159d565b9150509250929050565b6115f88161143a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561163557808201518184015260208101905061161a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61165a826115fe565b6116648185611608565b9350611674818560208601611618565b61167d81611640565b840191505092915050565b5f819050919050565b61169a81611688565b82525050565b5f60e0820190506116b35f83018a6115ef565b81810360208301526116c58189611650565b90506116d4604083018861155f565b6116e1606083018761155f565b6116ee608083018661155f565b6116fb60a0830185611691565b61170860c083018461155f565b98975050505050505050565b5f6080820190506117275f830187611691565b611734602083018661155f565b81810360408301526117468185611650565b9050611755606083018461155f565b95945050505050565b5f6020820190506117715f8301846115ef565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261179857611797611777565b5b8235905067ffffffffffffffff8111156117b5576117b461177b565b5b6020830191508360018202830111156117d1576117d061177f565b5b9250929050565b5f80602083850312156117ee576117ed6114f9565b5b5f83013567ffffffffffffffff81111561180b5761180a6114fd565b5b61181785828601611783565b92509250509250929050565b5f60208284031215611838576118376114f9565b5b5f6118458482850161159d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f611891826115fe565b61189b8185611877565b93506118ab818560208601611618565b6118b481611640565b840191505092915050565b6118c881611556565b82525050565b6118d781611688565b82525050565b5f60e083015f8301516118f25f86018261144b565b506020830151848203602086015261190a8282611887565b915050604083015161191f60408601826118bf565b50606083015161193260608601826118bf565b50608083015161194560808601826118bf565b5060a083015161195860a08601826118ce565b5060c083015161196b60c08601826118bf565b508091505092915050565b5f61198183836118dd565b905092915050565b5f602082019050919050565b5f61199f8261184e565b6119a98185611858565b9350836020820285016119bb85611868565b805f5b858110156119f657848403895281516119d78582611976565b94506119e283611989565b925060208a019950506001810190506119be565b50829750879550505050505092915050565b5f6020820190508181035f830152611a208184611995565b905092915050565b5f805f60408486031215611a3f57611a3e6114f9565b5b5f611a4c8682870161159d565b935050602084013567ffffffffffffffff811115611a6d57611a6c6114fd565b5b611a7986828701611783565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611abc82611556565b9150611ac783611556565b925082611ad757611ad6611a85565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b1982611556565b9150611b2483611556565b9250828201905080821115611b3c57611b3b611ae2565b5b92915050565b5f611b4c82611556565b9150611b5783611556565b9250828202611b6581611556565b91508282048414831517611b7c57611b7b611ae2565b5b5092915050565b5f611b8d82611556565b9150611b9883611556565b925082611ba857611ba7611a85565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611bf757607f821691505b602082108103611c0a57611c09611bb3565b5b50919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c7265615f8201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b5f611c6a602e83611608565b9150611c7582611c10565b604082019050919050565b5f6020820190508181035f830152611c9781611c5e565b9050919050565b5f819050919050565b5f60ff82169050919050565b5f819050919050565b5f611cd6611cd1611ccc84611c9e565b611cb3565b611ca7565b9050919050565b611ce681611cbc565b82525050565b5f602082019050611cff5f830184611cdd565b92915050565b5f819050919050565b611d1f611d1a82611556565b611d05565b82525050565b5f8160601b9050919050565b5f611d3b82611d25565b9050919050565b5f611d4c82611d31565b9050919050565b611d64611d5f8261143a565b611d42565b82525050565b5f81905092915050565b828183375f83830152505050565b5f611d8d8385611d6a565b9350611d9a838584611d74565b82840190509392505050565b5f611db18288611d0e565b602082019150611dc18287611d0e565b602082019150611dd18286611d53565b601482019150611de2828486611d82565b91508190509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302611e7a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611e3f565b611e848683611e3f565b95508019841693508086168417925050509392505050565b5f611eb6611eb1611eac84611556565b611cb3565b611556565b9050919050565b5f819050919050565b611ecf83611e9c565b611ee3611edb82611ebd565b848454611e4b565b825550505050565b5f90565b611ef7611eeb565b611f02818484611ec6565b505050565b5b81811015611f2557611f1a5f82611eef565b600181019050611f08565b5050565b601f821115611f6a57611f3b81611e1e565b611f4484611e30565b81016020851015611f53578190505b611f67611f5f85611e30565b830182611f07565b50505b505050565b5f82821c905092915050565b5f611f8a5f1984600802611f6f565b1980831691505092915050565b5f611fa28383611f7b565b9150826002028217905092915050565b611fbb826115fe565b67ffffffffffffffff811115611fd457611fd3611df1565b5b611fde8254611be0565b611fe9828285611f29565b5f60209050601f83116001811461201a575f8415612008578287015190505b6120128582611f97565b865550612079565b601f19841661202886611e1e565b5f5b8281101561204f5784890151825560018201915060208501945060208101905061202a565b8683101561206c5784890151612068601f891682611f7b565b8355505b6001600288020188555050505b505050505050565b5f6040820190506120945f830185611691565b6120a1602083018461155f565b9392505050565b7f70726f6f662077696e646f77732068617320636c6f73656400000000000000005f82015250565b5f6120dc601883611608565b91506120e7826120a8565b602082019050919050565b5f6020820190508181035f830152612109816120d0565b9050919050565b7f576f726b207375626d6974206e6f7420636f6d70617461626c652077697468205f8201527f6368616c6c656e67650000000000000000000000000000000000000000000000602082015250565b5f61216a602983611608565b915061217582612110565b604082019050919050565b5f6020820190508181035f8301526121978161215e565b9050919050565b5f819050919050565b6121b86121b382611688565b61219e565b82525050565b5f6121c982856121a7565b6020820191506121d98284611d0e565b6020820191508190509392505050565b7f576f726b20646f6573206e6f74206d65657420646966666963756c74792074615f8201527f7267657400000000000000000000000000000000000000000000000000000000602082015250565b5f612243602483611608565b915061224e826121e9565b604082019050919050565b5f6020820190508181035f83015261227081612237565b9050919050565b5f61228182611556565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036122b3576122b2611ae2565b5b600182019050919050565b5f6122c98385611608565b93506122d6838584611d74565b6122df83611640565b840190509392505050565b5f60e0820190506122fd5f83018b6115ef565b818103602083015261231081898b6122be565b905061231f604083018861155f565b61232c606083018761155f565b612339608083018661155f565b61234660a0830185611691565b61235360c083018461155f565b9998505050505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6123ba602683611608565b91506123c582612360565b604082019050919050565b5f6020820190508181035f8301526123e7816123ae565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612422602083611608565b915061242d826123ee565b602082019050919050565b5f6020820190508181035f83015261244f81612416565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420695f8201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b5f6124b0602b83611608565b91506124bb82612456565b604082019050919050565b5f6020820190508181035f8301526124dd816124a4565b905091905056fea2646970667358221220efcf195df08be990f01e2b2c33e87946572b0fe6b2fb157815311b351363a39064736f6c63430008150033", + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"challenge\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"name\":\"GenerateChallenge\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"NewPowRound\",\"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\":\"walletAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"nodeId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"start_timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"complete_timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"challenge\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"report_hashrates\",\"type\":\"uint256\"}],\"name\":\"ValidPOWSubmitted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"calculate_difficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"name\":\"change_difficulty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkTimeWindow\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"nodeId\",\"type\":\"string\"}],\"name\":\"generateChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinerCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getMinerPowSubmissionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getMinerPowSubmissions\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"walletAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"nodeId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start_timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"complete_timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"challenge\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"report_hashrates\",\"type\":\"uint256\"}],\"internalType\":\"structLilypadPow.POWSubmission[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMiners\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastChallenges\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"challenge\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"nodeId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"miners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"powSubmissions\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"walletAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"nodeId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start_timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"complete_timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"challenge\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"report_hashrates\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"nodeId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"report_hashrates\",\"type\":\"uint256\"}],\"name\":\"submitWork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"triggerNewPowRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validProofs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"window_end\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"window_start\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b506125868061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610140575f3560e01c80638da5cb5b116100b6578063b681f2fd1161007a578063b681f2fd14610336578063bb52c13714610340578063bfb660de1461035e578063c2c434da14610368578063e0d152af14610398578063f2fde38b146103c857610140565b80638da5cb5b146102a4578063a738bf8f146102c2578063ab098945146102e0578063adf0047c146102fc578063b28d87ea1461031857610140565b80634bbe05e4116101085780634bbe05e4146101ea5780636189f3ac14610221578063715018a61461025457806378e979251461025e5780638129fc1c1461027c5780638b2db16e1461028657610140565b80631633da6e146101445780631bb0d808146101625780632c23c10c146101925780632d68c397146101ae578063331bade1146101cc575b5f80fd5b61014c6103e4565b60405161015991906114ff565b60405180910390f35b61017c60048036038101906101779190611551565b61046f565b6040516101899190611594565b60405180910390f35b6101ac60048036038101906101a79190611638565b6104b8565b005b6101b66109c8565b6040516101c39190611594565b60405180910390f35b6101d4610a05565b6040516101e19190611594565b60405180910390f35b61020460048036038101906101ff91906116a9565b610a0b565b604051610218989796959493929190611798565b60405180910390f35b61023b60048036038101906102369190611551565b610b0e565b60405161024b949392919061181b565b60405180910390f35b61025c610bc0565b005b610266610bd3565b6040516102739190611594565b60405180910390f35b610284610bd9565b005b61028e610d35565b60405161029b9190611594565b60405180910390f35b6102ac610d3b565b6040516102b99190611865565b60405180910390f35b6102ca610d63565b6040516102d79190611594565b60405180910390f35b6102fa60048036038101906102f5919061187e565b610d69565b005b610316600480360381019061031191906118c9565b610ec5565b005b610320610ed7565b60405161032d9190611594565b60405180910390f35b61033e610edd565b005b610348610f2d565b6040516103559190611594565b60405180910390f35b610366610f39565b005b610382600480360381019061037d9190611551565b610f7f565b60405161038f9190611ac2565b60405180910390f35b6103b260048036038101906103ad91906118c9565b611139565b6040516103bf9190611865565b60405180910390f35b6103e260048036038101906103dd9190611551565b611174565b005b6060606780548060200260200160405190810160405280929190818152602001828054801561046557602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161041c575b5050505050905090565b5f60665f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490509050919050565b6104c0610f39565b5f60685f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201805461052c90611b0f565b80601f016020809104026020016040519081016040528092919081815260200182805461055890611b0f565b80156105a35780601f1061057a576101008083540402835291602001916105a3565b820191905f5260205f20905b81548152906001019060200180831161058657829003601f168201915b5050505050815260200160038201548152505090505f8160600151606b543387876040516020016105d8959493929190611be0565b60405160208183030381529060405280519060200120905080825f015114610635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062c90611c9b565b60405180910390fd5b5f8187604051602001610649929190611cd9565b6040516020818303038152906040528051906020012090508260200151815f1c106106a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a090611d74565b60405180910390fd5b60695f8154809291906106bb90611dbf565b91905055505f60665f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f81805490500361076c57606733908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b806040518061010001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200189898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081526020018a815260200186606001518152602001428152602001865f015181526020018660200151815260200187815250908060018154018082558091505060019003905f5260205f2090600802015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101908161088a9190611fd0565b5060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070155505060405180608001604052805f801b81526020015f815260200160405180602001604052805f81525081526020015f81525060685f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015560208201518160010155604082015181600201908161095e9190611fd0565b50606082015181600301559050507ff6feb9ff838f9c6cb818374d0e0c8191e3653e218de80e7f84cce1560b758c653388888b8860600151428a5f01518b602001518d6040516109b6999897969594939291906120cb565b60405180910390a15050505050505050565b5f806015446109d7919061217d565b605a6109e391906121ad565b90506064816065546109f591906121e0565b6109ff9190612221565b91505090565b606b5481565b6066602052815f5260405f208181548110610a24575f80fd5b905f5260205f2090600802015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054610a6990611b0f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9590611b0f565b8015610ae05780601f10610ab757610100808354040283529160200191610ae0565b820191905f5260205f20905b815481529060010190602001808311610ac357829003601f168201915b5050505050908060020154908060030154908060040154908060050154908060060154908060070154905088565b6068602052805f5260405f205f91509050805f015490806001015490806002018054610b3990611b0f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6590611b0f565b8015610bb05780601f10610b8757610100808354040283529160200191610bb0565b820191905f5260205f20905b815481529060010190602001808311610b9357829003601f168201915b5050505050908060030154905084565b610bc86111f6565b610bd15f611274565b565b606a5481565b5f8060019054906101000a900460ff16159050808015610c08575060015f8054906101000a900460ff1660ff16105b80610c345750610c1730611337565b158015610c33575060015f8054906101000a900460ff1660ff16145b5b610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a906122c1565b60405180910390fd5b60015f806101000a81548160ff021916908360ff1602179055508015610cae5760015f60016101000a81548160ff0219169083151502179055505b610cb6611359565b7c149a6a30000000000000000000000000000000000000000000000000006065819055508015610d32575f8060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d299190612324565b60405180910390a15b50565b60655481565b5f60335f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606c5481565b610d71610f39565b5f42606b54338585604051602001610d8d959493929190611be0565b6040516020818303038152906040528051906020012090505f610dae6109c8565b9050604051806080016040528083815260200182815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081526020014281525060685f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f0155602082015181600101556040820151816002019081610e789190611fd0565b50606082015181600301559050507f496186a9d930bac0744acdcd1d0c054b18283eecbe99d30bda98102d3d06b8ef8282604051610eb792919061233d565b60405180910390a150505050565b610ecd6111f6565b8060658190555050565b60695481565b610ee56111f6565b43606b81905550601e43610ef991906121ad565b606c819055507f10cc99616aca050d810fd487c95f968e516d0fa25318530ed50753153d060a1e60405160405180910390a1565b5f606780549050905090565b606c544310610f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f74906123ae565b60405180910390fd5b565b606060665f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b8282101561112e578382905f5260205f209060080201604051806101000160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805461106390611b0f565b80601f016020809104026020016040519081016040528092919081815260200182805461108f90611b0f565b80156110da5780601f106110b1576101008083540402835291602001916110da565b820191905f5260205f20905b8154815290600101906020018083116110bd57829003601f168201915b50505050508152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152505081526020019060010190610fdd565b505050509050919050565b60678181548110611148575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61117c6111f6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e19061243c565b60405180910390fd5b6111f381611274565b50565b6111fe6113b1565b73ffffffffffffffffffffffffffffffffffffffff1661121c610d3b565b73ffffffffffffffffffffffffffffffffffffffff1614611272576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611269906124a4565b60405180910390fd5b565b5f60335f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160335f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f60019054906101000a900460ff166113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e90612532565b60405180910390fd5b6113af6113b8565b565b5f33905090565b5f60019054906101000a900460ff16611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90612532565b60405180910390fd5b6114166114116113b1565b611274565b565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61146a82611441565b9050919050565b61147a81611460565b82525050565b5f61148b8383611471565b60208301905092915050565b5f602082019050919050565b5f6114ad82611418565b6114b78185611422565b93506114c283611432565b805f5b838110156114f25781516114d98882611480565b97506114e483611497565b9250506001810190506114c5565b5085935050505092915050565b5f6020820190508181035f83015261151781846114a3565b905092915050565b5f80fd5b5f80fd5b61153081611460565b811461153a575f80fd5b50565b5f8135905061154b81611527565b92915050565b5f602082840312156115665761156561151f565b5b5f6115738482850161153d565b91505092915050565b5f819050919050565b61158e8161157c565b82525050565b5f6020820190506115a75f830184611585565b92915050565b6115b68161157c565b81146115c0575f80fd5b50565b5f813590506115d1816115ad565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126115f8576115f76115d7565b5b8235905067ffffffffffffffff811115611615576116146115db565b5b602083019150836001820283011115611631576116306115df565b5b9250929050565b5f805f80606085870312156116505761164f61151f565b5b5f61165d878288016115c3565b945050602085013567ffffffffffffffff81111561167e5761167d611523565b5b61168a878288016115e3565b9350935050604061169d878288016115c3565b91505092959194509250565b5f80604083850312156116bf576116be61151f565b5b5f6116cc8582860161153d565b92505060206116dd858286016115c3565b9150509250929050565b6116f081611460565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561172d578082015181840152602081019050611712565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611752826116f6565b61175c8185611700565b935061176c818560208601611710565b61177581611738565b840191505092915050565b5f819050919050565b61179281611780565b82525050565b5f610100820190506117ac5f83018b6116e7565b81810360208301526117be818a611748565b90506117cd6040830189611585565b6117da6060830188611585565b6117e76080830187611585565b6117f460a0830186611789565b61180160c0830185611585565b61180e60e0830184611585565b9998505050505050505050565b5f60808201905061182e5f830187611789565b61183b6020830186611585565b818103604083015261184d8185611748565b905061185c6060830184611585565b95945050505050565b5f6020820190506118785f8301846116e7565b92915050565b5f80602083850312156118945761189361151f565b5b5f83013567ffffffffffffffff8111156118b1576118b0611523565b5b6118bd858286016115e3565b92509250509250929050565b5f602082840312156118de576118dd61151f565b5b5f6118eb848285016115c3565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f611937826116f6565b611941818561191d565b9350611951818560208601611710565b61195a81611738565b840191505092915050565b61196e8161157c565b82525050565b61197d81611780565b82525050565b5f61010083015f8301516119995f860182611471565b50602083015184820360208601526119b1828261192d565b91505060408301516119c66040860182611965565b5060608301516119d96060860182611965565b5060808301516119ec6080860182611965565b5060a08301516119ff60a0860182611974565b5060c0830151611a1260c0860182611965565b5060e0830151611a2560e0860182611965565b508091505092915050565b5f611a3b8383611983565b905092915050565b5f602082019050919050565b5f611a59826118f4565b611a6381856118fe565b935083602082028501611a758561190e565b805f5b85811015611ab05784840389528151611a918582611a30565b9450611a9c83611a43565b925060208a01995050600181019050611a78565b50829750879550505050505092915050565b5f6020820190508181035f830152611ada8184611a4f565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611b2657607f821691505b602082108103611b3957611b38611ae2565b5b50919050565b5f819050919050565b611b59611b548261157c565b611b3f565b82525050565b5f8160601b9050919050565b5f611b7582611b5f565b9050919050565b5f611b8682611b6b565b9050919050565b611b9e611b9982611460565b611b7c565b82525050565b5f81905092915050565b828183375f83830152505050565b5f611bc78385611ba4565b9350611bd4838584611bae565b82840190509392505050565b5f611beb8288611b48565b602082019150611bfb8287611b48565b602082019150611c0b8286611b8d565b601482019150611c1c828486611bbc565b91508190509695505050505050565b7f576f726b207375626d6974206e6f7420636f6d70617461626c652077697468205f8201527f6368616c6c656e67650000000000000000000000000000000000000000000000602082015250565b5f611c85602983611700565b9150611c9082611c2b565b604082019050919050565b5f6020820190508181035f830152611cb281611c79565b9050919050565b5f819050919050565b611cd3611cce82611780565b611cb9565b82525050565b5f611ce48285611cc2565b602082019150611cf48284611b48565b6020820191508190509392505050565b7f576f726b20646f6573206e6f74206d65657420646966666963756c74792074615f8201527f7267657400000000000000000000000000000000000000000000000000000000602082015250565b5f611d5e602483611700565b9150611d6982611d04565b604082019050919050565b5f6020820190508181035f830152611d8b81611d52565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611dc98261157c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611dfb57611dfa611d92565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302611e8f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611e54565b611e998683611e54565b95508019841693508086168417925050509392505050565b5f819050919050565b5f611ed4611ecf611eca8461157c565b611eb1565b61157c565b9050919050565b5f819050919050565b611eed83611eba565b611f01611ef982611edb565b848454611e60565b825550505050565b5f90565b611f15611f09565b611f20818484611ee4565b505050565b5b81811015611f4357611f385f82611f0d565b600181019050611f26565b5050565b601f821115611f8857611f5981611e33565b611f6284611e45565b81016020851015611f71578190505b611f85611f7d85611e45565b830182611f25565b50505b505050565b5f82821c905092915050565b5f611fa85f1984600802611f8d565b1980831691505092915050565b5f611fc08383611f99565b9150826002028217905092915050565b611fd9826116f6565b67ffffffffffffffff811115611ff257611ff1611e06565b5b611ffc8254611b0f565b612007828285611f47565b5f60209050601f831160018114612038575f8415612026578287015190505b6120308582611fb5565b865550612097565b601f19841661204686611e33565b5f5b8281101561206d57848901518255600182019150602085019450602081019050612048565b8683101561208a5784890151612086601f891682611f99565b8355505b6001600288020188555050505b505050505050565b5f6120aa8385611700565b93506120b7838584611bae565b6120c083611738565b840190509392505050565b5f610100820190506120df5f83018c6116e7565b81810360208301526120f2818a8c61209f565b90506121016040830189611585565b61210e6060830188611585565b61211b6080830187611585565b61212860a0830186611789565b61213560c0830185611585565b61214260e0830184611585565b9a9950505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6121878261157c565b91506121928361157c565b9250826121a2576121a1612150565b5b828206905092915050565b5f6121b78261157c565b91506121c28361157c565b92508282019050808211156121da576121d9611d92565b5b92915050565b5f6121ea8261157c565b91506121f58361157c565b92508282026122038161157c565b9150828204841483151761221a57612219611d92565b5b5092915050565b5f61222b8261157c565b91506122368361157c565b92508261224657612245612150565b5b828204905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c7265615f8201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b5f6122ab602e83611700565b91506122b682612251565b604082019050919050565b5f6020820190508181035f8301526122d88161229f565b9050919050565b5f819050919050565b5f60ff82169050919050565b5f61230e612309612304846122df565b611eb1565b6122e8565b9050919050565b61231e816122f4565b82525050565b5f6020820190506123375f830184612315565b92915050565b5f6040820190506123505f830185611789565b61235d6020830184611585565b9392505050565b7f70726f6f662077696e646f77732068617320636c6f73656400000000000000005f82015250565b5f612398601883611700565b91506123a382612364565b602082019050919050565b5f6020820190508181035f8301526123c58161238c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612426602683611700565b9150612431826123cc565b604082019050919050565b5f6020820190508181035f8301526124538161241a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61248e602083611700565b91506124998261245a565b602082019050919050565b5f6020820190508181035f8301526124bb81612482565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420695f8201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b5f61251c602b83611700565b9150612527826124c2565b604082019050919050565b5f6020820190508181035f83015261254981612510565b905091905056fea26469706673582212207939612bc798117c27b9fc32c8b5186d731659dd091802330d4f10c786e00f8964736f6c63430008150033", } // PowABI is the input ABI used to generate the binding from. @@ -337,7 +338,7 @@ func (_Pow *PowCallerSession) GetMinerPowSubmissionCount(addr common.Address) (* // GetMinerPowSubmissions is a free data retrieval call binding the contract method 0xc2c434da. // -// Solidity: function getMinerPowSubmissions(address addr) view returns((address,string,uint256,uint256,uint256,bytes32,uint256)[]) +// Solidity: function getMinerPowSubmissions(address addr) view returns((address,string,uint256,uint256,uint256,bytes32,uint256,uint256)[]) func (_Pow *PowCaller) GetMinerPowSubmissions(opts *bind.CallOpts, addr common.Address) ([]LilypadPowPOWSubmission, error) { var out []interface{} err := _Pow.contract.Call(opts, &out, "getMinerPowSubmissions", addr) @@ -354,14 +355,14 @@ func (_Pow *PowCaller) GetMinerPowSubmissions(opts *bind.CallOpts, addr common.A // GetMinerPowSubmissions is a free data retrieval call binding the contract method 0xc2c434da. // -// Solidity: function getMinerPowSubmissions(address addr) view returns((address,string,uint256,uint256,uint256,bytes32,uint256)[]) +// Solidity: function getMinerPowSubmissions(address addr) view returns((address,string,uint256,uint256,uint256,bytes32,uint256,uint256)[]) func (_Pow *PowSession) GetMinerPowSubmissions(addr common.Address) ([]LilypadPowPOWSubmission, error) { return _Pow.Contract.GetMinerPowSubmissions(&_Pow.CallOpts, addr) } // GetMinerPowSubmissions is a free data retrieval call binding the contract method 0xc2c434da. // -// Solidity: function getMinerPowSubmissions(address addr) view returns((address,string,uint256,uint256,uint256,bytes32,uint256)[]) +// Solidity: function getMinerPowSubmissions(address addr) view returns((address,string,uint256,uint256,uint256,bytes32,uint256,uint256)[]) func (_Pow *PowCallerSession) GetMinerPowSubmissions(addr common.Address) ([]LilypadPowPOWSubmission, error) { return _Pow.Contract.GetMinerPowSubmissions(&_Pow.CallOpts, addr) } @@ -516,7 +517,7 @@ func (_Pow *PowCallerSession) Owner() (common.Address, error) { // PowSubmissions is a free data retrieval call binding the contract method 0x4bbe05e4. // -// Solidity: function powSubmissions(address , uint256 ) view returns(address walletAddress, string nodeId, uint256 nonce, uint256 start_timestamp, uint256 complete_timestamp, bytes32 challenge, uint256 difficulty) +// Solidity: function powSubmissions(address , uint256 ) view returns(address walletAddress, string nodeId, uint256 nonce, uint256 start_timestamp, uint256 complete_timestamp, bytes32 challenge, uint256 difficulty, uint256 report_hashrates) func (_Pow *PowCaller) PowSubmissions(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (struct { WalletAddress common.Address NodeId string @@ -525,6 +526,7 @@ func (_Pow *PowCaller) PowSubmissions(opts *bind.CallOpts, arg0 common.Address, CompleteTimestamp *big.Int Challenge [32]byte Difficulty *big.Int + ReportHashrates *big.Int }, error) { var out []interface{} err := _Pow.contract.Call(opts, &out, "powSubmissions", arg0, arg1) @@ -537,6 +539,7 @@ func (_Pow *PowCaller) PowSubmissions(opts *bind.CallOpts, arg0 common.Address, CompleteTimestamp *big.Int Challenge [32]byte Difficulty *big.Int + ReportHashrates *big.Int }) if err != nil { return *outstruct, err @@ -549,6 +552,7 @@ func (_Pow *PowCaller) PowSubmissions(opts *bind.CallOpts, arg0 common.Address, outstruct.CompleteTimestamp = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) outstruct.Challenge = *abi.ConvertType(out[5], new([32]byte)).(*[32]byte) outstruct.Difficulty = *abi.ConvertType(out[6], new(*big.Int)).(**big.Int) + outstruct.ReportHashrates = *abi.ConvertType(out[7], new(*big.Int)).(**big.Int) return *outstruct, err @@ -556,7 +560,7 @@ func (_Pow *PowCaller) PowSubmissions(opts *bind.CallOpts, arg0 common.Address, // PowSubmissions is a free data retrieval call binding the contract method 0x4bbe05e4. // -// Solidity: function powSubmissions(address , uint256 ) view returns(address walletAddress, string nodeId, uint256 nonce, uint256 start_timestamp, uint256 complete_timestamp, bytes32 challenge, uint256 difficulty) +// Solidity: function powSubmissions(address , uint256 ) view returns(address walletAddress, string nodeId, uint256 nonce, uint256 start_timestamp, uint256 complete_timestamp, bytes32 challenge, uint256 difficulty, uint256 report_hashrates) func (_Pow *PowSession) PowSubmissions(arg0 common.Address, arg1 *big.Int) (struct { WalletAddress common.Address NodeId string @@ -565,13 +569,14 @@ func (_Pow *PowSession) PowSubmissions(arg0 common.Address, arg1 *big.Int) (stru CompleteTimestamp *big.Int Challenge [32]byte Difficulty *big.Int + ReportHashrates *big.Int }, error) { return _Pow.Contract.PowSubmissions(&_Pow.CallOpts, arg0, arg1) } // PowSubmissions is a free data retrieval call binding the contract method 0x4bbe05e4. // -// Solidity: function powSubmissions(address , uint256 ) view returns(address walletAddress, string nodeId, uint256 nonce, uint256 start_timestamp, uint256 complete_timestamp, bytes32 challenge, uint256 difficulty) +// Solidity: function powSubmissions(address , uint256 ) view returns(address walletAddress, string nodeId, uint256 nonce, uint256 start_timestamp, uint256 complete_timestamp, bytes32 challenge, uint256 difficulty, uint256 report_hashrates) func (_Pow *PowCallerSession) PowSubmissions(arg0 common.Address, arg1 *big.Int) (struct { WalletAddress common.Address NodeId string @@ -580,6 +585,7 @@ func (_Pow *PowCallerSession) PowSubmissions(arg0 common.Address, arg1 *big.Int) CompleteTimestamp *big.Int Challenge [32]byte Difficulty *big.Int + ReportHashrates *big.Int }, error) { return _Pow.Contract.PowSubmissions(&_Pow.CallOpts, arg0, arg1) } @@ -823,25 +829,25 @@ func (_Pow *PowTransactorSession) RenounceOwnership() (*types.Transaction, error return _Pow.Contract.RenounceOwnership(&_Pow.TransactOpts) } -// SubmitWork is a paid mutator transaction binding the contract method 0xda8accf9. +// SubmitWork is a paid mutator transaction binding the contract method 0x2c23c10c. // -// Solidity: function submitWork(uint256 nonce, string nodeId) returns() -func (_Pow *PowTransactor) SubmitWork(opts *bind.TransactOpts, nonce *big.Int, nodeId string) (*types.Transaction, error) { - return _Pow.contract.Transact(opts, "submitWork", nonce, nodeId) +// Solidity: function submitWork(uint256 nonce, string nodeId, uint256 report_hashrates) returns() +func (_Pow *PowTransactor) SubmitWork(opts *bind.TransactOpts, nonce *big.Int, nodeId string, report_hashrates *big.Int) (*types.Transaction, error) { + return _Pow.contract.Transact(opts, "submitWork", nonce, nodeId, report_hashrates) } -// SubmitWork is a paid mutator transaction binding the contract method 0xda8accf9. +// SubmitWork is a paid mutator transaction binding the contract method 0x2c23c10c. // -// Solidity: function submitWork(uint256 nonce, string nodeId) returns() -func (_Pow *PowSession) SubmitWork(nonce *big.Int, nodeId string) (*types.Transaction, error) { - return _Pow.Contract.SubmitWork(&_Pow.TransactOpts, nonce, nodeId) +// Solidity: function submitWork(uint256 nonce, string nodeId, uint256 report_hashrates) returns() +func (_Pow *PowSession) SubmitWork(nonce *big.Int, nodeId string, report_hashrates *big.Int) (*types.Transaction, error) { + return _Pow.Contract.SubmitWork(&_Pow.TransactOpts, nonce, nodeId, report_hashrates) } -// SubmitWork is a paid mutator transaction binding the contract method 0xda8accf9. +// SubmitWork is a paid mutator transaction binding the contract method 0x2c23c10c. // -// Solidity: function submitWork(uint256 nonce, string nodeId) returns() -func (_Pow *PowTransactorSession) SubmitWork(nonce *big.Int, nodeId string) (*types.Transaction, error) { - return _Pow.Contract.SubmitWork(&_Pow.TransactOpts, nonce, nodeId) +// Solidity: function submitWork(uint256 nonce, string nodeId, uint256 report_hashrates) returns() +func (_Pow *PowTransactorSession) SubmitWork(nonce *big.Int, nodeId string, report_hashrates *big.Int) (*types.Transaction, error) { + return _Pow.Contract.SubmitWork(&_Pow.TransactOpts, nonce, nodeId, report_hashrates) } // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. @@ -1517,12 +1523,13 @@ type PowValidPOWSubmitted struct { CompleteTimestamp *big.Int Challenge [32]byte Difficulty *big.Int + ReportHashrates *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterValidPOWSubmitted is a free log retrieval operation binding the contract event 0x172b7d59e60446d8dfc98985344fb883c871ef150b1db4d1592bcb6769903732. +// FilterValidPOWSubmitted is a free log retrieval operation binding the contract event 0xf6feb9ff838f9c6cb818374d0e0c8191e3653e218de80e7f84cce1560b758c65. // -// Solidity: event ValidPOWSubmitted(address walletAddress, string nodeId, uint256 nonce, uint256 start_timestamp, uint256 complete_timestamp, bytes32 challenge, uint256 difficulty) +// Solidity: event ValidPOWSubmitted(address walletAddress, string nodeId, uint256 nonce, uint256 start_timestamp, uint256 complete_timestamp, bytes32 challenge, uint256 difficulty, uint256 report_hashrates) func (_Pow *PowFilterer) FilterValidPOWSubmitted(opts *bind.FilterOpts) (*PowValidPOWSubmittedIterator, error) { logs, sub, err := _Pow.contract.FilterLogs(opts, "ValidPOWSubmitted") @@ -1532,9 +1539,9 @@ func (_Pow *PowFilterer) FilterValidPOWSubmitted(opts *bind.FilterOpts) (*PowVal return &PowValidPOWSubmittedIterator{contract: _Pow.contract, event: "ValidPOWSubmitted", logs: logs, sub: sub}, nil } -// WatchValidPOWSubmitted is a free log subscription operation binding the contract event 0x172b7d59e60446d8dfc98985344fb883c871ef150b1db4d1592bcb6769903732. +// WatchValidPOWSubmitted is a free log subscription operation binding the contract event 0xf6feb9ff838f9c6cb818374d0e0c8191e3653e218de80e7f84cce1560b758c65. // -// Solidity: event ValidPOWSubmitted(address walletAddress, string nodeId, uint256 nonce, uint256 start_timestamp, uint256 complete_timestamp, bytes32 challenge, uint256 difficulty) +// Solidity: event ValidPOWSubmitted(address walletAddress, string nodeId, uint256 nonce, uint256 start_timestamp, uint256 complete_timestamp, bytes32 challenge, uint256 difficulty, uint256 report_hashrates) func (_Pow *PowFilterer) WatchValidPOWSubmitted(opts *bind.WatchOpts, sink chan<- *PowValidPOWSubmitted) (event.Subscription, error) { logs, sub, err := _Pow.contract.WatchLogs(opts, "ValidPOWSubmitted") @@ -1569,9 +1576,9 @@ func (_Pow *PowFilterer) WatchValidPOWSubmitted(opts *bind.WatchOpts, sink chan< }), nil } -// ParseValidPOWSubmitted is a log parse operation binding the contract event 0x172b7d59e60446d8dfc98985344fb883c871ef150b1db4d1592bcb6769903732. +// ParseValidPOWSubmitted is a log parse operation binding the contract event 0xf6feb9ff838f9c6cb818374d0e0c8191e3653e218de80e7f84cce1560b758c65. // -// Solidity: event ValidPOWSubmitted(address walletAddress, string nodeId, uint256 nonce, uint256 start_timestamp, uint256 complete_timestamp, bytes32 challenge, uint256 difficulty) +// Solidity: event ValidPOWSubmitted(address walletAddress, string nodeId, uint256 nonce, uint256 start_timestamp, uint256 complete_timestamp, bytes32 challenge, uint256 difficulty, uint256 report_hashrates) func (_Pow *PowFilterer) ParseValidPOWSubmitted(log types.Log) (*PowValidPOWSubmitted, error) { event := new(PowValidPOWSubmitted) if err := _Pow.contract.UnpackLog(event, "ValidPOWSubmitted", log); err != nil {