diff --git a/client/asset/eth/multirpc.go b/client/asset/eth/multirpc.go index 4efcf1d5c8..1a1860e26c 100644 --- a/client/asset/eth/multirpc.go +++ b/client/asset/eth/multirpc.go @@ -418,7 +418,7 @@ func connectProviders(ctx context.Context, endpoints []string, log dex.Logger, c // path discrimination, so I won't even try to validate the protocol. if ec == nil { var err error - rpcClient, err = rpc.Dial(endpoint) + rpcClient, err = rpc.DialContext(ctx, endpoint) if err != nil { log.Errorf("error creating http client for %q: %v", endpoint, err) continue diff --git a/dex/networks/erc20/contracts/TestToken.sol b/dex/networks/erc20/contracts/TestToken.sol index 02c84c017b..2b212cddc8 100644 --- a/dex/networks/erc20/contracts/TestToken.sol +++ b/dex/networks/erc20/contracts/TestToken.sol @@ -31,6 +31,7 @@ contract TestToken { _balances[0x4F8eF3892B65ED7fc356fF473a2eF2aE5EC27A06] = 11000000000000000000000; _balances[0xdd93b447f7eBCA361805eBe056259853F3912E04] = 11000000000000000000000; _balances[0x1D4F2ee206474B136Af4868B887C7b166693c194] = 11000000000000000000000; + _balances[0xd12aB7cf72CCf1f3882eC99DDc53CD415635C3bE] = 11000000000000000000000; } /** diff --git a/dex/networks/eth/common.go b/dex/networks/eth/common.go index b3dfeac35f..f116bb3f59 100644 --- a/dex/networks/eth/common.go +++ b/dex/networks/eth/common.go @@ -55,7 +55,7 @@ func CheckAPIModules(c *rpc.Client, endpoint string, log dex.Logger, reqModules for v := range reqModulesMap { reqs = append(reqs, v) } - return fmt.Errorf("needed apis not present: %v", strings.Join(reqs, " ")) + return fmt.Errorf("needed apis not present: %v.", strings.Join(reqs, " ")) } sort.Strings(haveModules) log.Debugf("API endpoints supported by %s: %s", endpoint, strings.Join(haveModules, " ")) diff --git a/dex/testing/dcrdex/harness.sh b/dex/testing/dcrdex/harness.sh index ff95ae0591..4e24c04cf6 100755 --- a/dex/testing/dcrdex/harness.sh +++ b/dex/testing/dcrdex/harness.sh @@ -224,7 +224,7 @@ if [ $ETH_ON -eq 0 ]; then "network": "simnet", "maxFeeRate": 200, "swapConf": 2, - "configPath": "${TEST_ROOT}/eth/alpha/node/geth.ipc" + "configPath": "ws://localhost:38557" }, "DEXTT_simnet": { "bip44symbol": "dextt.eth", diff --git a/dex/testing/eth/create-node.sh b/dex/testing/eth/create-node.sh index 34bf35247f..d4212c570c 100755 --- a/dex/testing/eth/create-node.sh +++ b/dex/testing/eth/create-node.sh @@ -141,7 +141,7 @@ if [ "${SYNC_MODE}" = "snap" ]; then else # Start the eth node listening restricted to localhost and our custom # configuration file. - tmux send-keys -t "$TMUX_WIN_ID" "${NODES_ROOT}/harness-ctl/${NAME} --nodiscover " \ + tmux send-keys -t "$TMUX_WIN_ID" "${NODES_ROOT}/harness-ctl/${NAME} --nodiscover --allow-insecure-unlock " \ "--config ${NODE_DIR}/eth.conf --verbosity 5 ${HTTP_OPT} 2>&1 | tee " \ "${NODE_DIR}/${NAME}.log" C-m fi diff --git a/dex/testing/eth/harness.sh b/dex/testing/eth/harness.sh index b315bd8f30..83b34e1e37 100755 --- a/dex/testing/eth/harness.sh +++ b/dex/testing/eth/harness.sh @@ -52,7 +52,7 @@ TESTING_ADDRESS="b6de8bb5ed28e6be6d671975cad20c03931be981" SIMNET_TOKEN_ADDRESS="946dfaB1AD7caCFeF77dE70ea68819a30acD4577" ETH_SWAP_V0="608060405234801561001057600080fd5b50610cb6806100206000396000f3fe6080604052600436106100705760003560e01c8063bfd2fd971161004e578063bfd2fd97146100e0578063d0f761c014610110578063eb84e7f214610130578063f4fd17f9146101ac57600080fd5b80637249fbb61461007557806376467cbd14610097578063a8793f94146100cd575b600080fd5b34801561008157600080fd5b50610095610090366004610980565b6101cc565b005b3480156100a357600080fd5b506100b76100b2366004610980565b610304565b6040516100c491906109d1565b60405180910390f35b6100956100db366004610a36565b6103df565b3480156100ec57600080fd5b506101006100fb366004610aab565b6105d6565b60405190151581526020016100c4565b34801561011c57600080fd5b5061010061012b366004610980565b6106ad565b34801561013c57600080fd5b5061019961014b366004610980565b60006020819052908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b0391821691811690600160a01b900460ff1687565b6040516100c49796959493929190610acd565b3480156101b857600080fd5b506100956101c7366004610b19565b6106f2565b3233146101f45760405162461bcd60e51b81526004016101eb90610b7c565b60405180910390fd5b6101fd816106ad565b61023a5760405162461bcd60e51b815260206004820152600e60248201526d6e6f7420726566756e6461626c6560901b60448201526064016101eb565b60008181526020819052604080822060058101805460ff60a01b1916600360a01b1790556004810154600182015492519193926001600160a01b03909116918381818185875af1925050503d80600081146102b1576040519150601f19603f3d011682016040523d82523d6000602084013e6102b6565b606091505b50909150506001811515146102ff5760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b60448201526064016101eb565b505050565b6103416040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529060c082015290565b60008281526020818152604091829020825160e08101845281548152600182015492810192909252600281015492820192909252600380830154606083015260048301546001600160a01b039081166080840152600584015490811660a084015291929160c0840191600160a01b90910460ff16908111156103c5576103c5610999565b60038111156103d6576103d6610999565b90525092915050565b3233146103fe5760405162461bcd60e51b81526004016101eb90610b7c565b6000805b8281101561059c573684848381811061041d5761041d610ba6565b90506080020190506000806000836020013581526020019081526020016000209050600082606001351161047b5760405162461bcd60e51b81526020600482015260056024820152640c081d985b60da1b60448201526064016101eb565b81356104bd5760405162461bcd60e51b815260206004820152601160248201527003020726566756e6454696d657374616d7607c1b60448201526064016101eb565b60006005820154600160a01b900460ff1660038111156104df576104df610999565b146105175760405162461bcd60e51b8152602060048201526008602482015267064757020737761760c41b60448201526064016101eb565b436002820155813560038201556004810180546001600160a01b031916331790556105486060830160408401610bbc565b6005820180546060850135600185018190556001600160a01b03939093166001600160a81b031990911617600160a01b1790556105859085610bfb565b93505050808061059490610c13565b915050610402565b503481146102ff5760405162461bcd60e51b8152602060048201526007602482015266189859081d985b60ca1b60448201526064016101eb565b60006001600084815260208190526040902060050154600160a01b900460ff16600381111561060757610607610999565b14801561062d57506000838152602081905260409020600501546001600160a01b031633145b80156106a657508260028360405160200161064a91815260200190565b60408051601f198184030181529082905261066491610c2c565b602060405180830381855afa158015610681573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906106a49190610c67565b145b9392505050565b600081815260208190526040812060016005820154600160a01b900460ff1660038111156106dd576106dd610999565b1480156106a657506003015442101592915050565b3233146107115760405162461bcd60e51b81526004016101eb90610b7c565b6000805b828110156108e9573684848381811061073057610730610ba6565b6020604091820293909301838101356000908152938490529220919250600190506005820154600160a01b900460ff16600381111561077157610771610999565b146107aa5760405162461bcd60e51b815260206004820152600960248201526862616420737461746560b81b60448201526064016101eb565b60058101546001600160a01b031633146107f85760405162461bcd60e51b815260206004820152600f60248201526e189859081c185c9d1a58da5c185b9d608a1b60448201526064016101eb565b81602001356002836000013560405160200161081691815260200190565b60408051601f198184030181529082905261083091610c2c565b602060405180830381855afa15801561084d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906108709190610c67565b146108aa5760405162461bcd60e51b815260206004820152600a602482015269189859081cd958dc995d60b21b60448201526064016101eb565b60058101805460ff60a01b1916600160a11b1790558135815560018101546108d29085610bfb565b9350505080806108e190610c13565b915050610715565b50604051600090339083908381818185875af1925050503d806000811461092c576040519150601f19603f3d011682016040523d82523d6000602084013e610931565b606091505b509091505060018115151461097a5760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b60448201526064016101eb565b50505050565b60006020828403121561099257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b600481106109cd57634e487b7160e01b600052602160045260246000fd5b9052565b600060e08201905082518252602083015160208301526040830151604083015260608301516060830152608083015160018060a01b0380821660808501528060a08601511660a0850152505060c0830151610a2f60c08401826109af565b5092915050565b60008060208385031215610a4957600080fd5b823567ffffffffffffffff80821115610a6157600080fd5b818501915085601f830112610a7557600080fd5b813581811115610a8457600080fd5b8660208260071b8501011115610a9957600080fd5b60209290920196919550909350505050565b60008060408385031215610abe57600080fd5b50508035926020909101359150565b8781526020810187905260408101869052606081018590526001600160a01b038481166080830152831660a082015260e08101610b0d60c08301846109af565b98975050505050505050565b60008060208385031215610b2c57600080fd5b823567ffffffffffffffff80821115610b4457600080fd5b818501915085601f830112610b5857600080fd5b813581811115610b6757600080fd5b8660208260061b8501011115610a9957600080fd5b60208082526010908201526f39b2b73232b910109e9037b934b3b4b760811b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610bce57600080fd5b81356001600160a01b03811681146106a657600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115610c0e57610c0e610be5565b500190565b600060018201610c2557610c25610be5565b5060010190565b6000825160005b81811015610c4d5760208186018101518583015201610c33565b81811115610c5c576000828501525b509190910192915050565b600060208284031215610c7957600080fd5b505191905056fea26469706673582212209c8d8d137b7639af24fe8215dd5976b16323176cb4b9be076c90eeb32eaf744664736f6c634300080f0033" ERC20_SWAP_V0="60a060405234801561001057600080fd5b50604051610fa7380380610fa783398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610f0861009f6000396000818160d0015281816102b9015281816106890152610adb0152610f086000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063bfd2fd971161005b578063bfd2fd971461011d578063d0f761c014610140578063eb84e7f214610153578063f4fd17f9146101c257600080fd5b80637249fbb61461008d57806376467cbd146100a25780638c8e8fee146100cb578063a8793f941461010a575b600080fd5b6100a061009b366004610bb0565b6101d5565b005b6100b56100b0366004610bb0565b610394565b6040516100c29190610c01565b60405180910390f35b6100f27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c2565b6100a0610118366004610c66565b61046f565b61013061012b366004610cdb565b61076a565b60405190151581526020016100c2565b61013061014e366004610bb0565b610834565b6101af610161366004610bb0565b60006020819052908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b0391821691811690600160a01b900460ff1687565b6040516100c29796959493929190610cfd565b6100a06101d0366004610d49565b610894565b3233146101fd5760405162461bcd60e51b81526004016101f490610dac565b60405180910390fd5b61020681610834565b6102435760405162461bcd60e51b815260206004820152600e60248201526d6e6f7420726566756e6461626c6560901b60448201526064016101f4565b60008181526020818152604080832060058101805460ff60a01b1916600360a01b17905560018101548251336024820152604480820192909252835180820390920182526064018352928301805163a9059cbb60e01b6001600160e01b0390911617905290519092916060916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916102e391610dd6565b6000604051808303816000865af19150503d8060008114610320576040519150601f19603f3d011682016040523d82523d6000602084013e610325565b606091505b5090925090508180156103505750805115806103505750808060200190518101906103509190610e11565b61038e5760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b60448201526064016101f4565b50505050565b6103d16040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529060c082015290565b60008281526020818152604091829020825160e08101845281548152600182015492810192909252600281015492820192909252600380830154606083015260048301546001600160a01b039081166080840152600584015490811660a084015291929160c0840191600160a01b90910460ff169081111561045557610455610bc9565b600381111561046657610466610bc9565b90525092915050565b32331461048e5760405162461bcd60e51b81526004016101f490610dac565b6000805b8281101561063357368484838181106104ad576104ad610e33565b90506080020190506000806000836020013581526020019081526020016000209050600082606001351161050b5760405162461bcd60e51b81526020600482015260056024820152640c081d985b60da1b60448201526064016101f4565b813561054d5760405162461bcd60e51b815260206004820152601160248201527003020726566756e6454696d657374616d7607c1b60448201526064016101f4565b60006005820154600160a01b900460ff16600381111561056f5761056f610bc9565b146105ae5760405162461bcd60e51b815260206004820152600f60248201526e0c8eae040e6cac6e4cae840d0c2e6d608b1b60448201526064016101f4565b436002820155813560038201556004810180546001600160a01b031916331790556105df6060830160408401610e49565b6005820180546060850135600185018190556001600160a01b03939093166001600160a81b031990911617600160a01b17905561061c9085610e88565b93505050808061062b90610ea0565b915050610492565b5060408051336024820152306044820152606480820184905282518083039091018152608490910182526020810180516001600160e01b03166323b872dd60e01b17905290516000916060916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916106b391610dd6565b6000604051808303816000865af19150503d80600081146106f0576040519150601f19603f3d011682016040523d82523d6000602084013e6106f5565b606091505b5090925090508180156107205750805115806107205750808060200190518101906107209190610e11565b6107635760405162461bcd60e51b81526020600482015260146024820152731d1c985b9cd9995c88199c9bdb4819985a5b195960621b60448201526064016101f4565b5050505050565b600082815260208190526040812060016005820154600160a01b900460ff16600381111561079a5761079a610bc9565b1480156107b3575060058101546001600160a01b031633145b801561082c5750836002846040516020016107d091815260200190565b60408051601f19818403018152908290526107ea91610dd6565b602060405180830381855afa158015610807573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061082a9190610eb9565b145b949350505050565b600081815260208190526040812060016005820154600160a01b900460ff16600381111561086457610864610bc9565b14801561087d575060048101546001600160a01b031633145b801561088d575080600301544210155b9392505050565b3233146108b35760405162461bcd60e51b81526004016101f490610dac565b6000805b82811015610a8b57368484838181106108d2576108d2610e33565b6020604091820293909301838101356000908152938490529220919250600190506005820154600160a01b900460ff16600381111561091357610913610bc9565b1461094c5760405162461bcd60e51b815260206004820152600960248201526862616420737461746560b81b60448201526064016101f4565b60058101546001600160a01b0316331461099a5760405162461bcd60e51b815260206004820152600f60248201526e189859081c185c9d1a58da5c185b9d608a1b60448201526064016101f4565b8160200135600283600001356040516020016109b891815260200190565b60408051601f19818403018152908290526109d291610dd6565b602060405180830381855afa1580156109ef573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610a129190610eb9565b14610a4c5760405162461bcd60e51b815260206004820152600a602482015269189859081cd958dc995d60b21b60448201526064016101f4565b60058101805460ff60a01b1916600160a11b179055813581556001810154610a749085610e88565b935050508080610a8390610ea0565b9150506108b7565b5060408051336024820152604480820184905282518083039091018152606490910182526020810180516001600160e01b031663a9059cbb60e01b17905290516000916060916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691610b0591610dd6565b6000604051808303816000865af19150503d8060008114610b42576040519150601f19603f3d011682016040523d82523d6000602084013e610b47565b606091505b509092509050818015610b72575080511580610b72575080806020019051810190610b729190610e11565b6107635760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b60448201526064016101f4565b600060208284031215610bc257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110610bfd57634e487b7160e01b600052602160045260246000fd5b9052565b600060e08201905082518252602083015160208301526040830151604083015260608301516060830152608083015160018060a01b0380821660808501528060a08601511660a0850152505060c0830151610c5f60c0840182610bdf565b5092915050565b60008060208385031215610c7957600080fd5b823567ffffffffffffffff80821115610c9157600080fd5b818501915085601f830112610ca557600080fd5b813581811115610cb457600080fd5b8660208260071b8501011115610cc957600080fd5b60209290920196919550909350505050565b60008060408385031215610cee57600080fd5b50508035926020909101359150565b8781526020810187905260408101869052606081018590526001600160a01b038481166080830152831660a082015260e08101610d3d60c0830184610bdf565b98975050505050505050565b60008060208385031215610d5c57600080fd5b823567ffffffffffffffff80821115610d7457600080fd5b818501915085601f830112610d8857600080fd5b813581811115610d9757600080fd5b8660208260061b8501011115610cc957600080fd5b60208082526010908201526f39b2b73232b910109e9037b934b3b4b760811b604082015260600190565b6000825160005b81811015610df75760208186018101518583015201610ddd565b81811115610e06576000828501525b509190910192915050565b600060208284031215610e2357600080fd5b8151801515811461088d57600080fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215610e5b57600080fd5b81356001600160a01b038116811461088d57600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115610e9b57610e9b610e72565b500190565b600060018201610eb257610eb2610e72565b5060010190565b600060208284031215610ecb57600080fd5b505191905056fea26469706673582212203e5af33d9672cc61834e91e1c391f408502e89feacb59762150c3e8ad4b8eb8764736f6c634300080f0033" -TEST_TOKEN="608060405234801561001057600080fd5b506040805180820190915260098152682a32b9ba2a37b5b2b760b91b602082015260039061003e90826101d1565b506040805180820190915260038152621514d560ea1b602082015260049061006690826101d1565b506909513ea9de0243800000600255600060208190526902544faa778090e000007f7d4921c2bc32c0110a31d16f4efb43c7a1228f1df7af765f608241dee5c62ebc8190557f59603491850c7d11499afe95b334ccfd92b48b36a15df31ef59ff5813fe370828190557f963f2e057cac0b71a4b8cff76a0e66200ffc6cc5498c1198bc1df3cb2bf751dc819055731d4f2ee206474b136af4868b887c7b166693c1949091527fbc10d5a0a531ecf97938db2df6f3f5b59678ae655bd09be1d358f605f79153d455610290565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061015c57607f821691505b60208210810361017c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101cc57600081815260208120601f850160051c810160208610156101a95750805b601f850160051c820191505b818110156101c8578281556001016101b5565b5050505b505050565b81516001600160401b038111156101ea576101ea610132565b6101fe816101f88454610148565b84610182565b602080601f831160018114610233576000841561021b5750858301515b600019600386901b1c1916600185901b1785556101c8565b600085815260208120601f198616915b8281101561026257888601518255948401946001909101908401610243565b50858210156102805787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6107968061029f6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a08231146101185780638ba4cc3c1461014157806395d89b4114610156578063a9059cbb1461015e578063dd62ed3e1461017157600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab6101aa565b6040516100b891906105d4565b60405180910390f35b6100d46100cf366004610645565b61023c565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d461010436600461066f565b610252565b604051601281526020016100b8565b6100e86101263660046106ab565b6001600160a01b031660009081526020819052604090205490565b61015461014f366004610645565b610301565b005b6100ab610349565b6100d461016c366004610645565b610358565b6100e861017f3660046106cd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101b990610700565b80601f01602080910402602001604051908101604052809291908181526020018280546101e590610700565b80156102325780601f1061020757610100808354040283529160200191610232565b820191906000526020600020905b81548152906001019060200180831161021557829003601f168201915b5050505050905090565b6000610249338484610365565b50600192915050565b600061025f848484610454565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156102e95760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6102f68533858403610365565b506001949350505050565b8060026000828254610313919061073a565b90915550506001600160a01b0382166000908152602081905260408120805483929061034090849061073a565b90915550505050565b6060600480546101b990610700565b6000610249338484610454565b6001600160a01b0383166103c75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016102e0565b6001600160a01b0382166104285760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016102e0565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b6001600160a01b0383166104b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016102e0565b6001600160a01b03821661051a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016102e0565b6001600160a01b038316600090815260208190526040902054818110156105925760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016102e0565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906105c990849061073a565b909155505050505050565b600060208083528351808285015260005b81811015610601578581018301518582016040015282016105e5565b81811115610613576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461064057600080fd5b919050565b6000806040838503121561065857600080fd5b61066183610629565b946020939093013593505050565b60008060006060848603121561068457600080fd5b61068d84610629565b925061069b60208501610629565b9150604084013590509250925092565b6000602082840312156106bd57600080fd5b6106c682610629565b9392505050565b600080604083850312156106e057600080fd5b6106e983610629565b91506106f760208401610629565b90509250929050565b600181811c9082168061071457607f821691505b60208210810361073457634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561075b57634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212201528eada32f708041b3309a694f6ffe74e05ebdb01eafc2fb478927580375b6d64736f6c634300080f0033" +TEST_TOKEN="608060405234801561001057600080fd5b506040805180820190915260098152682a32b9ba2a37b5b2b760b91b602082015260039061003e90826101f5565b506040805180820190915260038152621514d560ea1b602082015260049061006690826101f5565b506909513ea9de0243800000600255600060208190526902544faa778090e000007f7d4921c2bc32c0110a31d16f4efb43c7a1228f1df7af765f608241dee5c62ebc8190557f59603491850c7d11499afe95b334ccfd92b48b36a15df31ef59ff5813fe370828190557f963f2e057cac0b71a4b8cff76a0e66200ffc6cc5498c1198bc1df3cb2bf751dc8190557fbc10d5a0a531ecf97938db2df6f3f5b59678ae655bd09be1d358f605f79153d481905573d12ab7cf72ccf1f3882ec99ddc53cd415635c3be9091527f5bd8dfce2dbb581d0922a094c40bab2f7d2f0ea9aaf275bf0fcc0f027a2ff91d556102b4565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061018057607f821691505b6020821081036101a057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101f057600081815260208120601f850160051c810160208610156101cd5750805b601f850160051c820191505b818110156101ec578281556001016101d9565b5050505b505050565b81516001600160401b0381111561020e5761020e610156565b6102228161021c845461016c565b846101a6565b602080601f831160018114610257576000841561023f5750858301515b600019600386901b1c1916600185901b1785556101ec565b600085815260208120601f198616915b8281101561028657888601518255948401946001909101908401610267565b50858210156102a45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610796806102c36000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a08231146101185780638ba4cc3c1461014157806395d89b4114610156578063a9059cbb1461015e578063dd62ed3e1461017157600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab6101aa565b6040516100b891906105d4565b60405180910390f35b6100d46100cf366004610645565b61023c565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d461010436600461066f565b610252565b604051601281526020016100b8565b6100e86101263660046106ab565b6001600160a01b031660009081526020819052604090205490565b61015461014f366004610645565b610301565b005b6100ab610349565b6100d461016c366004610645565b610358565b6100e861017f3660046106cd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101b990610700565b80601f01602080910402602001604051908101604052809291908181526020018280546101e590610700565b80156102325780601f1061020757610100808354040283529160200191610232565b820191906000526020600020905b81548152906001019060200180831161021557829003601f168201915b5050505050905090565b6000610249338484610365565b50600192915050565b600061025f848484610454565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156102e95760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6102f68533858403610365565b506001949350505050565b8060026000828254610313919061073a565b90915550506001600160a01b0382166000908152602081905260408120805483929061034090849061073a565b90915550505050565b6060600480546101b990610700565b6000610249338484610454565b6001600160a01b0383166103c75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016102e0565b6001600160a01b0382166104285760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016102e0565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b6001600160a01b0383166104b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016102e0565b6001600160a01b03821661051a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016102e0565b6001600160a01b038316600090815260208190526040902054818110156105925760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016102e0565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906105c990849061073a565b909155505050505050565b600060208083528351808285015260005b81811015610601578581018301518582016040015282016105e5565b81811115610613576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461064057600080fd5b919050565b6000806040838503121561065857600080fd5b61066183610629565b946020939093013593505050565b60008060006060848603121561068457600080fd5b61068d84610629565b925061069b60208501610629565b9150604084013590509250925092565b6000602082840312156106bd57600080fd5b6106c682610629565b9392505050565b600080604083850312156106e057600080fd5b6106e983610629565b91506106f760208401610629565b90509250929050565b600181811c9082168061071457607f821691505b60208210810361073457634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561075b57634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212205c9f38539acdb22b17cfbd7031ece4dc130883eebf1d7c26e2b5951f24bc311f64736f6c634300080f0033" # PASSWORD is the password used to unlock all accounts/wallets/addresses. PASSWORD="abc" @@ -366,7 +366,7 @@ cat > "${NODES_ROOT}/harness-ctl/loadTestToken.js" < 1 ? web3.eth.accounts[1] : web3.eth.accounts[0] personal.unlockAccount(web3.eth.defaultAccount, '${PASSWORD}') function transfer (addr, val) { diff --git a/server/asset/eth/eth.go b/server/asset/eth/eth.go index 1011f1b36e..7d887cd722 100644 --- a/server/asset/eth/eth.go +++ b/server/asset/eth/eth.go @@ -265,7 +265,7 @@ func unconnectedETH(logger dex.Logger, net dex.Network) (*ETHBackend, error) { // NewBackend is the exported constructor by which the DEX will import the // Backend. -func NewBackend(ipc string, logger dex.Logger, net dex.Network) (*ETHBackend, error) { +func NewBackend(endpoint string, logger dex.Logger, net dex.Network) (*ETHBackend, error) { switch net { case dex.Simnet: case dex.Testnet: @@ -276,15 +276,15 @@ func NewBackend(ipc string, logger dex.Logger, net dex.Network) (*ETHBackend, er return nil, fmt.Errorf("unknown network ID: %d", net) } - if ipc == "" { - ipc = defaultIPC + if endpoint == "" { + endpoint = defaultIPC } eth, err := unconnectedETH(logger, net) if err != nil { return nil, err } - eth.node = newRPCClient(eth.net, ipc) + eth.node = newRPCClient(eth.net, endpoint) return eth, nil } diff --git a/server/asset/eth/rpcclient.go b/server/asset/eth/rpcclient.go index 5ab8f36dce..a50ccf2e81 100644 --- a/server/asset/eth/rpcclient.go +++ b/server/asset/eth/rpcclient.go @@ -9,6 +9,7 @@ import ( "context" "fmt" "math/big" + "strings" "decred.org/dcrdex/dex" dexeth "decred.org/dcrdex/dex/networks/eth" @@ -33,8 +34,8 @@ type ContextCaller interface { } type rpcclient struct { - net dex.Network - ipc string + net dex.Network + endpoint string // ec wraps a *rpc.Client with some useful calls. ec *ethclient.Client // caller is a client for raw calls not implemented by *ethclient.Client. @@ -48,24 +49,34 @@ type rpcclient struct { tokens map[uint32]*tokener } -func newRPCClient(net dex.Network, ipc string) *rpcclient { +func newRPCClient(net dex.Network, endpoint string) *rpcclient { return &rpcclient{ - net: net, - tokens: make(map[uint32]*tokener), - ipc: ipc, + net: net, + tokens: make(map[uint32]*tokener), + endpoint: endpoint, } } // connect connects to an ipc socket. It then wraps ethclient's client and // bundles commands in a form we can easily use. func (c *rpcclient) connect(ctx context.Context, log dex.Logger) error { - client, err := rpc.DialIPC(ctx, c.ipc) - if err != nil { - return fmt.Errorf("unable to dial rpc: %v", err) + var client *rpc.Client + var err error + if strings.HasSuffix(c.endpoint, ".ipc") { + client, err = rpc.DialIPC(ctx, c.endpoint) + if err != nil { + return fmt.Errorf("unable to dial ipc: %v", err) + } + } else { + log.Debugf("dialing endpoint: %s", c.endpoint) + client, err = rpc.DialContext(ctx, c.endpoint) + if err != nil { + return fmt.Errorf("unable to dial rpc: %v", err) + } } reqModules := []string{"eth", "txpool"} - if err := dexeth.CheckAPIModules(client, c.ipc, log, reqModules); err != nil { + if err := dexeth.CheckAPIModules(client, c.endpoint, log, reqModules); err != nil { return fmt.Errorf("error checking required modules: %v", err) } diff --git a/server/asset/eth/rpcclient_harness_test.go b/server/asset/eth/rpcclient_harness_test.go index e1e73561e7..3f9df2da4d 100644 --- a/server/asset/eth/rpcclient_harness_test.go +++ b/server/asset/eth/rpcclient_harness_test.go @@ -1,7 +1,7 @@ //go:build harness && lgpl // This test requires that the testnet harness be running and the unix socket -// be located at $HOME/dextest/eth/alpha/node/geth.ipc +// be located at $HOME/dextest/eth/delta/node/geth.ipc package eth @@ -24,12 +24,13 @@ import ( ) var ( - homeDir = os.Getenv("HOME") - ipc = filepath.Join(homeDir, "dextest/eth/alpha/node/geth.ipc") + homeDir = os.Getenv("HOME") + // endpoint = filepath.Join(homeDir, "dextest/eth/delta/node/geth.ipc") + endpoint = "ws://localhost:38557" contractAddrFile = filepath.Join(homeDir, "dextest", "eth", "eth_swap_contract_address.txt") tokenSwapAddrFile = filepath.Join(homeDir, "dextest", "eth", "erc20_swap_contract_address.txt") tokenErc20AddrFile = filepath.Join(homeDir, "dextest", "eth", "test_token_contract_address.txt") - alphaAddress = "18d65fb8d60c1199bb1ad381be47aa692b482605" + deltaAddress = "d12ab7cf72ccf1f3882ec99ddc53cd415635c3be" gammaAddress = "41293c2032bac60aa747374e966f79f575d42379" ethClient *rpcclient ctx context.Context @@ -40,7 +41,7 @@ func TestMain(m *testing.M) { run := func() (int, error) { var cancel context.CancelFunc ctx, cancel = context.WithCancel(context.Background()) - ethClient = newRPCClient(dex.Simnet, ipc) + ethClient = newRPCClient(dex.Simnet, endpoint) defer func() { cancel() ethClient.shutdown() @@ -51,7 +52,6 @@ func TestMain(m *testing.M) { netToken := dexeth.Tokens[testTokenID].NetTokens[dex.Simnet] netToken.Address = getContractAddrFromFile(tokenErc20AddrFile) netToken.SwapContracts[0].Address = getContractAddrFromFile(tokenSwapAddrFile) - registerToken(testTokenID, 0) logger := dex.StdOutLogger("ETHTEST", dex.LevelTrace) if err := ethClient.connect(ctx, logger); err != nil { @@ -131,7 +131,7 @@ func TestAccountBalance(t *testing.T) { } func testAccountBalance(t *testing.T, assetID uint32) { - addr := common.HexToAddress(alphaAddress) + addr := common.HexToAddress(deltaAddress) const vGwei = 1e7 balBefore, err := ethClient.accountBalance(ctx, assetID, addr) @@ -140,7 +140,7 @@ func testAccountBalance(t *testing.T, assetID uint32) { } if assetID == BipID { - err = tmuxSend(alphaAddress, gammaAddress, vGwei) + err = tmuxSend(deltaAddress, gammaAddress, vGwei) } else { err = tmuxSendToken(gammaAddress, vGwei) } @@ -153,9 +153,18 @@ func testAccountBalance(t *testing.T, assetID uint32) { t.Fatalf("accountBalance error: %v", err) } - diff := new(big.Int).Sub(balBefore, balAfter) - if diff.Cmp(dexeth.GweiToWei(vGwei)) <= 0 { - t.Fatalf("account balance changed by %d. expected > %d", dexeth.WeiToGwei(diff), uint64(vGwei)) + if assetID == BipID { + diff := new(big.Int).Sub(balBefore, balAfter) + if diff.Cmp(dexeth.GweiToWei(vGwei)) <= 0 { + t.Fatalf("account balance changed by %d. expected > %d", dexeth.WeiToGwei(diff), uint64(vGwei)) + } + } + + if assetID == testTokenID { + diff := new(big.Int).Sub(balBefore, balAfter) + if diff.Cmp(dexeth.GweiToWei(vGwei)) != 0 { + t.Fatalf("account balance changed by %d. expected > %d", dexeth.WeiToGwei(diff), uint64(vGwei)) + } } } @@ -169,11 +178,11 @@ func tmuxRun(cmd string) error { } func tmuxSend(from, to string, v uint64) error { - return tmuxRun(fmt.Sprintf("./alpha attach --preload send.js --exec \"send(\\\"%s\\\",\\\"%s\\\",%s)\"", from, to, dexeth.GweiToWei(v))) + return tmuxRun(fmt.Sprintf("./delta attach --preload send.js --exec \"send(\\\"%s\\\",\\\"%s\\\",%s)\"", from, to, dexeth.GweiToWei(v))) } func tmuxSendToken(to string, v uint64) error { - return tmuxRun(fmt.Sprintf("./alpha attach --preload loadTestToken.js --exec \"testToken.transfer(\\\"0x%s\\\",%s)\"", to, dexeth.GweiToWei(v))) + return tmuxRun(fmt.Sprintf("./delta attach --preload loadTestToken.js --exec \"testToken.transfer(\\\"0x%s\\\",%s)\"", to, dexeth.GweiToWei(v))) } func getContractAddrFromFile(fileName string) common.Address {