Ist es möglich, die web3.js-Bibliothek im Browser eines Clients zu verwenden, damit er eine Adresse generieren und eine Transaktion signieren kann, ohne dass er sich mit einem Ethereum-Knoten verbindet?
Nicht in web3.js. BEARBEITEN : Wie von @Andromelus beantwortet, kann web3js 1.0 dies mit der folgenden Funktion tun:web3.eth.accounts.signTransaction(tx, privateKey [, callback]);
Es gibt andere Bibliotheken wie https://github.com/ethereumjs/ethereumjs-tx und https://github.com/SilentCicero/ethereumjs-accounts , die verwendet werden können. Siehe Offline-Rohtransaktionen erstellen und signieren?
Es ist möglich, Transaktionen mit web3js zu signieren, überprüfen Sie die Version 1.0.0
Ich würde auch https://github.com/ethjs/ethjs-provider-signer überprüfen
Es hat genau das, wonach Sie suchen.
Ich habe nach einer Antwort auf das oben Gesagte gesucht und folgendes herausgefunden. Das eth-Modul kann verwendet werden, indem zuerst web3 mit dem Standardkonstruktor instanziiert und dann die sign-Funktion aufgerufen wird.
var web3 = require('web3');
var myWeb3 = new web3();
var signedTx = myWeb3.eth.signTransaction(tx, privateKey [, callback]);
Sie könnten dieses Skript verwenden und so anpassen, dass es in einem Browser ausgeführt wird (es ist ein Befehlszeilentool für Node).
Ich kopiere es hier für den Fall, dass es später nicht mehr verfügbar ist:
#!/usr/bin/env node
'use strict';
// ethereum: generate signed offline transactions
const fs = require('fs-extra');
const rls = require('readline-sync');
const Accounts = require('web3-eth-accounts');
const web3utils = require('web3-utils');
const accounts = new Accounts();
async function main() {
if (process.argv.length < 6) {
console.log("usage:\n" +
"\tsign-offline.js filename recipient amount nonce gasprice\n\n" +
"\t\t amount is given in ether, gas price is given in gwei");
process.exit(1);
}
let filename = process.argv[2];
let recipient = process.argv[3];
let amount = web3utils.toWei(process.argv[4], "ether");
let nonce = process.argv[5];
let gasprice = web3utils.toWei(process.argv[6], "gwei");
console.log("file %s to %s amount %f eth nonce %d price %f",
filename, recipient, amount, nonce, gasprice);
let keystore = await fs.readJson(filename);
if (!("crypto" in keystore)) {
// MEW creates capitalized "crypto" property
// web3 expects it in lowercase
keystore.crypto = keystore.Crypto;
delete keystore.Crypto;
}
let password = rls.question('keystore Password? ', { hideEchoBack: true });
let myaccount = accounts.decrypt(keystore, password);
let data = accounts.signTransaction({
to: recipient,
value: amount,
gas: 21000,
gasPrice: gasprice,
nonce: nonce,
chainId: 1 // mainNet
}, myaccount.privateKey);
console.log("signed raw transaction: ", data.rawTransaction);
}
main();
max
data
Feld als Hex gesendet. Wie konvertiere ich meinen Funktionsaufruf und Parameter, um ihn einzufügen? Zum Beispiel, wenn ich anrufen will:setName("roger")
auf den Vertrag.eth
Wiederholung 122442