org.web3j.crypto.TransactionEncoder Java Examples
The following examples show how to use
org.web3j.crypto.TransactionEncoder.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: CreateTransactionInteract.java From Upchain-wallet with GNU Affero General Public License v3.0 | 7 votes |
public Single<String> createEthTransaction(ETHWallet from, String to, BigInteger amount, BigInteger gasPrice, BigInteger gasLimit, String password) { final Web3j web3j = Web3j.build(new HttpService(networkRepository.getDefaultNetwork().rpcServerUrl)); return networkRepository.getLastTransactionNonce(web3j, from.address) .flatMap(nonce -> Single.fromCallable( () -> { Credentials credentials = WalletUtils.loadCredentials(password, from.getKeystorePath()); RawTransaction rawTransaction = RawTransaction.createEtherTransaction(nonce, gasPrice, gasLimit, to, amount); byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials); String hexValue = Numeric.toHexString(signedMessage); EthSendTransaction ethSendTransaction = web3j.ethSendRawTransaction(hexValue).send(); return ethSendTransaction.getTransactionHash(); } ).subscribeOn(Schedulers.computation()) .observeOn(AndroidSchedulers.mainThread())); }
Example #2
Source File: CreateRawTransactionIT.java From web3j with Apache License 2.0 | 6 votes |
@Test public void testDeploySmartContract() throws Exception { BigInteger nonce = getNonce(ALICE.getAddress()); RawTransaction rawTransaction = createSmartContractTransaction(nonce); byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, ALICE); String hexValue = Numeric.toHexString(signedMessage); EthSendTransaction ethSendTransaction = web3j.ethSendRawTransaction(hexValue).sendAsync().get(); String transactionHash = ethSendTransaction.getTransactionHash(); assertFalse(transactionHash.isEmpty()); TransactionReceipt transactionReceipt = waitForTransactionReceipt(transactionHash); assertEquals(transactionHash, transactionReceipt.getTransactionHash()); assertFalse( rawTransaction.getGasLimit().equals(transactionReceipt.getGasUsed()), "Contract execution ran out of gas"); }
Example #3
Source File: SendingEther.java From Android-Wallet-Token-ERC20 with Apache License 2.0 | 6 votes |
@Override protected EthSendTransaction doInBackground(String... values) { BigInteger ammount = Convert.toWei(values[1], Convert.Unit.ETHER).toBigInteger(); try { RawTransaction rawTransaction = RawTransaction.createEtherTransaction(getNonce(), getGasPrice(), getGasLimit(), values[0], ammount); byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, mCredentials); String hexValue = "0x"+ Hex.toHexString(signedMessage); return mWeb3j.ethSendRawTransaction(hexValue.toString()).sendAsync().get(); } catch (ExecutionException | InterruptedException e) { e.printStackTrace(); } return null; }
Example #4
Source File: HumanStandardTokenIT.java From web3j with Apache License 2.0 | 6 votes |
private String execute(Credentials credentials, Function function, String contractAddress) throws Exception { BigInteger nonce = getNonce(credentials.getAddress()); String encodedFunction = FunctionEncoder.encode(function); RawTransaction rawTransaction = RawTransaction.createTransaction( nonce, GAS_PRICE, GAS_LIMIT, contractAddress, encodedFunction); byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials); String hexValue = Numeric.toHexString(signedMessage); EthSendTransaction transactionResponse = web3j.ethSendRawTransaction(hexValue).sendAsync().get(); return transactionResponse.getTransactionHash(); }
Example #5
Source File: CreateRawTransactionIT.java From web3j with Apache License 2.0 | 6 votes |
@Test public void testTransferEther() throws Exception { BigInteger nonce = getNonce(ALICE.getAddress()); RawTransaction rawTransaction = createEtherTransaction(nonce, BOB.getAddress()); byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, ALICE); String hexValue = Numeric.toHexString(signedMessage); EthSendTransaction ethSendTransaction = web3j.ethSendRawTransaction(hexValue).sendAsync().get(); String transactionHash = ethSendTransaction.getTransactionHash(); assertFalse(transactionHash.isEmpty()); TransactionReceipt transactionReceipt = waitForTransactionReceipt(transactionHash); assertEquals(transactionHash, transactionReceipt.getTransactionHash()); }
Example #6
Source File: SignTransactionIT.java From etherscan-explorer with GNU General Public License v3.0 | 6 votes |
@Test public void testSignTransaction() throws Exception { boolean accountUnlocked = unlockAccount(); assertTrue(accountUnlocked); RawTransaction rawTransaction = createTransaction(); byte[] encoded = TransactionEncoder.encode(rawTransaction); byte[] hashed = Hash.sha3(encoded); EthSign ethSign = web3j.ethSign(ALICE.getAddress(), Numeric.toHexString(hashed)) .sendAsync().get(); String signature = ethSign.getSignature(); assertNotNull(signature); assertFalse(signature.isEmpty()); }
Example #7
Source File: CreateRawTransactionIT.java From etherscan-explorer with GNU General Public License v3.0 | 6 votes |
@Test public void testDeploySmartContract() throws Exception { BigInteger nonce = getNonce(ALICE.getAddress()); RawTransaction rawTransaction = createSmartContractTransaction(nonce); byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, ALICE); String hexValue = Numeric.toHexString(signedMessage); EthSendTransaction ethSendTransaction = web3j.ethSendRawTransaction(hexValue).sendAsync().get(); String transactionHash = ethSendTransaction.getTransactionHash(); assertFalse(transactionHash.isEmpty()); TransactionReceipt transactionReceipt = waitForTransactionReceipt(transactionHash); assertThat(transactionReceipt.getTransactionHash(), is(transactionHash)); assertFalse("Contract execution ran out of gas", rawTransaction.getGasLimit().equals(transactionReceipt.getGasUsed())); }
Example #8
Source File: CreateRawTransactionIT.java From etherscan-explorer with GNU General Public License v3.0 | 6 votes |
@Test public void testTransferEther() throws Exception { BigInteger nonce = getNonce(ALICE.getAddress()); RawTransaction rawTransaction = createEtherTransaction( nonce, BOB.getAddress()); byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, ALICE); String hexValue = Numeric.toHexString(signedMessage); EthSendTransaction ethSendTransaction = web3j.ethSendRawTransaction(hexValue).sendAsync().get(); String transactionHash = ethSendTransaction.getTransactionHash(); assertFalse(transactionHash.isEmpty()); TransactionReceipt transactionReceipt = waitForTransactionReceipt(transactionHash); assertThat(transactionReceipt.getTransactionHash(), is(transactionHash)); }
Example #9
Source File: HumanStandardTokenIT.java From etherscan-explorer with GNU General Public License v3.0 | 6 votes |
private String execute( Credentials credentials, Function function, String contractAddress) throws Exception { BigInteger nonce = getNonce(credentials.getAddress()); String encodedFunction = FunctionEncoder.encode(function); RawTransaction rawTransaction = RawTransaction.createTransaction( nonce, GAS_PRICE, GAS_LIMIT, contractAddress, encodedFunction); byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials); String hexValue = Numeric.toHexString(signedMessage); EthSendTransaction transactionResponse = web3j.ethSendRawTransaction(hexValue) .sendAsync().get(); return transactionResponse.getTransactionHash(); }
Example #10
Source File: SignTransactionIT.java From web3j with Apache License 2.0 | 6 votes |
@Test public void testSignTransaction() throws Exception { boolean accountUnlocked = unlockAccount(); assertTrue(accountUnlocked); RawTransaction rawTransaction = createTransaction(); byte[] encoded = TransactionEncoder.encode(rawTransaction); byte[] hashed = Hash.sha3(encoded); EthSign ethSign = web3j.ethSign(ALICE.getAddress(), Numeric.toHexString(hashed)).sendAsync().get(); String signature = ethSign.getSignature(); assertNotNull(signature); assertFalse(signature.isEmpty()); }
Example #11
Source File: RawTransactionManager.java From client-sdk-java with Apache License 2.0 | 6 votes |
public PlatonSendTransaction signAndSend(RawTransaction rawTransaction) throws IOException { byte[] signedMessage; if (chainId > ChainId.NONE) { signedMessage = TransactionEncoder.signMessage(rawTransaction, chainId, credentials); } else { signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials); } String hexValue = Numeric.toHexString(signedMessage); PlatonSendTransaction ethSendTransaction = web3j.platonSendRawTransaction(hexValue).send(); if (ethSendTransaction != null && !ethSendTransaction.hasError()) { String txHashLocal = Hash.sha3(hexValue); String txHashRemote = ethSendTransaction.getTransactionHash(); if (!txHashVerifier.verify(txHashLocal, txHashRemote)) { throw new TxHashMismatchException(txHashLocal, txHashRemote); } } return ethSendTransaction; }
Example #12
Source File: PrivateTransactionEncoder.java From web3j with Apache License 2.0 | 6 votes |
public static List<RlpType> asRlpValues( final RawPrivateTransaction privateTransaction, final Sign.SignatureData signatureData) { final List<RlpType> result = new ArrayList<>( TransactionEncoder.asRlpValues( privateTransaction.asRawTransaction(), signatureData)); result.add(privateTransaction.getPrivateFrom().asRlp()); privateTransaction .getPrivateFor() .ifPresent(privateFor -> result.add(Base64String.unwrapListToRlp(privateFor))); privateTransaction.getPrivacyGroupId().map(Base64String::asRlp).ifPresent(result::add); result.add(RlpString.create(privateTransaction.getRestriction().getRestriction())); return result; }
Example #13
Source File: TransactionSerializer.java From ethsigner with Apache License 2.0 | 6 votes |
public String serialize(final Transaction transaction) { final byte[] bytesToSign = transaction.rlpEncode(chainId); final Signature signature = signer.sign(bytesToSign); final SignatureData web3jSignature = new SignatureData( signature.getV().toByteArray(), signature.getR().toByteArray(), signature.getS().toByteArray()); final SignatureData eip155Signature = TransactionEncoder.createEip155SignatureData(web3jSignature, chainId); final byte[] serializedBytes = transaction.rlpEncode(eip155Signature); return Numeric.toHexString(serializedBytes); }
Example #14
Source File: PaperWallet.java From ethereum-paper-wallet with Apache License 2.0 | 5 votes |
public String createOfflineTx(String toAddress, BigInteger gasPrice, BigInteger gasLimit, BigInteger amount, BigInteger nonce) { RawTransaction rawTransaction = RawTransaction.createEtherTransaction(nonce, gasPrice, gasLimit, toAddress, amount); byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials); String hexValue = Numeric.toHexString(signedMessage); return hexValue; }
Example #15
Source File: PrivateTransactionEncoder.java From web3j with Apache License 2.0 | 5 votes |
public static byte[] signMessage( final RawPrivateTransaction rawTransaction, final long chainId, final Credentials credentials) { final byte[] encodedTransaction = encode(rawTransaction, chainId); final Sign.SignatureData signatureData = Sign.signMessage(encodedTransaction, credentials.getEcKeyPair()); final Sign.SignatureData eip155SignatureData = TransactionEncoder.createEip155SignatureData(signatureData, chainId); return encode(rawTransaction, eip155SignatureData); }
Example #16
Source File: RawTransactionManager.java From web3j with Apache License 2.0 | 5 votes |
public String sign(RawTransaction rawTransaction) { byte[] signedMessage; if (chainId > ChainId.NONE) { signedMessage = TransactionEncoder.signMessage(rawTransaction, chainId, credentials); } else { signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials); } return Numeric.toHexString(signedMessage); }
Example #17
Source File: EthTransaction.java From ethsigner with Apache License 2.0 | 5 votes |
@Override public byte[] rlpEncode(final SignatureData signatureData) { final RawTransaction rawTransaction = createTransaction(); final List<RlpType> values = TransactionEncoder.asRlpValues(rawTransaction, signatureData); final RlpList rlpList = new RlpList(values); return RlpEncoder.encode(rlpList); }
Example #18
Source File: HumanStandardTokenIT.java From web3j with Apache License 2.0 | 5 votes |
private String sendCreateContractTransaction(Credentials credentials, BigInteger initialSupply) throws Exception { BigInteger nonce = getNonce(credentials.getAddress()); String encodedConstructor = FunctionEncoder.encodeConstructor( Arrays.asList( new Uint256(initialSupply), new Utf8String("web3j tokens"), new Uint8(BigInteger.TEN), new Utf8String("w3j$"))); RawTransaction rawTransaction = RawTransaction.createContractTransaction( nonce, GAS_PRICE, GAS_LIMIT, BigInteger.ZERO, getHumanStandardTokenBinary() + encodedConstructor); byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials); String hexValue = Numeric.toHexString(signedMessage); EthSendTransaction transactionResponse = web3j.ethSendRawTransaction(hexValue).sendAsync().get(); return transactionResponse.getTransactionHash(); }
Example #19
Source File: EthereumUtils.java From jbpm-work-items with Apache License 2.0 | 5 votes |
public static String deployContract(Credentials credentials, Web3j web3j, String contractBinary, int toSendEther, boolean waitForReceipt, int sleepDuration, int attempts) throws Exception { BigInteger depositEtherAmountToSend = BigInteger.valueOf(toSendEther); RawTransaction rawTransaction = RawTransaction.createContractTransaction( getNextNonce(credentials.getAddress(), web3j), DEFAULT_GAS_PRICE, DEFAULT_GAS_LIMIT, depositEtherAmountToSend, contractBinary); byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials); String hexValue = Numeric.toHexString(signedMessage); EthSendTransaction ethSendTransaction = web3j.ethSendRawTransaction(hexValue).sendAsync().get(); if (waitForReceipt) { TransactionReceipt transReceipt = waitForTransactionReceipt( ethSendTransaction.getTransactionHash(), sleepDuration, attempts, web3j ); if (transReceipt != null) { return transReceipt.getContractAddress(); } } // we dont have a contract address logger.warn("Unable to retrieve contract address."); return null; }
Example #20
Source File: TransactionRepository.java From alpha-wallet-android with MIT License | 5 votes |
private Single<byte[]> signEncodeRawTransaction(RawTransaction rtx, Wallet wallet, int chainId) { return Single.fromCallable(() -> TransactionEncoder.encode(rtx)) .flatMap(encoded -> accountKeystoreService.signTransaction(wallet, encoded, chainId)) .flatMap(signatureReturn -> { if (signatureReturn.sigType != SignatureReturnType.SIGNATURE_GENERATED) { throw new Exception(signatureReturn.failMessage); } return encodeTransaction(signatureReturn.signature, rtx); }); }
Example #21
Source File: EthereumNetworkManager.java From guarda-android-wallets with GNU General Public License v3.0 | 5 votes |
@Override protected RawTransactionResponse doInBackground(Void... params) { BigInteger nonce = getNonce(); RawTransaction rawTransaction; String blockNumber = getBlocNumber(); byte[] signedMessage; if (TextUtils.isEmpty(contractData)) { rawTransaction = RawTransaction.createEtherTransaction(nonce, gasPrice, gasLimit, toAddress, value); } else { rawTransaction = RawTransaction.createTransaction(nonce, gasPrice, gasLimit, toAddress, new String(Hex.encode(contractData.getBytes()))); } if (walletManager.getCredentials() != null && rawTransaction != null) { signedMessage = TransactionEncoder.signMessage(rawTransaction, walletManager.getCredentials()); } else { return null; } String hexValue = Numeric.toHexString(signedMessage); EthSendTransaction ethSendTransaction = null; try { ethSendTransaction = web3jConnection.ethSendRawTransaction(hexValue).send(); } catch (IOException e) { e.printStackTrace(); } if (ethSendTransaction != null && ethSendTransaction.getTransactionHash() != null) { return new RawTransactionResponse(ethSendTransaction.getTransactionHash(), hexValue, blockNumber); } else { return null; } }
Example #22
Source File: EthereumNetworkManager.java From guarda-android-wallets with GNU General Public License v3.0 | 5 votes |
@Override protected RawTransactionResponse doInBackground(Void... params) { BigInteger nonce = getNonce(); if (nonce == null) return null; RawTransaction rawTransaction; String blockNumber = getBlocNumber(); if (TextUtils.isEmpty(contractData)) { rawTransaction = RawTransaction.createEtherTransaction(nonce, gasPrice, gasLimit, toAddress, value); } else { rawTransaction = RawTransaction.createTransaction(nonce, gasPrice, gasLimit, toAddress, new String(Hex.encode(contractData.getBytes()))); } byte[] signedMessage; if (walletManager.getCredentials() != null && rawTransaction != null) { signedMessage = TransactionEncoder.signMessage(rawTransaction, walletManager.getCredentials()); } else { return null; } String hexValue = Numeric.toHexString(signedMessage); EthSendTransaction ethSendTransaction = null; try { ethSendTransaction = web3jConnection.ethSendRawTransaction(hexValue).send(); } catch (IOException e) { e.printStackTrace(); } if (ethSendTransaction != null && ethSendTransaction.getTransactionHash() != null) { return new RawTransactionResponse(ethSendTransaction.getTransactionHash(), hexValue, blockNumber); } else { return null; } }
Example #23
Source File: EthereumNetworkManager.java From guarda-android-wallets with GNU General Public License v3.0 | 5 votes |
@Override protected RawTransactionResponse doInBackground(Void... params) { BigInteger nonce = getNonce(); RawTransaction rawTransaction; String blockNumber = getBlockNumber(); byte[] signedMessage; if (TextUtils.isEmpty(contractData)) { rawTransaction = RawTransaction.createEtherTransaction(nonce, gasPrice, gasLimit, toAddress, value); } else { rawTransaction = RawTransaction.createTransaction(nonce, gasPrice, gasLimit, toAddress, new String(Hex.encode(contractData.getBytes()))); } if (walletManager.getCredentials() != null && rawTransaction != null) { signedMessage = TransactionEncoder.signMessage(rawTransaction, walletManager.getCredentials()); } else { return null; } String hexValue = Numeric.toHexString(signedMessage); EthSendTransaction ethSendTransaction = null; try { ethSendTransaction = web3jConnection.ethSendRawTransaction(hexValue).send(); } catch (IOException e) { e.printStackTrace(); Log.d("psd", e.toString()); } if (ethSendTransaction != null && ethSendTransaction.getTransactionHash() != null) { return new RawTransactionResponse(ethSendTransaction.getTransactionHash(), hexValue, blockNumber); } else { return null; } }
Example #24
Source File: RawTransactionManager.java From etherscan-explorer with GNU General Public License v3.0 | 5 votes |
public EthSendTransaction signAndSend(RawTransaction rawTransaction) throws IOException { byte[] signedMessage; if (chainId > ChainId.NONE) { signedMessage = TransactionEncoder.signMessage(rawTransaction, chainId, credentials); } else { signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials); } String hexValue = Numeric.toHexString(signedMessage); return web3j.ethSendRawTransaction(hexValue).send(); }
Example #25
Source File: HumanStandardTokenIT.java From etherscan-explorer with GNU General Public License v3.0 | 5 votes |
private String sendCreateContractTransaction( Credentials credentials, BigInteger initialSupply) throws Exception { BigInteger nonce = getNonce(credentials.getAddress()); String encodedConstructor = FunctionEncoder.encodeConstructor( Arrays.asList( new Uint256(initialSupply), new Utf8String("web3j tokens"), new Uint8(BigInteger.TEN), new Utf8String("w3j$"))); RawTransaction rawTransaction = RawTransaction.createContractTransaction( nonce, GAS_PRICE, GAS_LIMIT, BigInteger.ZERO, getHumanStandardTokenBinary() + encodedConstructor); byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials); String hexValue = Numeric.toHexString(signedMessage); EthSendTransaction transactionResponse = web3j.ethSendRawTransaction(hexValue) .sendAsync().get(); return transactionResponse.getTransactionHash(); }
Example #26
Source File: TransferTest.java From client-sdk-java with Apache License 2.0 | 5 votes |
public String sendTransaction(String privateKey, String toAddress, BigDecimal amount, long gasPrice, long gasLimit) { BigInteger GAS_PRICE = BigInteger.valueOf(gasPrice); BigInteger GAS_LIMIT = BigInteger.valueOf(gasLimit); Credentials credentials = Credentials.create(privateKey); try { List<RlpType> result = new ArrayList<>(); result.add(RlpString.create(Numeric.hexStringToByteArray(PlatOnTypeEncoder.encode(new Int64(0))))); String txType = Hex.toHexString(RlpEncoder.encode(new RlpList(result))); RawTransaction rawTransaction = RawTransaction.createTransaction(getNonce(), GAS_PRICE, GAS_LIMIT, toAddress, amount.toBigInteger(), txType); byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, new Byte("100"), credentials); String hexValue = Numeric.toHexString(signedMessage); PlatonSendTransaction transaction = web3j.platonSendRawTransaction(hexValue).send(); return transaction.getTransactionHash(); } catch (Exception e) { e.printStackTrace(); } return null; }
Example #27
Source File: CreateTransactionInteract.java From Upchain-wallet with GNU Affero General Public License v3.0 | 5 votes |
private Single<byte[]> signEncodeRawTransaction(RawTransaction rtx, String password, ETHWallet wallet, int chainId) { return Single.fromCallable(() -> { Credentials credentials = WalletUtils.loadCredentials(password, wallet.getKeystorePath()); byte[] signedMessage = TransactionEncoder.signMessage(rtx, credentials); return signedMessage; }); }
Example #28
Source File: TransferTransaction.java From besu with Apache License 2.0 | 5 votes |
public String signedTransactionData() { final Optional<BigInteger> nonce = getNonce(); final RawTransaction transaction = RawTransaction.createEtherTransaction( nonce.orElse(nonce.orElseGet(sender::getNextNonce)), gasPrice, INTRINSIC_GAS, recipient.getAddress(), Convert.toWei(transferAmount, transferUnit).toBigIntegerExact()); return toHexString( TransactionEncoder.signMessage(transaction, sender.web3jCredentialsOrThrow())); }
Example #29
Source File: TransferEtherTest.java From web3j_demo with Apache License 2.0 | 4 votes |
/** * Ether transfer tests using methods {@link RawTransaction#createEtherTransaction()}, {@link TransactionEncoder#signMessage()} and {@link Web3j#ethSendRawTransaction()}. * Most complex transfer mechanism, but offers the highest flexibility. */ @Test public void testCreateSignAndSendTransaction() throws Exception { String from = Alice.ADDRESS; Credentials credentials = Alice.CREDENTIALS; BigInteger nonce = getNonce(from); String to = Bob.ADDRESS; BigInteger amountWei = Convert.toWei("0.789", Convert.Unit.ETHER).toBigInteger(); // create raw transaction RawTransaction txRaw = RawTransaction .createEtherTransaction( nonce, Web3jConstants.GAS_PRICE, Web3jConstants.GAS_LIMIT_ETHER_TX, to, amountWei); // sign raw transaction using the sender's credentials byte[] txSignedBytes = TransactionEncoder.signMessage(txRaw, credentials); String txSigned = Numeric.toHexString(txSignedBytes); BigInteger txFeeEstimate = Web3jConstants.GAS_LIMIT_ETHER_TX.multiply(Web3jConstants.GAS_PRICE); // make sure sender has sufficient funds ensureFunds(Alice.ADDRESS, amountWei.add(txFeeEstimate)); // record balanances before the ether transfer BigInteger fromBalanceBefore = getBalanceWei(Alice.ADDRESS); BigInteger toBalanceBefore = getBalanceWei(Bob.ADDRESS); // send the signed transaction to the ethereum client EthSendTransaction ethSendTx = web3j .ethSendRawTransaction(txSigned) .sendAsync() .get(); Error error = ethSendTx.getError(); assertTrue(error == null); String txHash = ethSendTx.getTransactionHash(); assertFalse(txHash.isEmpty()); TransactionReceipt txReceipt = waitForReceipt(txHash); BigInteger txFee = txReceipt.getCumulativeGasUsed().multiply(Web3jConstants.GAS_PRICE); assertEquals("Unexected balance for 'from' address", fromBalanceBefore.subtract(amountWei.add(txFee)), getBalanceWei(from)); assertEquals("Unexected balance for 'to' address", toBalanceBefore.add(amountWei), getBalanceWei(to)); }
Example #30
Source File: CreateAccountTest.java From web3j_demo with Apache License 2.0 | 4 votes |
@Test public void testCreateAccountFromScratch() throws Exception { // create new private/public key pair ECKeyPair keyPair = Keys.createEcKeyPair(); BigInteger publicKey = keyPair.getPublicKey(); String publicKeyHex = Numeric.toHexStringWithPrefix(publicKey); BigInteger privateKey = keyPair.getPrivateKey(); String privateKeyHex = Numeric.toHexStringWithPrefix(privateKey); // create credentials + address from private/public key pair Credentials credentials = Credentials.create(new ECKeyPair(privateKey, publicKey)); String address = credentials.getAddress(); // print resulting data of new account System.out.println("private key: '" + privateKeyHex + "'"); System.out.println("public key: '" + publicKeyHex + "'"); System.out.println("address: '" + address + "'\n"); // test (1) check if it's possible to transfer funds to new address BigInteger amountWei = Convert.toWei("0.131313", Convert.Unit.ETHER).toBigInteger(); transferWei(getCoinbase(), address, amountWei); BigInteger balanceWei = getBalanceWei(address); BigInteger nonce = getNonce(address); assertEquals("Unexpected nonce for 'to' address", BigInteger.ZERO, nonce); assertEquals("Unexpected balance for 'to' address", amountWei, balanceWei); // test (2) funds can be transferred out of the newly created account BigInteger txFees = Web3jConstants.GAS_LIMIT_ETHER_TX.multiply(Web3jConstants.GAS_PRICE); RawTransaction txRaw = RawTransaction .createEtherTransaction( nonce, Web3jConstants.GAS_PRICE, Web3jConstants.GAS_LIMIT_ETHER_TX, getCoinbase(), amountWei.subtract(txFees)); // sign raw transaction using the sender's credentials byte[] txSignedBytes = TransactionEncoder.signMessage(txRaw, credentials); String txSigned = Numeric.toHexString(txSignedBytes); // send the signed transaction to the ethereum client EthSendTransaction ethSendTx = web3j .ethSendRawTransaction(txSigned) .sendAsync() .get(); Error error = ethSendTx.getError(); String txHash = ethSendTx.getTransactionHash(); assertNull(error); assertFalse(txHash.isEmpty()); waitForReceipt(txHash); assertEquals("Unexpected nonce for 'to' address", BigInteger.ONE, getNonce(address)); assertTrue("Balance for 'from' address too large: " + getBalanceWei(address), getBalanceWei(address).compareTo(txFees) < 0); }