РЕДАКТИРОВАТЬ: я использую платформу Android
Я думаю, что я немного запутался концептуально. Я был бы признателен, если бы кто-нибудь ответил мне на эти несколько вопросов, поскольку я пытаюсь сделать приложение, чтобы я мог точно понять, что здесь происходит. Я пытаюсь читать и расшифровывать документацию одновременно.
-Я сгенерировал свой адрес и закрытый ключ, используя класс web3j ECKeyPair
Теперь мне нужно иметь возможность отправить этот эфир на адрес, используя эти данные, и я не уверен, как я должен это делать.
Я думаю, что я должен использовать что-то, называемое необработанной транзакцией, но опять же мое понимание туманно
Я также хотел бы иметь возможность зашифровать свой закрытый ключ, однако я видел, что он шифрует данные в файл хранилища ключей. Есть ли способ очистить здесь ненужные данные, поскольку я только пытаюсь зашифровать закрытый ключ с помощью пароля.
Если бы более осведомленный участник, чем я, мог прояснить шаги, связанные с «подписанием транзакции», чтобы эфир можно было отправить с одного адреса на другой, вы бы очень помогли моему дизайн-проекту.
Я также не понимаю, как транзакции могут быть подписаны в автономном режиме, поскольку я думал, что смысл в подписании транзакции заключается в том, чтобы она могла быть проверена сетью.
Спасибо.
В основном вам нужно сделать три шага:
Для шага 1 вы делаете что-то вроде этого:
var from = "0x..."; // The address you are sending ether from
var tx = {
nonce: web3.eth.getTransactionCount (from),
chainId: 1, // 1 means Mainnet, more chain IDs here: https://chainid.network/
to: "0x...", // The address you are sending ether to
data: "",
value: value, // The amount of ether to send (in Wei)
gasPrice: web3.eth.getGasPrice(),
gas: 21000 // Enough for simple transfer
};
Для шага 2 вы делаете:
var signedTx = web3.eth.accounts.signTransaction (tx, privateKey);
Для шага 3 вы делаете:
web3.eth.sendSignedTransaction(signedTx);
См. документацию Web3js для получения дополнительной информации.
Извините, мой ответ о Web3js, а не о Web3j. Но для Web3j шаги в основном одинаковы:
Подробности смотрите в официальной документации .
Если я правильно понимаю ваш вопрос, вы сможете просто использовать его, web3.eth.sendTransaction
передав объект транзакции.
var transactionObject = {
from: web3.defaultAccount,
to: addressToSendTo,
value: web3.toWei(1.0, "ether"),
gas: gasAmountInWei
};
web3.eth.sendTransaction(transactionObject, function(err, data) {
// if no err, transaction was success
});
Что касается стоимости газа, вы можете оценить необходимый газ следующим образом.
// note that `transactionObject` is the same as above but without the gas value
web3.eth.estimateGas(transactionObject, function(err, estimate) {
transactionObject.gas = estimate;
});
Если у вас есть проблемы с нехваткой газа, поэкспериментируйте с добавлением большего количества. Обычно я умножаю на 2, так как используется только то, что необходимо, а не вся сумма (поскольку предполагается, что это просто оценка).
Стивен