// Copyright 2019 The go-ethereum Authors // This file is part of go-ethereum. // // go-ethereum is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // go-ethereum is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with go-ethereum. If not, see . // This file is a test-utility for testing clef-functionality // // Start clef with // // build/bin/clef --4bytedb=./cmd/clef/4byte.json --rpc // // Start geth with // // build/bin/geth --nodiscover --maxpeers 0 --signer http://localhost:8550 console --preload=cmd/clef/tests/testsigner.js // // and in the console simply invoke // // > test() // // You can reload the file via `reload()` function reload(){ loadScript("./cmd/clef/tests/testsigner.js"); } function init(){ if (typeof accts == 'undefined' || accts.length == 0){ accts = eth.accounts console.log("Got accounts ", accts); } } init() function testTx(){ if( accts && accts.length > 0) { var a = accts[0] var txdata = eth.signTransaction({from: a, to: a, value: 1, nonce: 1, gas: 1, gasPrice: 1}) var v = parseInt(txdata.tx.v) console.log("V value: ", v) if (v == 37 || v == 38){ console.log("Mainnet 155-protected chainid was used") } if (v == 27 || v == 28){ throw new Error("Mainnet chainid was used, but without replay protection!") } } } function testSignText(){ if( accts && accts.length > 0){ var a = accts[0] var r = eth.sign(a, "0x68656c6c6f20776f726c64"); //hello world console.log("signing response", r) } } function testClique(){ if( accts && accts.length > 0){ var a = accts[0] var r = debug.testSignCliqueBlock(a, 0); // Sign genesis console.log("signing response", r) if( a != r){ throw new Error("Requested signing by "+a+ " but got sealer "+r) } } } function test(){ var tests = [ testTx, testSignText, testClique, ] for( i in tests){ try{ tests[i]() }catch(err){ console.log(err) } } }