1
1
/* global describe, before, it */
2
- import { Web3 } from 'web3'
3
2
import { createFeeMarket1559Tx } from '@ethereumjs/tx'
4
3
import { Provider } from '../src/index'
5
- const web3 = new Web3 ( )
6
4
import * as assert from 'assert'
7
- import { bytesToHex , hexToBytes } from 'web3-utils'
8
5
import type { AddressLike } from '@ethereumjs/util'
6
+ import { ethers , BrowserProvider , getBytes , hexlify } from "ethers"
9
7
10
8
describe ( 'Transactions' , ( ) => {
9
+ let ethersProvider : BrowserProvider
11
10
before ( async function ( ) {
12
11
const provider = new Provider ( { fork : 'shanghai' } )
13
12
await provider . init ( )
14
- web3 . setProvider ( provider as any )
13
+ ethersProvider = new ethers . BrowserProvider ( provider as any )
15
14
} )
16
15
17
16
describe ( 'eth_sendTransaction' , ( ) => {
18
17
it ( 'should deploy Storage contract, save a number and retrieve it' , async function ( ) {
19
- const accounts : string [ ] = await web3 . eth . getAccounts ( )
20
- let receipt = await web3 . eth . sendTransaction ( {
18
+ const accounts : string [ ] = await ethersProvider . send ( "eth_requestAccounts" , [ ] )
19
+ const signer = await ethersProvider . getSigner ( 0 )
20
+ let receipt = await signer . sendTransaction ( {
21
21
from : accounts [ 0 ] ,
22
- gas : 1000000 ,
22
+ gasLimit : 1000000 ,
23
23
data : '0x608060405234801561000f575f80fd5b506101438061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c80632e64cec1146100385780636057361d14610056575b5f80fd5b610040610072565b60405161004d919061009b565b60405180910390f35b610070600480360381019061006b91906100e2565b61007a565b005b5f8054905090565b805f8190555050565b5f819050919050565b61009581610083565b82525050565b5f6020820190506100ae5f83018461008c565b92915050565b5f80fd5b6100c181610083565b81146100cb575f80fd5b50565b5f813590506100dc816100b8565b92915050565b5f602082840312156100f7576100f66100b4565b5b5f610104848285016100ce565b9150509291505056fea2646970667358221220bfa7ddc6d937b635c7a8ad020080923800f04f6b0a685c47330306fd5267626b64736f6c63430008150033'
24
24
} )
25
- const storageAddress = receipt . contractAddress
26
- const receiptPull = await web3 . eth . getTransactionReceipt ( receipt . transactionHash )
27
- assert . equal ( receiptPull . contractAddress , receipt . contractAddress )
28
- receipt = await web3 . eth . sendTransaction ( {
25
+ const storageAddress = ( await ethersProvider . getTransactionReceipt ( receipt . hash ) ) . contractAddress
26
+ receipt = await signer . sendTransaction ( {
29
27
from : accounts [ 0 ] ,
30
28
to : storageAddress ,
31
- gas : 1000000 ,
29
+ gasLimit : 1000000 ,
32
30
data : '0x6057361d000000000000000000000000000000000000000000000000000000000000000e'
33
31
} )
34
- const value = await web3 . eth . call ( {
32
+ const value = await ethersProvider . call ( {
35
33
from : accounts [ 0 ] ,
36
34
to : storageAddress ,
37
35
data : '0x2e64cec1'
@@ -43,14 +41,15 @@ describe('Transactions', () => {
43
41
44
42
describe ( 'eth_sendRawTransaction' , ( ) => {
45
43
it ( 'should deploy a contract and call a function using sendRawTransaction' , async function ( ) {
46
- const accounts : string [ ] = await web3 . eth . getAccounts ( )
47
-
44
+ const accounts : string [ ] = await ethersProvider . send ( "eth_requestAccounts" , [ ] )
45
+ const signer = await ethersProvider . getSigner ( 0 )
48
46
const contractCreation = `0x02f908df0105010783069f638080b9088e608060405234801561001057600080fd5b5061005a6040518060400160405280601b81526020017f4f776e657220636f6e7472616374206465706c6f7965642062793a00000000008152503361011a60201b6101e91760201c565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a3610356565b6101b88282604051602401610130929190610265565b6040516020818303038152906040527f319af333000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506101bc60201b60201c565b5050565b6101dd816101d86101e060201b6102851761020160201b60201c565b60201c565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b61021360201b6102cb17819050919050565b61021b610316565b565b610226816102b1565b82525050565b600061023782610295565b61024181856102a0565b93506102518185602086016102e3565b61025a81610345565b840191505092915050565b6000604082019050818103600083015261027f818561022c565b905061028e602083018461021d565b9392505050565b600081519050919050565b600082825260208201905092915050565b60006102bc826102c3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b838110156103015780820151818401526020810190506102e6565b83811115610310576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fd5b6000601f19601f8301169050919050565b610529806103656000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063893d20e81461003b578063a6f9dae114610059575b600080fd5b610043610075565b6040516100509190610382565b60405180910390f35b610073600480360381019061006e91906102ea565b61009e565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461012c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610123906103cd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61028182826040516024016101ff92919061039d565b6040516020818303038152906040527f319af333000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506102a6565b5050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6102bd816102b56102856102c0565b63ffffffff16565b50565b6102cb819050919050565b6102d361046e565b565b6000813590506102e4816104dc565b92915050565b600060208284031215610300576102ff61049d565b5b600061030e848285016102d5565b91505092915050565b61032081610409565b82525050565b6000610331826103ed565b61033b81856103f8565b935061034b81856020860161043b565b610354816104a2565b840191505092915050565b600061036c6013836103f8565b9150610377826104b3565b602082019050919050565b60006020820190506103976000830184610317565b92915050565b600060408201905081810360008301526103b78185610326565b90506103c66020830184610317565b9392505050565b600060208201905081810360008301526103e68161035f565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006104148261041b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b8381101561045957808201518184015260208101905061043e565b83811115610468576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f43616c6c6572206973206e6f74206f776e657200000000000000000000000000600082015250565b6104e581610409565b81146104f057600080fd5b5056fea2646970667358221220de534e7b87a9a1d73de47545c783b70d95ffebe049e62821ef2ef1c9a0fd7e8664736f6c63430008070033c080a0e9deb1e1b2cebf79e29cd9e69074f47a6680da51cb175f899a0b8c87aa893fb3a06ab1b35f54e47cd86191accdf8c915f998135c8cb58fccdb85125a9d1d1129da`
49
- const receipt = await web3 . eth . sendSignedTransaction ( contractCreation )
47
+ const receipt = await ethersProvider . broadcastTransaction ( contractCreation )
48
+ const contractAddress = ( await ethersProvider . getTransactionReceipt ( receipt . hash ) ) . contractAddress
50
49
// owner should be 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4
51
- let value = await web3 . eth . call ( {
50
+ let value = await ethersProvider . call ( {
52
51
from : accounts [ 0 ] ,
53
- to : receipt . contractAddress ,
52
+ to : contractAddress ,
54
53
data : '0x893d20e8'
55
54
} )
56
55
assert . equal ( value , '0x0000000000000000000000005B38Da6a701c568545dCfcB03FcB875f56beddC4' . toLowerCase ( ) )
@@ -59,16 +58,16 @@ describe('Transactions', () => {
59
58
gasLimit : 1000000 ,
60
59
maxPriorityFeePerGas : '0x01' ,
61
60
maxFeePerGas : '0x7' ,
62
- to : ( hexToBytes ( receipt . contractAddress ) as AddressLike ) ,
61
+ to : ( getBytes ( contractAddress ) as AddressLike ) ,
63
62
value : 0 ,
64
- data : hexToBytes ( '0xa6f9dae1000000000000000000000000Ab8483F64d9C6d1EcF9b849Ae677dD3315835cb2' )
63
+ data : getBytes ( '0xa6f9dae1000000000000000000000000Ab8483F64d9C6d1EcF9b849Ae677dD3315835cb2' )
65
64
66
- } ) . sign ( hexToBytes ( '0x503f38a9c967ed597e47fe25643985f032b072db8075426a92110f82df48dfcb' ) )
67
- await web3 . eth . sendSignedTransaction ( bytesToHex ( tx . serialize ( ) ) )
65
+ } ) . sign ( getBytes ( '0x503f38a9c967ed597e47fe25643985f032b072db8075426a92110f82df48dfcb' ) )
66
+ await ethersProvider . broadcastTransaction ( hexlify ( tx . serialize ( ) ) )
68
67
// owner should be 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2
69
- value = await web3 . eth . call ( {
68
+ value = await ethersProvider . call ( {
70
69
from : accounts [ 0 ] ,
71
- to : receipt . contractAddress ,
70
+ to : contractAddress ,
72
71
data : '0x893d20e8'
73
72
} )
74
73
assert . equal ( value , '0x000000000000000000000000Ab8483F64d9C6d1EcF9b849Ae677dD3315835cb2' . toLowerCase ( ) )
0 commit comments