From 5d31d9f277fc6dd6a7265904b40ef29dc5cd1b45 Mon Sep 17 00:00:00 2001 From: rjl493456442 Date: Thu, 25 Apr 2019 20:08:09 +0800 Subject: [PATCH] cmd, contracts/registrar: loose restriction of registeration --- cmd/registrar/exec.go | 10 +++---- contracts/registrar/contract/registrar.go | 2 +- contracts/registrar/contract/registrar.sol | 14 +++++---- contracts/registrar/registrar_test.go | 33 +++++++++------------- 4 files changed, 28 insertions(+), 31 deletions(-) diff --git a/cmd/registrar/exec.go b/cmd/registrar/exec.go index 2703d4f017..0ec0441b84 100644 --- a/cmd/registrar/exec.go +++ b/cmd/registrar/exec.go @@ -143,9 +143,9 @@ func registerCheckpoint(ctx *cli.Context) error { } headNumber := head.Number.Uint64() if headNumber < ((checkpoint.SectionIndex+1)*params.CheckpointFrequency + params.CheckpointProcessConfirmations) { - utils.Fatalf("Checkpoint is not stable enough") + utils.Fatalf("Invalid future checkpoint") } - if headNumber >= ((checkpoint.SectionIndex + 2) * params.CheckpointFrequency) { + if checkpoint.SectionIndex < latest.Uint64() { utils.Fatalf("Checkpoint is too old") } if checkpoint.SectionIndex == latest.Uint64() && (latest.Uint64() != 0 || h.Uint64() != 0) { @@ -157,13 +157,13 @@ func registerCheckpoint(ctx *cli.Context) error { return err } key := getPrivateKey(ctx) - isTrusted := false + trusted := false for _, signer := range signers { if signer == key.Address { - isTrusted = true + trusted = true } } - if !isTrusted { + if !trusted { utils.Fatalf("Address %s is not a trusted signer", key.Address) } // Register the checkpoint diff --git a/contracts/registrar/contract/registrar.go b/contracts/registrar/contract/registrar.go index 2583ade8d9..c39d37eb70 100644 --- a/contracts/registrar/contract/registrar.go +++ b/contracts/registrar/contract/registrar.go @@ -31,7 +31,7 @@ var ( const ContractABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"GetAllAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"GetLatestCheckpoint\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes32\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_sectionIndex\",\"type\":\"uint256\"},{\"name\":\"_hash\",\"type\":\"bytes32\"},{\"name\":\"_sig\",\"type\":\"bytes\"}],\"name\":\"SetCheckpoint\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"GetPending\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"address[]\"},{\"name\":\"\",\"type\":\"bytes32[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_adminlist\",\"type\":\"address[]\"},{\"name\":\"_sectionSize\",\"type\":\"uint256\"},{\"name\":\"_processConfirms\",\"type\":\"uint256\"},{\"name\":\"_threshold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"checkpointHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"NewCheckpointEvent\",\"type\":\"event\"}]" // ContractBin is the compiled bytecode used for deploying new contracts. -const ContractBin = `608060405234801561001057600080fd5b506040516112713803806112718339810180604052608081101561003357600080fd5b81019080805164010000000081111561004b57600080fd5b8281019050602081018481111561006157600080fd5b815185602082028301116401000000008211171561007e57600080fd5b505092919060200180519060200190929190805190602001909291908051906020019092919050505060008090505b84518110156101af5760016004600087848151811015156100ca57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005858281518110151561013557fe5b9060200190602002015190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080806001019150506100ad565b508260098190555081600a8190555080600b8190555050505050611099806101d86000396000f3fe608060405234801561001057600080fd5b5060043610610069576000357c01000000000000000000000000000000000000000000000000000000009004806345848dfc1461006e5780634d6a304c146100cd5780639475a2b9146100f9578063fff5f367146101e0575b600080fd5b61007661028e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156100b957808201518184015260208101905061009e565b505050509050019250505060405180910390f35b6100d5610374565b60405180848152602001838152602001828152602001935050505060405180910390f35b6101c66004803603606081101561010f57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561014057600080fd5b82018360208201111561015257600080fd5b8035906020019184600183028401116401000000008311171561017457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061038d565b604051808215151515815260200191505060405180910390f35b6101e8610b05565b604051808481526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561023557808201518184015260208101905061021a565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561027757808201518184015260208101905061025c565b505050509050019550505050505060405180910390f35b6060806005805490506040519080825280602002602001820160405280156102c55781602001602082028038833980820191505090505b50905060008090505b60058054905081101561036c576005818154811015156102ea57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110151561032357fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806001019150506102ce565b508091505090565b6000806000600654600854600754925092509250909192565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156103e757600080fd5b600a54600954600186010201431080610407575060095460028501024310155b156104155760009050610afe565b60065484148015610437575060006006541415806104365750600060075414155b5b156104455760009050610afe565b6000831480610455575060008251145b156104635760009050610afe565b83600080015414151561047957610478610ce9565b5b60008060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838114156104d1576000915050610afe565b6000808214905084600060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561061a5760016000600101600082825401925050819055508560008001819055506000600301600086815260200190815260200160002060408051908101604052803373ffffffffffffffffffffffffffffffffffffffff168152602001868152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190610611929190610e4d565b505050506108e9565b6000806003016000848152602001908152602001600020905060008090505b600182805490500381101561079e573373ffffffffffffffffffffffffffffffffffffffff16828281548110151561066d57fe5b906000526020600020906002020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610791578160018380549050038154811015156106d057fe5b906000526020600020906002020182828154811015156106ec57fe5b90600052602060002090600202016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018201816001019080546001816001161561010002031660029004610788929190610ecd565b5090505061079e565b8080600101915050610639565b508060018280549050038154811015156107b457fe5b9060005260206000209060020201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006107fa9190610f54565b5050600181818180549050039150816108139190610f9c565b506000600301600087815260200190815260200160002060408051908101604052803373ffffffffffffffffffffffffffffffffffffffff168152602001878152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010190805190602001906108e3929190610e4d565b50505050505b600b546000600301600087815260200190815260200160002080549050101561091757600192505050610afe565b846008819055504360078190555085600681905550606060008090505b600b54811015610a485781600060030160008981526020019081526020016000208281548110151561096257fe5b90600052602060002090600202016001016040516020018083805190602001908083835b6020831015156109ab5780518252602082019150602081019050602083039250610986565b6001836020036101000a03801982511681845116808217855250505050505090500182805460018160011615610100020316600290048015610a245780601f10610a02576101008083540402835291820191610a24565b820191906000526020600020905b815481529060010190602001808311610a10575b50509250505060405160208183030381529060405291508080600101915050610934565b50867ff7aa4ddabff125da62b8692942a8dee5c673822157f230e5520a5b4e92d6929f87836040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ab3578082015181840152602081019050610a98565b50505050905090810190601f168015610ae05780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2610af6610ce9565b600193505050505b9392505050565b600060608060008090506060600060010154604051908082528060200260200182016040528015610b455781602001602082028038833980820191505090505b5090506060600060010154604051908082528060200260200182016040528015610b7e5781602001602082028038833980820191505090505b50905060008090505b600580549050811015610cd3576000806002016000600584815481101515610bab57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141515610cc557600582815481101515610c2c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168486815181101515610c6557fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808386815181101515610cb057fe5b90602001906020020181815250506001850194505b508080600101915050610b87565b5060008001548282955095509550505050909192565b60008090505b600580549050811015610e35576000806002016000600584815481101515610d1357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141515610e2757600060030160008281526020019081526020016000206000610da79190610fce565b60006002016000600584815481101515610dbd57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090555b508080600101915050610cef565b50600080600082016000905560018201600090555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e8e57805160ff1916838001178555610ebc565b82800160010185558215610ebc579182015b82811115610ebb578251825591602001919060010190610ea0565b5b509050610ec99190610ff2565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610f065780548555610f43565b82800160010185558215610f4357600052602060002091601f016020900482015b82811115610f42578254825591600101919060010190610f27565b5b509050610f509190610ff2565b5090565b50805460018160011615610100020316600290046000825580601f10610f7a5750610f99565b601f016020900490600052602060002090810190610f989190610ff2565b5b50565b815481835581811115610fc957600202816002028360005260206000209182019101610fc89190611017565b5b505050565b5080546000825560020290600052602060002090810190610fef9190611017565b50565b61101491905b80821115611010576000816000905550600101610ff8565b5090565b90565b61106a91905b8082111561106657600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600061105d9190610f54565b5060020161101d565b5090565b9056fea165627a7a723058203bfdb848520ad4b19738a6964aedf61ada0b07176b1503a8fe1cd3aaa704dd370029` +const ContractBin = `608060405234801561001057600080fd5b506040516112703803806112708339810180604052608081101561003357600080fd5b81019080805164010000000081111561004b57600080fd5b8281019050602081018481111561006157600080fd5b815185602082028301116401000000008211171561007e57600080fd5b505092919060200180519060200190929190805190602001909291908051906020019092919050505060008090505b84518110156101af5760016004600087848151811015156100ca57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005858281518110151561013557fe5b9060200190602002015190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080806001019150506100ad565b508260098190555081600a8190555080600b8190555050505050611098806101d86000396000f3fe608060405234801561001057600080fd5b5060043610610069576000357c01000000000000000000000000000000000000000000000000000000009004806345848dfc1461006e5780634d6a304c146100cd5780639475a2b9146100f9578063fff5f367146101e0575b600080fd5b61007661028e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156100b957808201518184015260208101905061009e565b505050509050019250505060405180910390f35b6100d5610374565b60405180848152602001838152602001828152602001935050505060405180910390f35b6101c66004803603606081101561010f57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561014057600080fd5b82018360208201111561015257600080fd5b8035906020019184600183028401116401000000008311171561017457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061038d565b604051808215151515815260200191505060405180910390f35b6101e8610b04565b604051808481526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561023557808201518184015260208101905061021a565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561027757808201518184015260208101905061025c565b505050509050019550505050505060405180910390f35b6060806005805490506040519080825280602002602001820160405280156102c55781602001602082028038833980820191505090505b50905060008090505b60058054905081101561036c576005818154811015156102ea57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110151561032357fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806001019150506102ce565b508091505090565b6000806000600654600854600754925092509250909192565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156103e757600080fd5b600a546009546001860102014310156104035760009050610afd565b6006548410156104165760009050610afd565b6006548414801561043657506000841415806104355750600060075414155b5b156104445760009050610afd565b6000831480610454575060008251145b156104625760009050610afd565b83600080015414151561047857610477610ce8565b5b60008060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838114156104d0576000915050610afd565b6000808214905084600060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156106195760016000600101600082825401925050819055508560008001819055506000600301600086815260200190815260200160002060408051908101604052803373ffffffffffffffffffffffffffffffffffffffff168152602001868152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190610610929190610e4c565b505050506108e8565b6000806003016000848152602001908152602001600020905060008090505b600182805490500381101561079d573373ffffffffffffffffffffffffffffffffffffffff16828281548110151561066c57fe5b906000526020600020906002020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610790578160018380549050038154811015156106cf57fe5b906000526020600020906002020182828154811015156106eb57fe5b90600052602060002090600202016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018201816001019080546001816001161561010002031660029004610787929190610ecc565b5090505061079d565b8080600101915050610638565b508060018280549050038154811015156107b357fe5b9060005260206000209060020201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006107f99190610f53565b5050600181818180549050039150816108129190610f9b565b506000600301600087815260200190815260200160002060408051908101604052803373ffffffffffffffffffffffffffffffffffffffff168152602001878152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010190805190602001906108e2929190610e4c565b50505050505b600b546000600301600087815260200190815260200160002080549050101561091657600192505050610afd565b846008819055504360078190555085600681905550606060008090505b600b54811015610a475781600060030160008981526020019081526020016000208281548110151561096157fe5b90600052602060002090600202016001016040516020018083805190602001908083835b6020831015156109aa5780518252602082019150602081019050602083039250610985565b6001836020036101000a03801982511681845116808217855250505050505090500182805460018160011615610100020316600290048015610a235780601f10610a01576101008083540402835291820191610a23565b820191906000526020600020905b815481529060010190602001808311610a0f575b50509250505060405160208183030381529060405291508080600101915050610933565b50867ff7aa4ddabff125da62b8692942a8dee5c673822157f230e5520a5b4e92d6929f87836040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ab2578082015181840152602081019050610a97565b50505050905090810190601f168015610adf5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2610af5610ce8565b600193505050505b9392505050565b600060608060008090506060600060010154604051908082528060200260200182016040528015610b445781602001602082028038833980820191505090505b5090506060600060010154604051908082528060200260200182016040528015610b7d5781602001602082028038833980820191505090505b50905060008090505b600580549050811015610cd2576000806002016000600584815481101515610baa57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141515610cc457600582815481101515610c2b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168486815181101515610c6457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808386815181101515610caf57fe5b90602001906020020181815250506001850194505b508080600101915050610b86565b5060008001548282955095509550505050909192565b60008090505b600580549050811015610e34576000806002016000600584815481101515610d1257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141515610e2657600060030160008281526020019081526020016000206000610da69190610fcd565b60006002016000600584815481101515610dbc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090555b508080600101915050610cee565b50600080600082016000905560018201600090555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e8d57805160ff1916838001178555610ebb565b82800160010185558215610ebb579182015b82811115610eba578251825591602001919060010190610e9f565b5b509050610ec89190610ff1565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610f055780548555610f42565b82800160010185558215610f4257600052602060002091601f016020900482015b82811115610f41578254825591600101919060010190610f26565b5b509050610f4f9190610ff1565b5090565b50805460018160011615610100020316600290046000825580601f10610f795750610f98565b601f016020900490600052602060002090810190610f979190610ff1565b5b50565b815481835581811115610fc857600202816002028360005260206000209182019101610fc79190611016565b5b505050565b5080546000825560020290600052602060002090810190610fee9190611016565b50565b61101391905b8082111561100f576000816000905550600101610ff7565b5090565b90565b61106991905b8082111561106557600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600061105c9190610f53565b5060020161101c565b5090565b9056fea165627a7a723058208826dffaf11789f2fcaf8f64020329e9b49e58917077307c1b668880fd557d500029` // DeployContract deploys a new Ethereum contract, binding an instance of Contract to it. func DeployContract(auth *bind.TransactOpts, backend bind.ContractBackend, _adminlist []common.Address, _sectionSize *big.Int, _processConfirms *big.Int, _threshold *big.Int) (common.Address, *types.Transaction, *Contract, error) { diff --git a/contracts/registrar/contract/registrar.sol b/contracts/registrar/contract/registrar.sol index 8c001e4572..dd2ad57bc0 100644 --- a/contracts/registrar/contract/registrar.sol +++ b/contracts/registrar/contract/registrar.sol @@ -95,15 +95,19 @@ contract Registrar { public returns(bool) { - // Checkpoint register/modification time window: [(secIndex+1)*size + confirms, (secIndex+2)*size) - if (block.number < (_sectionIndex+1)*sectionSize+processConfirms || block.number >= (_sectionIndex+2)*sectionSize) { + // Filter out "future" checkpoint. + if (block.number < (_sectionIndex+1)*sectionSize+processConfirms) { return false; } - // Filter out stale announcement - if (_sectionIndex == sectionIndex && (sectionIndex != 0 || height != 0)) { + // Filter out "old" announcement + if (_sectionIndex < sectionIndex) { return false; } - // Filter out invalid announcement + // Filter out "stale" announcement + if (_sectionIndex == sectionIndex && (_sectionIndex != 0 || height != 0)) { + return false; + } + // Filter out "invalid" announcement if (_hash == "" || _sig.length == 0) { return false; } diff --git a/contracts/registrar/registrar_test.go b/contracts/registrar/registrar_test.go index 16ff61b1f3..809aadecb7 100644 --- a/contracts/registrar/registrar_test.go +++ b/contracts/registrar/registrar_test.go @@ -31,7 +31,7 @@ import ( "github.com/ethereum/go-ethereum/contracts/registrar/contract" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/light" + "github.com/ethereum/go-ethereum/params" ) const signatureLen = 65 @@ -39,19 +39,19 @@ const signatureLen = 65 var ( emptyHash = [32]byte{} - checkpoint0 = light.TrustedCheckpoint{ + checkpoint0 = params.TrustedCheckpoint{ SectionIndex: 0, SectionHead: common.HexToHash("0x7fa3c32f996c2bfb41a1a65b3d8ea3e0a33a1674cde43678ad6f4235e764d17d"), CHTRoot: common.HexToHash("0x98fc5d3de23a0fecebad236f6655533c157d26a1aedcd0852a514dc1169e6350"), BloomRoot: common.HexToHash("0x99b5adb52b337fe25e74c1c6d3835b896bd638611b3aebddb2317cce27a3f9fa"), } - checkpoint1 = light.TrustedCheckpoint{ + checkpoint1 = params.TrustedCheckpoint{ SectionIndex: 1, SectionHead: common.HexToHash("0x2d4dee68102125e59b0cc61b176bd89f0d12b3b91cfaf52ef8c2c82fb920c2d2"), CHTRoot: common.HexToHash("0x7d428008ece3b4c4ef5439f071930aad0bb75108d381308df73beadcd01ded95"), BloomRoot: common.HexToHash("0x652571f7736de17e7bbb427ac881474da684c6988a88bf51b10cca9a2ee148f4"), } - checkpoint2 = light.TrustedCheckpoint{ + checkpoint2 = params.TrustedCheckpoint{ SectionIndex: 2, SectionHead: common.HexToHash("0x61c0de578c0115b1dff8ef39aa600588c7c6ecb8a2f102003d7cf4c4146e9291"), CHTRoot: common.HexToHash("0x407a08a407a2bc3838b74ca3eb206903c9c8a186ccf5ef14af07794efff1970b"), @@ -178,14 +178,7 @@ func TestCheckpointRegister(t *testing.T) { validateOperation(t, c, contractBackend, func() { c.SetCheckpoint(transactOpts, big.NewInt(0), checkpoint0.Hash(), signCheckpoint(accounts[0].key, checkpoint0.Hash())) }, func(events <-chan *contract.ContractNewCheckpointEvent) error { - hash, _, err := c.GetCheckpoint(nil, big.NewInt(0)) - if err != nil { - return errors.New("get checkpoint failed") - } - if hash != emptyHash { - return errors.New("unstable checkpoint should be rejected") - } - return nil + return assert(c, 0, nil, nil) }, "register unstable checkpoint") contractBackend.InsertEmptyBlocks(int(sectionSize.Uint64() + processConfirms.Uint64())) @@ -196,14 +189,7 @@ func TestCheckpointRegister(t *testing.T) { unauthorized := bind.NewKeyedTransactor(u) c.SetCheckpoint(unauthorized, big.NewInt(0), checkpoint0.Hash(), signCheckpoint(u, checkpoint0.Hash())) }, func(events <-chan *contract.ContractNewCheckpointEvent) error { - hash, _, err := c.GetCheckpoint(nil, big.NewInt(0)) - if err != nil { - return errors.New("get checkpoint failed") - } - if hash != emptyHash { - return errors.New("checkpoint from unauthorized user should be rejected") - } - return nil + return assert(c, 0, nil, nil) }, "register by unauthorized user") // Submit a new checkpoint announcement @@ -297,6 +283,13 @@ func TestCheckpointRegister(t *testing.T) { } return assert(c, 0, nil, nil) }, "uncontinuous checkpoint announcement") + + // submit a stale checkpoint announcement + validateOperation(t, c, contractBackend, func() { + c.SetCheckpoint(transactOpts, big.NewInt(2), checkpoint2.Hash(), signCheckpoint(accounts[0].key, checkpoint2.Hash())) + }, func(events <-chan *contract.ContractNewCheckpointEvent) error { + return assert(c, 0, nil, nil) + }, "submit stale checkpoint announcement") } func assert(c *contract.Contract, index uint64, signers []common.Address, hashes []common.Hash) error {