diff options
Diffstat (limited to 'contracts')
-rw-r--r-- | contracts/chequebook/cheque.go | 2 | ||||
-rw-r--r-- | contracts/chequebook/cheque_test.go | 10 | ||||
-rw-r--r-- | contracts/ens/ens_test.go | 2 | ||||
-rw-r--r-- | contracts/release/contract_test.go | 6 | ||||
-rw-r--r-- | contracts/release/release.go | 74 |
5 files changed, 48 insertions, 46 deletions
diff --git a/contracts/chequebook/cheque.go b/contracts/chequebook/cheque.go index 945e56e86..7e0f7eafc 100644 --- a/contracts/chequebook/cheque.go +++ b/contracts/chequebook/cheque.go @@ -26,6 +26,7 @@ package chequebook import ( "bytes" + "context" "crypto/ecdsa" "encoding/json" "fmt" @@ -43,7 +44,6 @@ import ( "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/swarm/services/swap/swap" - "golang.org/x/net/context" ) // TODO(zelig): watch peer solvency and notify of bouncing cheques diff --git a/contracts/chequebook/cheque_test.go b/contracts/chequebook/cheque_test.go index 4029fd549..d5b343024 100644 --- a/contracts/chequebook/cheque_test.go +++ b/contracts/chequebook/cheque_test.go @@ -42,11 +42,11 @@ var ( ) func newTestBackend() *backends.SimulatedBackend { - return backends.NewSimulatedBackend( - core.GenesisAccount{Address: addr0, Balance: big.NewInt(1000000000)}, - core.GenesisAccount{Address: addr1, Balance: big.NewInt(1000000000)}, - core.GenesisAccount{Address: addr2, Balance: big.NewInt(1000000000)}, - ) + return backends.NewSimulatedBackend(core.GenesisAlloc{ + addr0: {Balance: big.NewInt(1000000000)}, + addr1: {Balance: big.NewInt(1000000000)}, + addr2: {Balance: big.NewInt(1000000000)}, + }) } func deploy(prvKey *ecdsa.PrivateKey, amount *big.Int, backend *backends.SimulatedBackend) (common.Address, error) { diff --git a/contracts/ens/ens_test.go b/contracts/ens/ens_test.go index 373ce2e30..5faa9b1ad 100644 --- a/contracts/ens/ens_test.go +++ b/contracts/ens/ens_test.go @@ -34,7 +34,7 @@ var ( ) func TestENS(t *testing.T) { - contractBackend := backends.NewSimulatedBackend(core.GenesisAccount{Address: addr, Balance: big.NewInt(1000000000)}) + contractBackend := backends.NewSimulatedBackend(core.GenesisAlloc{addr: {Balance: big.NewInt(1000000000)}}) transactOpts := bind.NewKeyedTransactor(key) // Workaround for bug estimating gas in the call to Register transactOpts.GasLimit = big.NewInt(1000000) diff --git a/contracts/release/contract_test.go b/contracts/release/contract_test.go index 11a039992..348e9aabe 100644 --- a/contracts/release/contract_test.go +++ b/contracts/release/contract_test.go @@ -35,11 +35,11 @@ func setupReleaseTest(t *testing.T, prefund ...*ecdsa.PrivateKey) (*ecdsa.Privat key, _ := crypto.GenerateKey() auth := bind.NewKeyedTransactor(key) - accounts := []core.GenesisAccount{{Address: auth.From, Balance: big.NewInt(10000000000)}} + alloc := core.GenesisAlloc{auth.From: {Balance: big.NewInt(10000000000)}} for _, key := range prefund { - accounts = append(accounts, core.GenesisAccount{Address: crypto.PubkeyToAddress(key.PublicKey), Balance: big.NewInt(10000000000)}) + alloc[crypto.PubkeyToAddress(key.PublicKey)] = core.GenesisAccount{Balance: big.NewInt(10000000000)} } - sim := backends.NewSimulatedBackend(accounts...) + sim := backends.NewSimulatedBackend(alloc) // Deploy a version oracle contract, commit and return _, _, oracle, err := DeployReleaseOracle(auth, sim, []common.Address{auth.From}) diff --git a/contracts/release/release.go b/contracts/release/release.go index 613e62aa9..28a35381d 100644 --- a/contracts/release/release.go +++ b/contracts/release/release.go @@ -20,6 +20,7 @@ package release //go:generate abigen --sol ./contract.sol --pkg release --out ./contract.go import ( + "context" "fmt" "strings" "time" @@ -33,7 +34,6 @@ import ( "github.com/ethereum/go-ethereum/node" "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/rpc" - "golang.org/x/net/context" ) // Interval to check for new releases @@ -116,47 +116,49 @@ func (r *ReleaseService) checker() { for { select { - // If the time arrived, check for a new release case <-timer.C: // Rechedule the timer before continuing timer.Reset(releaseRecheckInterval) - - // Retrieve the current version, and handle missing contracts gracefully - ctx, _ := context.WithTimeout(context.Background(), time.Second*5) - opts := &bind.CallOpts{Context: ctx} - version, err := r.oracle.CurrentVersion(opts) - if err != nil { - if err == bind.ErrNoCode { - log.Debug("Release oracle not found", "contract", r.config.Oracle) - continue - } - log.Error("Failed to retrieve current release", "err", err) - continue - } - // Version was successfully retrieved, notify if newer than ours - if version.Major > r.config.Major || - (version.Major == r.config.Major && version.Minor > r.config.Minor) || - (version.Major == r.config.Major && version.Minor == r.config.Minor && version.Patch > r.config.Patch) { - - warning := fmt.Sprintf("Client v%d.%d.%d-%x seems older than the latest upstream release v%d.%d.%d-%x", - r.config.Major, r.config.Minor, r.config.Patch, r.config.Commit[:4], version.Major, version.Minor, version.Patch, version.Commit[:4]) - howtofix := fmt.Sprintf("Please check https://github.com/ethereum/go-ethereum/releases for new releases") - separator := strings.Repeat("-", len(warning)) - - log.Warn(separator) - log.Warn(warning) - log.Warn(howtofix) - log.Warn(separator) - } else { - log.Debug("Client seems up to date with upstream", - "local", fmt.Sprintf("v%d.%d.%d-%x", r.config.Major, r.config.Minor, r.config.Patch, r.config.Commit[:4]), - "upstream", fmt.Sprintf("v%d.%d.%d-%x", version.Major, version.Minor, version.Patch, version.Commit[:4])) - } - - // If termination was requested, return + r.checkVersion() case errc := <-r.quit: errc <- nil return } } } + +func (r *ReleaseService) checkVersion() { + // Retrieve the current version, and handle missing contracts gracefully + ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) + opts := &bind.CallOpts{Context: ctx} + defer cancel() + + version, err := r.oracle.CurrentVersion(opts) + if err != nil { + if err == bind.ErrNoCode { + log.Debug("Release oracle not found", "contract", r.config.Oracle) + } else { + log.Error("Failed to retrieve current release", "err", err) + } + return + } + // Version was successfully retrieved, notify if newer than ours + if version.Major > r.config.Major || + (version.Major == r.config.Major && version.Minor > r.config.Minor) || + (version.Major == r.config.Major && version.Minor == r.config.Minor && version.Patch > r.config.Patch) { + + warning := fmt.Sprintf("Client v%d.%d.%d-%x seems older than the latest upstream release v%d.%d.%d-%x", + r.config.Major, r.config.Minor, r.config.Patch, r.config.Commit[:4], version.Major, version.Minor, version.Patch, version.Commit[:4]) + howtofix := fmt.Sprintf("Please check https://github.com/ethereum/go-ethereum/releases for new releases") + separator := strings.Repeat("-", len(warning)) + + log.Warn(separator) + log.Warn(warning) + log.Warn(howtofix) + log.Warn(separator) + } else { + log.Debug("Client seems up to date with upstream", + "local", fmt.Sprintf("v%d.%d.%d-%x", r.config.Major, r.config.Minor, r.config.Patch, r.config.Commit[:4]), + "upstream", fmt.Sprintf("v%d.%d.%d-%x", version.Major, version.Minor, version.Patch, version.Commit[:4])) + } +} |