Considere que queremos usar web3.personal.sign
en un JavaScript
archivo. Entonces, debemos agregar:
Web3 = require("web3")
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
en la parte superior de nuestro JavaScript
archivo.
Sin embargo, si queremos ejecutar este código en un browser
, no podemos usar require()
. Por ejemplo, en caso de usar ethereumjs
podemos agregar recursos de github de la siguiente manera (como se describe en ESTA RESPUESTA ):
<script src="https://cdn.rawgit.com/ethereumjs/browser-builds/2fb69a714afe092b06645286f14b94f41e5c062c/dist/ethereumjs-tx.js"></script>
<script>
Y funciona.
Entonces, ¿hay una forma similar de agregar web3.js
usando <script src= ...
?
Cuando uso <script src="https://rawgit.com/ethereum/web3.js/develop/dist/web3.js"</script> <script>
en lugar de Web3 = require("web3")
recibo el siguiente mensaje de error:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>EthereumJS - Browser Example</title>
</head>
<body>
<script src="https://rawgit.com/ethereumjs/browser-builds/master/dist/ethereumjs-abi/ethereumjs-abi-0.6.5.js"></script>
<script src="https://rawgit.com/ethereum/web3.js/develop/dist/web3.js"></script>
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
<script>
function constructPaymentMessage(contractAddress, amount)
{
return ethereumjs.ABI.soliditySHA3(
["address", "uint256"],
[contractAddress, amount],
);
}
var message = constructPaymentMessage("0x0f0f422477d83bcbed227b0ae2fa3ace7ea3c653", 100);
console.log(message);
web3.personal.sign("0x" + message.toString("hex"), "0xc9c3b1351c65ac47abf3774b6a9715ba3625bec5", function(err, something) {});
</script>
</body>
</html>
Error:
"test.html:28 Error de referencia no capturado: web3 no está definido en test3.html:28"
Nota 1: test.html
es el nombre de este html
archivo.
Nota 2: Yo uso web3 version 1.0.0
.
Nota 3: Mi objetivo principal es ejecutar con éxito JavaScript
el código presentado AQUÍ . Cuando lo ejecuto usando node
recibo algunos errores. ¿ Cuál es la mejor manera de ejecutar este JavaScript
código? ¿Necesito crear un html
archivo y ejecutarlo con browser
? o es mejor crear un JavaScript
archivo y ejecutarlo usando node filename.js
? El problema con la ejecución de este código que es para la verificación de la firma se explica en detalle AQUÍ . Eventualmente, tuve que cambiar alguna parte del JavaScript
código (precisé qué partes se cambiaron en mi pregunta AQUÍ ). Sin embargo, eventualmente, cuando llamo a la función de Solidity
contrato (es decir function close
) para verificar signature
, la transacción esrevertido como mencioné los detalles del error AQUÍ .
Nota 4: pregunta relacionada: error web3.js: no se puede leer la propiedad 'proveedores' de undefined
Agregar <script src="https://rawgit.com/ethereum/web3.js/develop/dist/web3.js"</script>
para reemplazar Web3 = require("web3")
es correcto, pero aún necesita establecer un proveedor Web3 como este:
window.addEventListener('load', function () {
if (typeof web3 !== 'undefined') {
console.log('Web3 Detected! ' + web3.currentProvider.constructor.name)
window.web3 = new Web3(web3.currentProvider);
} else {
console.log('No Web3 Detected... using HTTP Provider')
window.web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io/<APIKEY>"));
}
})
El proveedor Web3 es lo que realmente conecta tu JavaScript a la red Ethereum para que puedas hacer llamadas. Después de eso, podrá comenzar a llamar web3
funciones.
Eche un vistazo a este tutorial "Hola mundo" para Web3.js.
puede utilizar los servicios de Infura. infura proporciona la web3. primero debe crear acc en infura, luego debe hacer project. y al menos puede usar su propia identificación en este código: web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/v3/3c68ea1...your ID...f301753"));
también puede usar la red principal o la red ropsten. por favor revise el sitio y este es el sitio de infura
Broots Waymb
shawn tabrizi