wie man ethereumjs-tx.js in einem Browser verwendet

Ich habe versucht, ethereumjs-tx in einem Browser zu verwenden. Ich habe die Browser-Builds von hier https://github.com/ethereumjs/browser-builds/tree/master/dist heruntergeladen

Das ist mein Codeschnipsel

<head>
    <title></title>
    <meta charset="utf-8" />
    <script type="text/javascript" src="ethereumjs-tx.js"></script>
</head>
<body>
<script>

 var Tx = require('ethereumjs-tx');
    var privateKey = new Buffer('e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109', 'hex');

var rawTx = {
    nonce: '00',
    gasPrice: '09184e72a000',
    gasLimit: '2710',
    to: '0000000000000000000000000000000000000000',
    value: '00',
    data: '7f7465737432000000000000000000000000000000000000000000000000000000600057'
};

var tx = new Tx(rawTx);
tx.sign(privateKey);

var serializedTx = tx.serialize();
</script>

Es wird jedoch weiterhin der Fehler in der Konsole Uncaught ReferenceError ausgegeben: require is not defined

Antworten (2)

Versuche dies..

<html>
<head>
<!--
<script src="https://github.com/ethereumjs/browser-builds/blob/master/dist/ethereumjs-tx/ethereumjs-tx-1.3.3.min.js"></script>
-->
<script src="https://cdn.jsdelivr.net/gh/ethereumjs/browser-builds/dist/ethereumjs-tx/ethereumjs-tx-1.3.3.min.js"></script>
<script>

console.log('typeof ethereumjs:',               (typeof ethereumjs))
console.log('Object.keys(ethereumjs):',         Object.keys(ethereumjs))
console.log('typeof ethereumjs.Tx:',            (typeof ethereumjs.Tx))
console.log('typeof ethereumjs.RLP:',           (typeof ethereumjs.RLP))
console.log('typeof ethereumjs.Util:',          (typeof ethereumjs.Util))
console.log('typeof ethereumjs.Buffer:',        (typeof ethereumjs.Buffer))
console.log('typeof ethereumjs.Buffer.Buffer:', (typeof ethereumjs.Buffer.Buffer))

{
  let privateKey = new ethereumjs.Buffer.Buffer('e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109', 'hex')
  let txParams = {
    nonce:    '0x00',
    gasPrice: '0x09184e72a000', 
    gasLimit: '0x2710',
    to:       '0x0000000000000000000000000000000000000000', 
    value:    '0x00', 
    data:     '0x7f7465737432000000000000000000000000000000000000000000000000000000600057'
  }
  let tx = new ethereumjs.Tx(txParams)
  tx.sign(privateKey)
  let serializedTx = tx.serialize().toString('hex')

  console.log('serializedTx:', serializedTx)
}

</script>
</head>
<body>
</body>
</html>
Vielen Dank! Ich stand vor dem gleichen Problem und diese Antwort hat geholfen.
@Etherer Danke für deine Antwort, ich habe es getestet und es funktioniert! Gibt es einen allgemeinen Ansatz, mit dem ich den hier JavaScriptvorgestellten Code ausführen kann: link which uses ethereumjs-abi? Ich habe die Hauptfrage HIER beschrieben: Link Danke
@Etherer Danke dafür, ich habe es zum Laufen gebracht. Aber ich kann die EthJS-Objekte/Funktionen nur mit dem Skript in Ihrem Code abrufen. Die neuen Browser-Builds von ihnen haben sie nicht, wissen Sie, ob dies ein Problem ist?

Das hat nicht wirklich etwas mit Ethereum zu tun, aber was auch immer.

require() ist keine gültige clientseitige JS-Funktion. Das heißt ... Ihr Browser weiß nicht, was er tun soll, wenn er zu dieser requireZeile kommt.

Es gibt ein raffiniertes Paket namens require.js , das die erforderliche Funktionalität auf Ihren Browser erweitert.

Ich bin mit ihren Browser-Builds nicht vertraut, aber es kann sein, dass Sie Code verwenden, der nicht für diese Builds bestimmt ist. Wenn ich Sie wäre, würde ich versuchen, die Zeile „require“ zu entfernen und zu sehen, ob sie läuft, während Sie ethereumjs-tx in den Kopf laden.

Wenn es sich um ein HTML-Snippet handelt, sollten Sie Ihr JS außerdem in <script>Tags einschließen und wahrscheinlich console.log(serializedTx)oder was auch immer Sie versuchen, so etwas zu erhalten, damit Sie das Ergebnis tatsächlich sehen können, wenn es ausgeführt wird. ;)

Danke für deine Antwort. Ist ethereumjsjedoch nicht verwandt mit Ethereum?
Der Fehler selbst ( Uncaught ReferenceError: require) ist viel umfassender als Ethereum und tritt überall im Javascript-Land auf. Es ist nicht Ethereum-spezifisch