本文整理汇总了Java中org.web3j.protocol.core.methods.response.EthSendTransaction类的典型用法代码示例。如果您正苦于以下问题:Java EthSendTransaction类的具体用法?Java EthSendTransaction怎么用?Java EthSendTransaction使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
EthSendTransaction类属于org.web3j.protocol.core.methods.response包,在下文中一共展示了EthSendTransaction类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: createTransaction
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
@Override
public Single<String> createTransaction(Wallet from, String toAddress, BigInteger subunitAmount, BigInteger gasPrice, BigInteger gasLimit, byte[] data, String password) {
final Web3j web3j = Web3jFactory.build(new HttpService(networkRepository.getDefaultNetwork().rpcServerUrl));
return Single.fromCallable(() -> {
EthGetTransactionCount ethGetTransactionCount = web3j
.ethGetTransactionCount(from.address, DefaultBlockParameterName.LATEST)
.send();
return ethGetTransactionCount.getTransactionCount();
})
.flatMap(nonce -> accountKeystoreService.signTransaction(from, password, toAddress, subunitAmount, gasPrice, gasLimit, nonce.longValue(), data, networkRepository.getDefaultNetwork().chainId))
.flatMap(signedMessage -> Single.fromCallable( () -> {
EthSendTransaction raw = web3j
.ethSendRawTransaction(Numeric.toHexString(signedMessage))
.send();
if (raw.hasError()) {
throw new ServiceException(raw.getError().getMessage());
}
return raw.getTransactionHash();
})).subscribeOn(Schedulers.io());
}
示例2: testCreateAccountFromScratch
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
@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);
}
示例3: execute
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
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();
}
示例4: doSendTransaction
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
public SentTransaction doSendTransaction(FunctionCall call, BigInteger value, TransactionParams params) throws IOException {
RawTransaction rawTransaction = RawTransaction.createTransaction(
params.getNonce(),
params.getGasPrice(),
params.getGasLimit(),
call.contractAddress,
value,
call.data
);
boolean success = false;
try {
EthSendTransaction transaction = signAndSend(rawTransaction);
CallUtil.checkError(transaction);
success = true;
return new SentTransaction(transaction.getTransactionHash(), params);
} finally {
if (!success) this.nonce = BigInteger.valueOf(-1);
}
}
示例5: transferFromCoinbaseAndWait
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
/**
* Transfers the specified amount of Wei from the coinbase to the specified account.
* The method waits for the transfer to complete using method {@link waitForReceipt}.
*/
public static TransactionReceipt transferFromCoinbaseAndWait(Web3j web3j, String to, BigInteger amountWei)
throws Exception
{
String coinbase = getCoinbase(web3j).getResult();
BigInteger nonce = getNonce(web3j, coinbase);
// this is a contract method call -> gas limit higher than simple fund transfer
BigInteger gasLimit = Web3jConstants.GAS_LIMIT_ETHER_TX.multiply(BigInteger.valueOf(2));
Transaction transaction = Transaction.createEtherTransaction(
coinbase,
nonce,
Web3jConstants.GAS_PRICE,
gasLimit,
to,
amountWei);
EthSendTransaction ethSendTransaction = web3j
.ethSendTransaction(transaction)
.sendAsync()
.get();
String txHash = ethSendTransaction.getTransactionHash();
return waitForReceipt(web3j, txHash);
}
示例6: send
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
public Transaction send(Transaction tx) {
LOG.info("Sending TX ...");
EthSendTransaction ethSendTransaction = null;
try {
ethSendTransaction = getWeb3j().ethSendRawTransaction(tx.getSignedContent()).sendAsync().get();
}
catch (Exception e) {
throw new ProcessingException("Failed to send transaction " + tx.getSignedContent(), e);
}
checkResponseFromSending(ethSendTransaction);
tx.setSent(new Date());
tx.setError(ethSendTransaction.getError());
tx.setHash(ethSendTransaction.getTransactionHash());
tx.setStatus(Transaction.PENDING);
LOG.info("Successfully sent TX. Hash: " + tx.getHash());
save(tx);
return tx;
}
示例7: testTransferEther
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
@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));
}
示例8: testDeploySmartContract
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
@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()));
}
示例9: sendTransaction
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
@Override
public EthSendTransaction sendTransaction(
BigInteger gasPrice, BigInteger gasLimit, String to,
String data, BigInteger value) throws IOException {
BigInteger nonce = getNonce();
RawTransaction rawTransaction = RawTransaction.createTransaction(
nonce,
gasPrice,
gasLimit,
to,
value,
data);
return signAndSend(rawTransaction);
}
示例10: deployContract
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
public Address deployContract(TransactionManager transactionManager, String binary, Map<String, Address> libraries, Type... constructorArgs) throws IOException, InterruptedException, TransactionException {
ContractLinker linker = new ContractLinker(binary);
if (libraries != null && !libraries.isEmpty()) {
libraries.forEach(linker::link);
}
linker.assertLinked();
String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(constructorArgs));
String data = linker.getBinary() + encodedConstructor;
EthSendTransaction transactionResponse = transactionManager.sendTransaction(
properties.getGasPrice(), properties.getGasLimit(), null, data, BigInteger.ZERO);
if (transactionResponse.hasError()) {
throw new RuntimeException("Error processing transaction request: "
+ transactionResponse.getError().getMessage());
}
String transactionHash = transactionResponse.getTransactionHash();
Optional<TransactionReceipt> receiptOptional =
sendTransactionReceiptRequest(transactionHash, web3j);
long millis = properties.getSleep().toMillis();
int attempts = properties.getAttempts();
for (int i = 0; i < attempts; i++) {
if (!receiptOptional.isPresent()) {
Thread.sleep(millis);
receiptOptional = sendTransactionReceiptRequest(transactionHash, web3j);
} else {
String contractAddress = receiptOptional.get().getContractAddress();
return new Address(contractAddress);
}
}
throw new TransactionException("Transaction receipt was not generated after " + (millis * attempts / 1000)
+ " seconds for transaction: " + transactionHash);
}
示例11: sendTransaction
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
@Override
public synchronized EthSendTransaction sendTransaction(
BigInteger gasPrice, BigInteger gasLimit, String to,
String data, BigInteger value) throws IOException {
FunctionCall call = FunctionCall.fromData(to, data);
TransactionParams params = detectCurrentParams(gasPrice, gasLimit, call, value);
SentTransaction transaction = doSendTransaction(call, value, params);
EthSendTransaction tr = new EthSendTransaction();
tr.setResult(transaction.getHash());
return tr;
}
示例12: transferWei
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
String transferWei(String from, String to, BigInteger amountWei) throws Exception {
BigInteger nonce = getNonce(from);
Transaction transaction = Transaction.createEtherTransaction(
from, nonce, Web3jConstants.GAS_PRICE, Web3jConstants.GAS_LIMIT_ETHER_TX, to, amountWei);
EthSendTransaction ethSendTransaction = web3j.ethSendTransaction(transaction).sendAsync().get();
System.out.println("transferEther. nonce: " + nonce + " amount: " + amountWei + " to: " + to);
String txHash = ethSendTransaction.getTransactionHash();
waitForReceipt(txHash);
return txHash;
}
示例13: sendTransaction
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
@Override
public EthSendTransaction sendTransaction(
BigInteger gasPrice, BigInteger gasLimit, String to,
String data, BigInteger value)
throws IOException {
PrivateTransaction transaction = new PrivateTransaction(
fromAddress, null, gasLimit, to, value, data, privateFor);
return quorum.ethSendTransaction(transaction).send();
}
示例14: ethSendTransaction
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
@Override
public Request<?, EthSendTransaction> ethSendTransaction(
PrivateTransaction transaction) {
return new Request<>(
"eth_sendTransaction",
Collections.singletonList(transaction),
web3jService,
EthSendTransaction.class);
}
示例15: testEthSendTransaction
import org.web3j.protocol.core.methods.response.EthSendTransaction; //导入依赖的package包/类
@Test
public void testEthSendTransaction() {
buildResponse("{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0x0d9e7e34fd4db216a3f66981a467d9d990954e6ed3128aff4ec51a50fa175663\"}");
EthSendTransaction transaction = deserialiseResponse(EthSendTransaction.class);
assertThat(transaction.getTransactionHash(), is("0x0d9e7e34fd4db216a3f66981a467d9d990954e6ed3128aff4ec51a50fa175663"));
}