Развертывание смарт-контракта с трюфелем и инфурой дает мне ошибку

У меня возникли проблемы с развертыванием моего смарт-контракта в сети ropsten с использованием infura и truffle. Я получаю сообщение об ошибке

"var sig = secp256k1.sign(msgHash, privateKey);
                      ^
TypeError: private key should be a Buffer"
Можете ли вы поделиться кодом / ссылкой на учебник, который вы использовали?
Похоже, вы передаете неверный формат для privateKey. Если у вас есть шестнадцатеричный закрытый ключ, вы должны вместо этого передавать необработанные байтыconst privateKey = Buffer.from("ab1a..", "hex");

Ответы (3)

Вы можете узнать, как развернуть контракт с помощью трюфеля и инфуры, как это объясняется в документации по трюфелю.

Я скопировал код развертывания, который у меня уже был ниже,

// 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
    }
  }
};

Надеюсь, это сработает и для вас.

Мехмет Доган Спасибо за помощь, но я все еще получаю другую ошибку, которую он выводит Ошибка обнаружена, спасение. Состояние сети неизвестно. Просмотрите успешные транзакции вручную. недостаточно средств на газ * цена + стоимость
Вы мало делитесь с нами и хотите получить полный ответ. Но, насколько я знаю, эта ошибка возникает при попытке развернуть интерфейс, который включает в себя нереализованные функции, такие как ERC20Interface. Предполагая, что вы пытаетесь развернуть контракт с именем myContract contract myContract is ERC20Interface { .. } , вам просто нужно включить myContract в файл 2_deploy_contracts.js.

Вы должны использовать адрес «от» в нижнем регистре при развертывании контракта для тестирования сети, чтобы избежать этой ошибки.

Ваш ответ не имеет отношения к заданному вопросу.
Попробуй. На самом деле, это сработало для меня, и поэтому я ответил!!
Используемая функция secp256k1.signне принимает параметр from.
Если вы развертываете свой контракт, например, так: SampleContract.new(abcd, {from: '0xAD123EFG456...'}).then(function(){}); тогда адрес отправителя должен быть написан маленькими буквами, например SampleContract.new(abcd, {from: '0xad123efg456...'}).then(function(){});

Согласитесь с Исмаэлем, говорящим, что функция sepc256k1.sign не нуждается в параметре from. у меня работало без объявления приватных ключей и из параметра