Skip to content

Commit

Permalink
networks/eth: Move common server file to networks.
Browse files Browse the repository at this point in the history
Move primative and functions used by both eth server and client to dex
networks in order to avoid importing server code to client.
  • Loading branch information
JoeGruffins committed Nov 23, 2021
1 parent 1855a31 commit 177302e
Show file tree
Hide file tree
Showing 9 changed files with 230 additions and 217 deletions.
19 changes: 9 additions & 10 deletions client/asset/eth/eth.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
"decred.org/dcrdex/dex/keygen"
dexeth "decred.org/dcrdex/dex/networks/eth"
"decred.org/dcrdex/dex/networks/eth/swap"
srveth "decred.org/dcrdex/server/asset/eth"
"github.com/decred/dcrd/dcrutil/v4"
"github.com/decred/dcrd/hdkeychain/v3"
"github.com/ethereum/go-ethereum"
Expand Down Expand Up @@ -113,7 +112,7 @@ func (d *Driver) Open(cfg *asset.WalletConfig, logger dex.Logger, network dex.Ne

// DecodeCoinID creates a human-readable representation of a coin ID for Ethereum.
func (d *Driver) DecodeCoinID(coinID []byte) (string, error) {
id, err := srveth.DecodeCoinID(coinID)
id, err := dexeth.DecodeCoinID(coinID)
if err != nil {
return "", nil
}
Expand Down Expand Up @@ -360,7 +359,7 @@ func (eth *ExchangeWallet) balanceImpl() (*asset.Balance, error) {
if err != nil {
return nil, err
}
gweiBal, err := srveth.ToGwei(bigBal)
gweiBal, err := dexeth.ToGwei(bigBal)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -509,7 +508,7 @@ func (*ExchangeWallet) PreRedeem(req *asset.PreRedeemForm) (*asset.PreRedeem, er

// coin implements the asset.Coin interface for ETH
type coin struct {
id srveth.AmountCoinID
id dexeth.AmountCoinID
}

// ID is the ETH coins ID. It includes the address the coins came from (20 bytes)
Expand All @@ -534,12 +533,12 @@ var _ asset.Coin = (*coin)(nil)
// decodeCoinID decodes a coin id into a coin object. The coin id
// must contain an AmountCoinID.
func decodeCoinID(coinID []byte) (*coin, error) {
id, err := srveth.DecodeCoinID(coinID)
id, err := dexeth.DecodeCoinID(coinID)
if err != nil {
return nil, err
}

amountCoinID, ok := id.(*srveth.AmountCoinID)
amountCoinID, ok := id.(*dexeth.AmountCoinID)
if !ok {
return nil,
fmt.Errorf("coinID is expected to be an amount coin id")
Expand All @@ -565,7 +564,7 @@ func (eth *ExchangeWallet) FundOrder(ord *asset.Order) (asset.Coins, []dex.Bytes
var address [20]byte
copy(address[:], eth.acct.Address.Bytes())
coin := coin{
id: srveth.AmountCoinID{
id: dexeth.AmountCoinID{
Address: address,
Amount: fundsNeeded,
Nonce: nonce,
Expand Down Expand Up @@ -811,7 +810,7 @@ func (eth *ExchangeWallet) sendToAddr(addr common.Address, amt, gasPrice *big.In
// TODO: Subtract fees from the value.
func (eth *ExchangeWallet) Withdraw(addr string, value, feeSuggestion uint64) (asset.Coin, error) {
bigVal := big.NewInt(0).SetUint64(value)
gweiFactorBig := big.NewInt(srveth.GweiFactor)
gweiFactorBig := big.NewInt(dexeth.GweiFactor)
_, err := eth.sendToAddr(common.HexToAddress(addr),
bigVal.Mul(bigVal, gweiFactorBig), big.NewInt(0).SetUint64(defaultGasFee))
if err != nil {
Expand All @@ -835,7 +834,7 @@ func (*ExchangeWallet) Confirmations(ctx context.Context, id dex.Bytes) (confs u
func (eth *ExchangeWallet) SyncStatus() (bool, float32, error) {
// node.SyncProgress will return nil both before syncing has begun and
// after it has finished. In order to discern when syncing has begun,
// check that the best header came in under srveth.MaxBlockInterval.
// check that the best header came in under dexeth.MaxBlockInterval.
sp, err := eth.node.syncProgress(eth.ctx)
if err != nil {
return false, 0, err
Expand All @@ -855,7 +854,7 @@ func (eth *ExchangeWallet) SyncStatus() (bool, float32, error) {
nowInSecs := time.Now().Unix() / 1000
timeDiff := nowInSecs - int64(bh.Time)
var progress float32
if timeDiff < srveth.MaxBlockInterval {
if timeDiff < dexeth.MaxBlockInterval {
progress = 1
}
return progress == 1, progress, nil
Expand Down
2 changes: 1 addition & 1 deletion client/asset/eth/eth_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ import (
"decred.org/dcrdex/client/asset"
"decred.org/dcrdex/dex"
"decred.org/dcrdex/dex/encode"
dexeth "decred.org/dcrdex/dex/networks/eth"
"decred.org/dcrdex/dex/networks/eth/swap"
dexeth "decred.org/dcrdex/server/asset/eth"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
Expand Down
64 changes: 32 additions & 32 deletions client/asset/eth/rpcclient_harness_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ import (
"decred.org/dcrdex/client/asset"
"decred.org/dcrdex/dex"
"decred.org/dcrdex/dex/encode"
dexeth "decred.org/dcrdex/dex/networks/eth"
"decred.org/dcrdex/dex/networks/eth/swap"
"decred.org/dcrdex/internal/eth/reentryattack"
srveth "decred.org/dcrdex/server/asset/eth"
"github.com/davecgh/go-spew/spew"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts"
Expand Down Expand Up @@ -446,10 +446,10 @@ func TestInitiateGas(t *testing.T) {
var expectedGas uint64
var actualGas uint64
if i == 1 {
expectedGas = srveth.InitGas
expectedGas = dexeth.InitGas
actualGas = gas
} else {
expectedGas = srveth.AdditionalInitGas
expectedGas = dexeth.AdditionalInitGas
actualGas = gas - previousGas
}
if actualGas > expectedGas || actualGas < expectedGas/100*95 {
Expand Down Expand Up @@ -478,9 +478,9 @@ func TestInitiate(t *testing.T) {
if err != nil {
t.Fatal("unable to get swap state")
}
state := srveth.SwapState(swap.State)
if state != srveth.SSNone {
t.Fatalf("unexpected swap state: want %s got %s", srveth.SSNone, state)
state := dexeth.SwapState(swap.State)
if state != dexeth.SSNone {
t.Fatalf("unexpected swap state: want %s got %s", dexeth.SSNone, state)
}
}

Expand Down Expand Up @@ -639,13 +639,13 @@ func TestInitiate(t *testing.T) {
t.Fatalf("unexpected error for test %v: %v", test.name, err)
}

originalStates := make(map[string]srveth.SwapState)
originalStates := make(map[string]dexeth.SwapState)
for _, testSwap := range test.swaps {
swap, err := ethClient.swap(ctx, simnetAcct, testSwap.SecretHash)
if err != nil {
t.Fatalf("unexpected error for test %v: %v", test.name, err)
}
originalStates[hex.EncodeToString(testSwap.SecretHash[:])] = srveth.SwapState(swap.State)
originalStates[hex.EncodeToString(testSwap.SecretHash[:])] = dexeth.SwapState(swap.State)
}

txOpts := newTxOpts(ctx, &simnetAddr, test.txValue)
Expand Down Expand Up @@ -688,9 +688,9 @@ func TestInitiate(t *testing.T) {
if err != nil {
t.Fatalf("unexpected error for test %v: %v", test.name, err)
}
state := srveth.SwapState(swap.State)
if test.success && state != srveth.SSInitiated {
t.Fatalf("unexpected swap state for test %v: want %s got %s", test.name, srveth.SSInitiated, state)
state := dexeth.SwapState(swap.State)
if test.success && state != dexeth.SSInitiated {
t.Fatalf("unexpected swap state for test %v: want %s got %s", test.name, dexeth.SSInitiated, state)
}

originalState := originalStates[hex.EncodeToString(testSwap.SecretHash[:])]
Expand Down Expand Up @@ -761,33 +761,33 @@ func TestRedeem(t *testing.T) {
sleep time.Duration
redeemerClient *rpcclient
redeemer *accounts.Account
finalState srveth.SwapState
finalState dexeth.SwapState
addAmt, badSecret bool
}{{
name: "ok before locktime",
sleep: time.Second * 8,
redeemerClient: participantEthClient,
redeemer: participantAcct,
finalState: srveth.SSRedeemed,
finalState: dexeth.SSRedeemed,
addAmt: true,
}, {
name: "ok after locktime",
sleep: time.Second * 16,
redeemerClient: participantEthClient,
redeemer: participantAcct,
finalState: srveth.SSRedeemed,
finalState: dexeth.SSRedeemed,
addAmt: true,
}, {
name: "bad secret",
sleep: time.Second * 8,
redeemerClient: participantEthClient,
redeemer: participantAcct,
finalState: srveth.SSInitiated,
finalState: dexeth.SSInitiated,
badSecret: true,
}, {
name: "wrong redeemer",
sleep: time.Second * 8,
finalState: srveth.SSInitiated,
finalState: dexeth.SSInitiated,
redeemerClient: ethClient,
redeemer: simnetAcct,
}}
Expand All @@ -810,9 +810,9 @@ func TestRedeem(t *testing.T) {
if err != nil {
t.Fatal("unable to get swap state")
}
state := srveth.SwapState(swp.State)
if state != srveth.SSNone {
t.Fatalf("unexpected swap state for test %v: want %s got %s", test.name, srveth.SSNone, state)
state := dexeth.SwapState(swp.State)
if state != dexeth.SSNone {
t.Fatalf("unexpected swap state for test %v: want %s got %s", test.name, dexeth.SSNone, state)
}

// Create a secret that doesn't has to secretHash.
Expand Down Expand Up @@ -878,7 +878,7 @@ func TestRedeem(t *testing.T) {
if err != nil {
t.Fatalf("unexpected error for test %v: %v", test.name, err)
}
state = srveth.SwapState(swp.State)
state = dexeth.SwapState(swp.State)
if state != test.finalState {
t.Fatalf("unexpected swap state for test %v: want %s got %s", test.name, test.finalState, state)
}
Expand All @@ -893,34 +893,34 @@ func TestRefund(t *testing.T) {
sleep time.Duration
refunder *accounts.Account
refunderClient *rpcclient
finalState srveth.SwapState
finalState dexeth.SwapState
addAmt, redeem bool
}{{
name: "ok",
sleep: time.Second * 16,
refunderClient: ethClient,
refunder: simnetAcct,
addAmt: true,
finalState: srveth.SSRefunded,
finalState: dexeth.SSRefunded,
}, {
name: "before locktime",
sleep: time.Second * 8,
refunderClient: ethClient,
refunder: simnetAcct,
finalState: srveth.SSInitiated,
finalState: dexeth.SSInitiated,
}, {
name: "wrong refunder",
sleep: time.Second * 16,
refunderClient: participantEthClient,
refunder: participantAcct,
finalState: srveth.SSInitiated,
finalState: dexeth.SSInitiated,
}, {
name: "already redeemed",
sleep: time.Second * 16,
refunderClient: ethClient,
refunder: simnetAcct,
redeem: true,
finalState: srveth.SSRedeemed,
finalState: dexeth.SSRedeemed,
}}

for _, test := range tests {
Expand All @@ -941,9 +941,9 @@ func TestRefund(t *testing.T) {
if err != nil {
t.Fatal("unable to get swap state")
}
state := srveth.SwapState(swp.State)
if state != srveth.SSNone {
t.Fatalf("unexpected swap state for test %v: want %s got %s", test.name, srveth.SSNone, state)
state := dexeth.SwapState(swp.State)
if state != dexeth.SSNone {
t.Fatalf("unexpected swap state for test %v: want %s got %s", test.name, dexeth.SSNone, state)
}

inLocktime := time.Now().Add(locktime).Unix()
Expand Down Expand Up @@ -1018,7 +1018,7 @@ func TestRefund(t *testing.T) {
if err != nil {
t.Fatalf("unexpected error for test %v: %v", test.name, err)
}
state = srveth.SwapState(swp.State)
state = dexeth.SwapState(swp.State)
if state != test.finalState {
t.Fatalf("unexpected swap state for test %v: want %s got %s", test.name, test.finalState, state)
}
Expand Down Expand Up @@ -1152,9 +1152,9 @@ func TestReplayAttack(t *testing.T) {
if err != nil {
t.Fatal(err)
}
state := srveth.SwapState(swap.State)
if state != srveth.SSNone {
t.Fatalf("unexpected swap state: want %s got %s", srveth.SSNone, state)
state := dexeth.SwapState(swap.State)
if state != dexeth.SSNone {
t.Fatalf("unexpected swap state: want %s got %s", dexeth.SSNone, state)
}

// The contract should hold four more ether because initiation of one
Expand Down
File renamed without changes.
Loading

0 comments on commit 177302e

Please sign in to comment.