Skip to content

Commit 3341df8

Browse files
committed
update server tests and enable per-asset protocol reversion
1 parent 64d4109 commit 3341df8

28 files changed

Lines changed: 1578 additions & 1052 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,4 @@ client/cmd/testbinance/testbinance
4343
server/noderelay/cmd/sourcenode/sourcenode
4444
tatanka/cmd/demo/demo
4545
server/cmd/validatemarkets
46+
server/cmd/dcrdex/evm-protocol-overrides.json

client/asset/eth/cmd/getgas/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ func mainErr() error {
4848
flag.BoolVar(&useMainnet, "mainnet", false, "use mainnet")
4949
flag.BoolVar(&useTestnet, "testnet", false, "use testnet")
5050
flag.BoolVar(&useSimnet, "simnet", false, "use simnet")
51-
flag.BoolVar(&trace, "trace", false, "use simnet")
52-
flag.BoolVar(&debug, "debug", false, "use simnet")
51+
flag.BoolVar(&trace, "trace", false, "use trace logging")
52+
flag.BoolVar(&debug, "debug", false, "use debug logging")
5353
flag.IntVar(&maxSwaps, "n", 5, "max number of swaps per transaction. minimum is 2. test will run from 2 swap up to n swaps.")
5454
flag.StringVar(&chain, "chain", "eth", "symbol of the base chain")
5555
flag.StringVar(&token, "token", "", "symbol of the token. if token is not specified, will check gas for base chain")

client/asset/eth/contractor.go

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,9 @@ func (c *contractorV0) vector(ctx context.Context, locator []byte) (*dexeth.Swap
223223
vector := &dexeth.SwapVector{
224224
From: swap.Participant,
225225
To: swap.Initiator,
226-
Value: dexeth.WeiToGwei(swap.Value),
226+
Value: swap.Value,
227227
SecretHash: secretHash,
228-
LockTime: uint64(swap.LockTime.UnixMilli()),
228+
LockTime: uint64(swap.LockTime.Unix()),
229229
}
230230
return vector, nil
231231
}
@@ -245,9 +245,9 @@ func (c *contractorV0) statusAndVector(ctx context.Context, locator []byte) (*de
245245
vector := &dexeth.SwapVector{
246246
From: swap.Participant,
247247
To: swap.Initiator,
248-
Value: dexeth.WeiToGwei(swap.Value),
248+
Value: swap.Value,
249249
SecretHash: secretHash,
250-
LockTime: uint64(swap.LockTime.UnixMilli()),
250+
LockTime: uint64(swap.LockTime.Unix()),
251251
}
252252
status := &dexeth.SwapStatus{
253253
Step: swap.State,
@@ -452,7 +452,7 @@ func (c *erc20Contractor) balance(ctx context.Context) (*big.Int, error) {
452452
// allowance exposes the read-only allowance method of the erc20 token contract.
453453
func (c *erc20Contractor) allowance(ctx context.Context) (*big.Int, error) {
454454
callOpts := &bind.CallOpts{
455-
Pending: true,
455+
// Pending: true, // Seeing errors on even simnet that say "backend does not support pending state"
456456
From: c.acct,
457457
Context: ctx,
458458
}
@@ -585,8 +585,7 @@ func (c *tokenContractorV0) tokenAddress() common.Address {
585585

586586
type contractorV1 struct {
587587
contractV1
588-
abi *abi.ABI
589-
// net dex.Network
588+
abi *abi.ABI
590589
contractAddr common.Address
591590
acctAddr common.Address
592591
cb bind.ContractBackend
@@ -598,19 +597,18 @@ type contractorV1 struct {
598597
var _ contractor = (*contractorV1)(nil)
599598

600599
func newV1Contractor(net dex.Network, contractAddr, acctAddr common.Address, cb bind.ContractBackend) (contractor, error) {
601-
602600
c, err := swapv1.NewETHSwap(contractAddr, cb)
603601
if err != nil {
604602
return nil, err
605603
}
606604
return &contractorV1{
607-
contractV1: c,
608-
abi: dexeth.ABIs[1],
609-
// net: net,
605+
contractV1: c,
606+
abi: dexeth.ABIs[1],
610607
contractAddr: contractAddr,
611608
acctAddr: acctAddr,
612609
cb: cb,
613610
atomize: dexeth.WeiToGwei,
611+
evmify: dexeth.GweiToWei,
614612
}, nil
615613
}
616614

@@ -672,7 +670,7 @@ func (c *contractorV1) initiate(txOpts *bind.TransactOpts, contracts []*asset.Co
672670
v := &dexeth.SwapVector{
673671
From: c.acctAddr,
674672
To: common.HexToAddress(ac.Address),
675-
Value: ac.Value,
673+
Value: c.evmify(ac.Value),
676674
LockTime: ac.LockTime,
677675
}
678676
copy(v.SecretHash[:], ac.SecretHash)
@@ -698,7 +696,7 @@ func (c *contractorV1) redeem(txOpts *bind.TransactOpts, redeems []*asset.Redemp
698696

699697
// Not checking version from DecodeLocator because it was already
700698
// audited and incorrect version locator would err below anyway.
701-
_, locator, err := dexeth.DecodeLocator(r.Spends.Contract)
699+
_, locator, err := dexeth.DecodeContractData(r.Spends.Contract)
702700
if err != nil {
703701
return nil, fmt.Errorf("error parsing locator redeem: %w", err)
704702
}
@@ -732,7 +730,7 @@ func (c *contractorV1) estimateInitGas(ctx context.Context, n int) (uint64, erro
732730
SecretHash: secretHash,
733731
Initiator: c.acctAddr,
734732
Participant: common.BytesToAddress(encode.RandomBytes(20)),
735-
Value: 1,
733+
Value: big.NewInt(dexeth.GweiFactor),
736734
})
737735
}
738736

@@ -807,23 +805,23 @@ func (c *contractorV1) isRefundable(locator []byte) (bool, error) {
807805

808806
func (c *contractorV1) incomingValue(ctx context.Context, tx *types.Transaction) (uint64, error) {
809807
if redeems, err := dexeth.ParseRedeemDataV1(tx.Data()); err == nil {
810-
var redeemed uint64
808+
var redeemed *big.Int
811809
for _, r := range redeems {
812-
redeemed += r.Contract.Value
810+
redeemed.Add(redeemed, r.Contract.Value)
813811
}
814-
return redeemed, nil
812+
return c.atomize(redeemed), nil
815813
}
816814
refund, err := dexeth.ParseRefundDataV1(tx.Data())
817815
if err != nil {
818816
return 0, nil
819817
}
820-
return refund.Value, nil
818+
return c.atomize(refund.Value), nil
821819
}
822820

823821
func (c *contractorV1) outgoingValue(tx *types.Transaction) (swapped uint64) {
824822
if inits, err := dexeth.ParseInitiateDataV1(tx.Data()); err == nil {
825823
for _, init := range inits {
826-
swapped += init.Value
824+
swapped += c.atomize(init.Value)
827825
}
828826
}
829827
return

0 commit comments

Comments
 (0)