La implementación de un contrato inteligente con truffle e infura me da un error

Tengo problemas para implementar mi contrato inteligente en la red ropsten usando infura y truffle recibo un error que dice

"var sig = secp256k1.sign(msgHash, privateKey);
                      ^
TypeError: private key should be a Buffer"
¿Puedes compartir algún código/enlace de un tutorial que hayas usado?
Parece que está pasando un formato incorrecto para la clave privada. Si tiene la clave privada hexadecimal, debe pasarla como bytes sin procesar.const privateKey = Buffer.from("ab1a..", "hex");

Respuestas (3)

Puede encontrar cómo implementar un contrato usando truffle e infura como se explica en la documentación de truffle

Copié el código de implementación que ya poseía a continuación,

// Allows us to use ES6 in our migrations and tests.
require('babel-register')

const HDWalletProvider = require("truffle-hdwallet-provider-privkey");

const privateKey = "PRIVATEKEYADDRESS"; // private keys

module.exports = {
  // See <http://truffleframework.com/docs/advanced/configuration>
  // for more about customizing your Truffle configuration!
  networks: {
    development: {
      host: "127.0.0.1",
      port: 8545,
      network_id: "*" // Match any network id
    },
    rinkeby: {
      provider: () => {
        return new HDWalletProvider(privateKey, "https://rinkeby.infura.io/INFURAAPIKEY")
      },
      network_id: 4
    }
  }
};

Espero que te funcione a ti también

Mehmet Dogan Gracias por la ayuda, pero sigo recibiendo otro error que muestra Error encontrado, rescate. Estado de la red desconocido. Revise las transacciones exitosas manualmente. fondos insuficientes para gas * precio + valor
Compartes poco con nosotros y quieres obtener una respuesta completa. Pero hasta donde yo sé, este error se encuentra cuando intenta implementar una interfaz que incluye funciones no implementadas como ERC20Interface. Suponiendo que intenta implementar un contrato llamado myContract contract myContract is ERC20Interface { .. } Entonces solo necesita incluir myContract en su archivo 2_deploy_contracts.js

Debe usar la dirección 'de' en minúsculas al implementar el contrato para probar la red para evitar este error.

Su respuesta no tiene relación con la pregunta formulada.
Intentalo. ¡En realidad, funcionó para mí y por lo tanto respondí!
La función utilizada secp256k1.signno acepta un parámetro from.
Si está implementando su contrato de esta manera, por ejemplo: SampleContract.new(abcd, {from: '0xAD123EFG456...'}).then(function(){}); entonces la dirección del remitente debe estar en letras minúsculas como SampleContract.new(abcd, {from: '0xad123efg456...'}).then(function(){});

Estoy de acuerdo con Ismael diciendo que la función sepc256k1.sign no necesitará del parámetro. funcionó para mí sin declaración de claves privadas y desde el parámetro