diff options
Diffstat (limited to 'test/web3')
-rw-r--r-- | test/web3/index.html | 105 | ||||
-rw-r--r-- | test/web3/schema.js | 209 | ||||
-rw-r--r-- | test/web3/web3.js | 34 |
3 files changed, 348 insertions, 0 deletions
diff --git a/test/web3/index.html b/test/web3/index.html new file mode 100644 index 000000000..cbc43290c --- /dev/null +++ b/test/web3/index.html @@ -0,0 +1,105 @@ +<html> + <head> + <title>Web3 Test Dapp</title> + </head> + <body> + <div style="display: flex; flex-flow: column;"> + <div style="display: flex; font-size: 1.25rem;">hexaNumberMethods</div> + <div style="display: flex;"> + <button id="eth_blockNumber" class="hexaNumberMethods">eth_blockNumber</button> + + <button id="eth_gasPrice" class="hexaNumberMethods">eth_gasPrice</button> + <button id="eth_newBlockFilter" class="hexaNumberMethods">eth_newBlockFilter</button> + <button id="eth_newPendingTransactionFilter" class="hexaNumberMethods"> + eth_newPendingTransactionFilter + </button> + <button id="eth_getUncleCountByBlockHash" class="hexaNumberMethods"> + eth_getUncleCountByBlockHash + </button> + <button id="eth_getBlockTransactionCountByHash" class="hexaNumberMethods"> + getBlockTransactionCountByHash + </button> + </div> + <div style="display: flex ;"> + <button id="eth_getTransactionCount" class="hexaNumberMethods">eth_getTransactionCount</button> + <button id="eth_getBalance" class="hexaNumberMethods">eth_getBalance</button> + <button id="eth_estimateGas" class="hexaNumberMethods">eth_estimateGas</button> + </div> + <div style="display: flex ;"> + + <button id="eth_getUncleCountByBlockNumber" class="hexaNumberMethods"> + eth_getUncleCountByBlockNumber + </button> + <button id='eth_getBlockTransactionCountByNumber' class="hexaNumberMethods"> + eth_getBlockTransactionCountByNumber + </button> + <button id="eth_protocolVersion" class="hexaNumberMethods">eth_protocolVersion</button> + + <button id="eth_getCode" class="hexaNumberMethods">eth_getCode</button> + </div> + </div> + <div style="display: flex; flex-flow: column;"> + <div style="display: flex; font-size: 1.25rem;">booleanMethods</div> + <div style="display: flex ;"> + <button id="eth_uninstallFilter" class = 'booleanMethods'>eth_uninstallFilter</button> + <button id="eth_mining" class = 'booleanMethods'>eth_mining</button> + <button id="eth_syncing" class = 'booleanMethods'>eth_syncing</button> + </div> + </div> + <div style="display: flex; flex-flow: column;"> + <div style="display: flex; font-size: 1.25rem;" >transactionMethods</div> + <div style="display: flex ;"> + <button id="eth_getTransactionByHash" class='transactionMethods'>eth_getTransactionByHash</button> + <button id="eth_getTransactionByBlockHashAndIndex" class = 'transactionMethods'> + eth_getTransactionByBlockHashAndIndex + </button> + <button id="eth_getTransactionByBlockNumberAndIndex" class="transactionMethods"> + eth_getTransactionByBlockNumberAndIndex + </button> + + + </div> + </div> + + <div style="display: flex; flex-flow: column;"> + <div style="display: flex; font-size: 1.25rem;">blockMethods</div> + + <div style="display: flex ;"> + + + <button id="eth_getUncleByBlockHashAndIndex" class="blockMethods"> + eth_getUncleByBlockHashAndIndex + </button> + <button id="eth_getBlockByHash" class="blockMethods">eth_getBlockByHash</button> + </div> + <div style="display: flex ;"> + <button id="eth_getBlockByNumber" class="blockMethods">eth_getBlockByNumber</button> + + + </div> + </div> + + <div style="display: flex; flex-flow: column;"> + <div style="display: flex; font-size: 1.25rem;">Methods</div> + <div style="display: flex ;"> + <button id="eth_call" class = 'methods'>eth_call</button> + <button id="eth_getStorageAt" class="methods">eth_getStorageAt</button> + <button id="eth_getTransactionReceipt" class="methods"> + eth_getTransactionReceipt + </button> + + </div> + </div> + <div style="display: flex; flex-flow: column;"> + <div id='results'></div> + </div> + + + + + </div> + <script src="schema.js"></script> + <script src="web3.js"></script> + + </body> +</html> diff --git a/test/web3/schema.js b/test/web3/schema.js new file mode 100644 index 000000000..61977f140 --- /dev/null +++ b/test/web3/schema.js @@ -0,0 +1,209 @@ +/* eslint no-unused-vars: 0 */ + +var params = { + // diffrent params used in the methods + param: [], + blockHashParams: '0xb3b20624f8f0f86eb50dd04688409e5cea4bd02d700bf6e79e9384d47d6a5a35', + filterParams: ['0xfe704947a3cd3ca12541458a4321c869'], + transactionHashParams: [ + '0xbb3a336e3f823ec18197f1e13ee875700f08f03e2cab75f0d0b118dabb44cba0', + ], + blockHashAndIndexParams: [ + '0xb3b20624f8f0f86eb50dd04688409e5cea4bd02d700bf6e79e9384d47d6a5a35', + '0x0', + ], + uncleByBlockNumberAndIndexParams: ['0x29c', '0x0'], + blockParameterParams: '0x5bad55', + data: '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675', + addressParams: '0xc94770007dda54cF92009BFF0dE90c06F603a09f', + getStorageAtParams: [ + '0x295a70b2de5e3953354a6a8344e616ed314d7251', + '0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9', + '0x65a8db', + ], + getCodeParams: ['0x06012c8cf97bead5deae237070f9587f8e7a266d', '0x65a8db'], + estimateTransaction: { + from: '0xb60e8dd61c5d32be8058bb8eb970870f07233155', + to: '0xd46e8dd67c5d32be8058bb8eb970870f07244567', + gas: '0x76c0', + gasPrice: '0x9184e72a000', + value: '0x9184e72a', + data: '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675', + }, + filterGetLogs: [{'blockHash': '0x7c5a35e9cb3e8ae0e221ab470abae9d446c3a5626ce6689fc777dcffcab52c70', 'topics': ['0x241ea03ca20251805084d27d4440371c34a0b85ff108f6bb5611248f73818b80']}], + block: { + __required: [], + number: 'Q', + hash: 'D32', + parentHash: 'D32', + nonce: 'D', + sha3Uncles: 'D', + logsBloom: 'D', + transactionsRoot: 'D', + stateRoot: 'D', + receiptsRoot: 'D', + miner: 'D', + difficulty: 'Q', + totalDifficulty: 'Q', + extraData: 'D', + size: 'Q', + gasLimit: 'Q', + gasUsed: 'Q', + timestamp: 'Q', + transactions: ['DATA|Transaction'], + uncles: ['D'], + }, + transaction: { + __required: [], + hash: 'D32', + nonce: 'Q', + blockHash: 'D32', + blockNumber: 'Q', + transactionIndex: 'Q', + from: 'D20', + to: 'D20', + value: 'Q', + gasPrice: 'Q', + gas: 'Q', + input: 'D', + }, + receipt: { + __required: [], + transactionHash: 'D32', + transactionIndex: 'Q', + blockHash: 'D32', + blockNumber: 'Q', + cumulativeGasUsed: 'Q', + gasUsed: 'Q', + contractAddress: 'D20', + logs: ['FilterChange'], + }, + + filterChange: { + __required: [], + removed: 'B', + logIndex: 'Q', + transactionIndex: 'Q', + transactionHash: 'D32', + blockHash: 'D32', + blockNumber: 'Q', + address: 'D20', + data: 'Array|DATA', + topics: ['D'], + }, +} + +var methods = { + hexaNumberMethods: { + // these are the methods which have output in the form of hexa decimal numbers + eth_blockNumber: ['eth_blockNumber', params.param, 'Q'], + eth_gasPrice: ['eth_gasPrice', params.param, 'Q'], + eth_newBlockFilter: ['eth_newBlockFilter', params.param, 'Q'], + eth_newPendingTransactionFilter: [ + 'eth_newPendingTransactionFilter', + params.param, + 'Q', + ], + eth_getUncleCountByBlockHash: [ + 'eth_getUncleCountByBlockHash', + [params.blockHashParams], + 'Q', + 1, + ], + eth_getBlockTransactionCountByHash: [ + 'eth_getBlockTransactionCountByHash', + [params.blockHashParams], + 'Q', + 1, + ], + eth_getTransactionCount: [ + 'eth_getTransactionCount', + [params.addressParams, params.blockParameterParams], + 'Q', + 1, + 2, + ], + eth_getBalance: ['eth_getBalance', [params.addressParams, 'latest'], 'Q', 1, 2], + eth_estimateGas: ['eth_estimateGas', [params.estimateTransaction], 'Q', 1], + eth_getUncleCountByBlockNumber: [ + 'eth_getUncleCountByBlockNumber', + [params.blockParameterParams], + 'Q', + 1, + ], + eth_getBlockTransactionCountByNumber: [ + 'eth_getBlockTransactionCountByNumber', + ['latest'], + 'Q', + 1, + ], + eth_protocolVersion: ['eth_protocolVersion', params.param, 'S'], + eth_getCode: ['eth_getCode', params.getCodeParams, 'D', 1, 2], + }, + booleanMethods: { + // these are the methods which have output in the form of boolean + eth_uninstallFilter: ['eth_uninstallFilter', params.filterParams, 'B', 1], + eth_mining: ['eth_mining', params.param, 'B'], + eth_syncing: ['eth_syncing', params.param, 'B|EthSyncing'], + }, + transactionMethods: { + // these are the methods which have output in the form of transaction object + eth_getTransactionByHash: [ + 'eth_getTransactionByHash', + params.transactionHashParams, + params.transaction, + 1, + ], + eth_getTransactionByBlockHashAndIndex: [ + 'eth_getTransactionByBlockHashAndIndex', + params.blockHashAndIndexParams, + params.transaction, + 2, + ], + eth_getTransactionByBlockNumberAndIndex: [ + 'eth_getTransactionByBlockNumberAndIndex', + [params.blockParameterParams, '0x0'], + params.transaction, + 2, + ], + + }, + blockMethods: { + // these are the methods which have output in the form of a block + + eth_getUncleByBlockNumberAndIndex: [ + 'eth_getUncleByBlockNumberAndIndex', + params.uncleByBlockNumberAndIndexParams, + params.block, + 2, + ], + eth_getBlockByHash: [ + 'eth_getBlockByHash', + [params.params, false], + params.block, + 2, + ], + eth_getBlockByNumber: [ + 'eth_getBlockByNumber', + [params.blockParameterParams, false], + params.block, + 2, + ], + }, + + methods: { + // these are the methods which have output in the form of bytes data + + eth_call: ['eth_call', [params.estimateTransaction, 'latest'], 'D', 1, 2], + eth_getStorageAt: ['eth_getStorageAt', params.getStorageAtParams, 'D', 2, 2], + eth_getTransactionReceipt: [ + 'eth_getTransactionReceipt', + params.transactionHashParams, + params.receipt, + 1, + ], + + }, + +} + diff --git a/test/web3/web3.js b/test/web3/web3.js new file mode 100644 index 000000000..5c2de078d --- /dev/null +++ b/test/web3/web3.js @@ -0,0 +1,34 @@ +/* eslint no-undef: 0 */ + +var json = methods + +web3.currentProvider.enable().then(() => { + + Object.keys(json).forEach(methodGroupKey => { + + console.log(methodGroupKey) + const methodGroup = json[methodGroupKey] + console.log(methodGroup) + Object.keys(methodGroup).forEach(methodKey => { + + const methodButton = document.getElementById(methodKey) + methodButton.addEventListener('click', function (event) { + + window.ethereum.sendAsync({ + method: methodKey, + params: methodGroup[methodKey][1], + }, function (err, result) { + if (err) { + console.log(err) + console.log(methodKey) + } else { + document.getElementById('results').innerHTML = JSON.stringify(result) + } + }) + }) + + }) + + }) + }) + |