Skip to content

Commit cbbc8f4

Browse files
authored
Merge pull request #70 from keep-network/config-addresses-refactor
Refactor `ContractAddress` method in config structs ContractAddress method in both Ethereum's and Celo's config structs should return a plain common.Address type instead of a pointer. This should eliminate the need for nil-checks in the client code.
2 parents 2863364 + baf172c commit cbbc8f4

6 files changed

Lines changed: 23 additions & 19 deletions

File tree

go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ replace github.com/urfave/cli => github.com/keep-network/cli v1.20.0
77
require (
88
github.com/allegro/bigcache v1.2.1 // indirect
99
github.com/aristanetworks/goarista v0.0.0-20190924011532-60b7b74727fd // indirect
10-
github.com/btcsuite/btcd v0.20.1-beta // indirect
1110
github.com/celo-org/celo-blockchain v0.0.0-20210222234634-f8c8f6744526
1211
github.com/cespare/cp v1.1.1 // indirect
1312
github.com/deckarep/golang-set v1.7.1 // indirect

go.sum

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMx
2424
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
2525
github.com/VictoriaMetrics/fastcache v1.5.3 h1:2odJnXLbFZcoV9KYtQ+7TH1UOq3dn3AssMgieaezkR4=
2626
github.com/VictoriaMetrics/fastcache v1.5.3/go.mod h1:+jv9Ckb+za/P1ZRg/sulP5Ni1v49daAVERr0H3CuscE=
27+
github.com/VictoriaMetrics/fastcache v1.5.7 h1:4y6y0G8PRzszQUYIQHHssv/jgPHAb5qQuuDNdCbyAgw=
2728
github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6RoTu1dAWCbrk+6WsEM8=
2829
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
2930
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
@@ -52,9 +53,8 @@ github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVa
5253
github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
5354
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY=
5455
github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=
56+
github.com/buraksezer/consistent v0.0.0-20191006190839-693edf70fd72 h1:fUmDBbSvv1uOzo/t8WaxZMVb7BxJ8JECo5lGoR9c5bA=
5557
github.com/buraksezer/consistent v0.0.0-20191006190839-693edf70fd72/go.mod h1:OEE5igu/CDjGegM1Jn6ZMo7R6LlV/JChAkjfQQIRLpg=
56-
github.com/celo-org/celo-blockchain v0.0.0-20210211195335-cbc4f555cf87 h1:JQMKfHxfbjc8EgyUgvQ1nNkZcipFp/YgK0WVYHFQFTo=
57-
github.com/celo-org/celo-blockchain v0.0.0-20210211195335-cbc4f555cf87/go.mod h1:HIiEH2YuxBp8+kr/+Ltmk4h6Ml3HdmgNYvJvFs6FeyQ=
5858
github.com/celo-org/celo-blockchain v0.0.0-20210222234634-f8c8f6744526 h1:rdY1F8vUybjjsv+V58eaSYsYPTNO+AXK9o7l+BQuhhU=
5959
github.com/celo-org/celo-blockchain v0.0.0-20210222234634-f8c8f6744526/go.mod h1:4tbv23s4i0AU7+KN5UP2RaB5c9OMXedtx9F7wJ+s0Jo=
6060
github.com/celo-org/celo-bls-go v0.2.4/go.mod h1:eXUCLXu5F1yfd3M+3VaUk5ZUXaA0sLK2rWdLC1Cfaqo=
@@ -187,6 +187,7 @@ github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HN
187187
github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
188188
github.com/mattn/go-isatty v0.0.5 h1:tHXDdz1cpzGaovsTB+TVB8q90WEokoVmfMqoVcrLUgw=
189189
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
190+
github.com/mattn/go-isatty v0.0.11 h1:FxPOTFNqGkuDUGi3H/qkUbQO4ZiBa2brKq5r0l8TGeM=
190191
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
191192
github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
192193
github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y=
@@ -295,6 +296,7 @@ golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaE
295296
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
296297
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
297298
golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
299+
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
298300
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
299301
golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4=
300302
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
@@ -346,6 +348,7 @@ golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
346348
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
347349
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
348350
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
351+
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
349352
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
350353
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ=
351354
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -357,6 +360,7 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn
357360
golang.org/x/tools v0.0.0-20190912185636-87d9f09c5d89 h1:WiVZGyzQN7gPNLRkkpsNX3jC0Jx5j9GxadCZW/8eXw0=
358361
golang.org/x/tools v0.0.0-20190912185636-87d9f09c5d89/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
359362
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
363+
golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69 h1:yBHHx+XZqXJBm6Exke3N7V9gnlsyXxoCPEb1yVenjfk=
360364
golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
361365
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
362366
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -379,6 +383,7 @@ gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLv
379383
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU=
380384
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c=
381385
gopkg.in/olebedev/go-duktape.v3 v3.0.0-20190213234257-ec84240a7772/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns=
386+
gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200316214253-d7b0ff38cac9 h1:ITeyKbRetrVzqR3U1eY+ywgp7IBspGd1U/bkwd1gWu4=
382387
gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200316214253-d7b0ff38cac9/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns=
383388
gopkg.in/redis.v4 v4.2.4/go.mod h1:8KREHdypkCEojGKQcjMqAODMICIVwZAONWq8RowTITA=
384389
gopkg.in/sourcemap.v1 v1.0.5/go.mod h1:2RlvNNSMglmRrcvhfuzp4hQHwOtjxlbjX7UPY/GXb78=

pkg/chain/celo/config.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,17 @@ type Config struct {
2525

2626
// ContractAddress finds a given contract's address configuration and returns it
2727
// as Celo address.
28-
func (c *Config) ContractAddress(contractName string) (*common.Address, error) {
28+
func (c *Config) ContractAddress(contractName string) (common.Address, error) {
2929
addressString, exists := c.ContractAddresses[contractName]
3030
if !exists {
31-
return nil, fmt.Errorf(
31+
return common.Address{}, fmt.Errorf(
3232
"no address information for [%v] in configuration",
3333
contractName,
3434
)
3535
}
3636

3737
if !common.IsHexAddress(addressString) {
38-
return nil, fmt.Errorf(
38+
return common.Address{}, fmt.Errorf(
3939
"configured address [%v] for contract [%v] "+
4040
"is not valid hex address",
4141
addressString,
@@ -44,5 +44,5 @@ func (c *Config) ContractAddress(contractName string) (*common.Address, error) {
4444
}
4545

4646
address := common.HexToAddress(addressString)
47-
return &address, nil
47+
return address, nil
4848
}

pkg/chain/celo/config_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@ func TestContractAddress(t *testing.T) {
2828

2929
var tests = map[string]struct {
3030
contractName string
31-
expectedAddress *common.Address
31+
expectedAddress common.Address
3232
expectedError error
3333
}{
3434
"contract name matching valid configuration": {
3535
contractName: contractName1,
36-
expectedAddress: &validContractAddress,
36+
expectedAddress: validContractAddress,
3737
},
3838
"invalid contract hex address": {
3939
contractName: contractName2,
40-
expectedAddress: nil,
40+
expectedAddress: common.Address{},
4141
expectedError: fmt.Errorf(
4242
"configured address [%v] for contract [%v] "+
4343
"is not valid hex address",
@@ -47,7 +47,7 @@ func TestContractAddress(t *testing.T) {
4747
},
4848
"missing contract configuration": {
4949
contractName: "Peekaboo",
50-
expectedAddress: nil,
50+
expectedAddress: common.Address{},
5151
expectedError: fmt.Errorf("no address information " +
5252
"for [Peekaboo] in configuration"),
5353
},

pkg/chain/ethereum/config.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,17 @@ type Config struct {
2525

2626
// ContractAddress finds a given contract's address configuration and returns it
2727
// as Ethereum address.
28-
func (c *Config) ContractAddress(contractName string) (*common.Address, error) {
28+
func (c *Config) ContractAddress(contractName string) (common.Address, error) {
2929
addressString, exists := c.ContractAddresses[contractName]
3030
if !exists {
31-
return nil, fmt.Errorf(
31+
return common.Address{}, fmt.Errorf(
3232
"no address information for [%v] in configuration",
3333
contractName,
3434
)
3535
}
3636

3737
if !common.IsHexAddress(addressString) {
38-
return nil, fmt.Errorf(
38+
return common.Address{}, fmt.Errorf(
3939
"configured address [%v] for contract [%v] "+
4040
"is not valid hex address",
4141
addressString,
@@ -44,5 +44,5 @@ func (c *Config) ContractAddress(contractName string) (*common.Address, error) {
4444
}
4545

4646
address := common.HexToAddress(addressString)
47-
return &address, nil
47+
return address, nil
4848
}

pkg/chain/ethereum/config_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@ func TestContractAddress(t *testing.T) {
2828

2929
var tests = map[string]struct {
3030
contractName string
31-
expectedAddress *common.Address
31+
expectedAddress common.Address
3232
expectedError error
3333
}{
3434
"contract name matching valid configuration": {
3535
contractName: contractName1,
36-
expectedAddress: &validContractAddress,
36+
expectedAddress: validContractAddress,
3737
},
3838
"invalid contract hex address": {
3939
contractName: contractName2,
40-
expectedAddress: nil,
40+
expectedAddress: common.Address{},
4141
expectedError: fmt.Errorf(
4242
"configured address [%v] for contract [%v] "+
4343
"is not valid hex address",
@@ -47,7 +47,7 @@ func TestContractAddress(t *testing.T) {
4747
},
4848
"missing contract configuration": {
4949
contractName: "Peekaboo",
50-
expectedAddress: nil,
50+
expectedAddress: common.Address{},
5151
expectedError: fmt.Errorf("no address information " +
5252
"for [Peekaboo] in configuration"),
5353
},

0 commit comments

Comments
 (0)