No puedo llamar a mi contrato inteligente en Metamask sobre Ganache.
Estos fueron los pasos que tomé:
truffle test
Este es el error que estoy recibiendo:
Así es como llamé al contrato:
Pay.sol
pragma solidity ^0.4.17;
/// @title Pay - Facilitates payments.
contract Pay {
event Payment(
address _from,
address _to,
uint amount
);
/// @dev Makes a payment.
/// @param _to Address to pay to.
function pay(address _to) public payable {
require(msg.value > 0);
_to.transfer(msg.value);
Payment(msg.sender, _to, msg.value);
}
}
2_pay_migration.js
var Pay = artifacts.require("Pay");
module.exports = function(deployer) {
deployer.deploy(Pay);
}
Así no es como funcionan los datos de transacciones. Lo correcto data
serían los primeros cuatro bytes del hash keccak256 de "pay(address)" seguidos de la dirección, con relleno izquierdo para tener 32 bytes de ancho. Como puede imaginar, es inusual construir esa carga útil a mano. :-)
Daniel Luca CleanUnicornio