Не удалось развернуть контракт через sendTransaction

Я пытаюсь развернуть контракт ( доступен на Etherscan.io ). Я делаю следующие шаги: копирую код создания контракта и сохраняю их в crCodeпеременной. Затем я попытался запустить следующий код;

 async function deployWithCreationCode(){

    var myTrx = await web3.eth.sendTransaction({
      from: account1,
      data: crCode 
  });
  console.log(myTrx)
}

Вот мой вывод.

UnhandledPromiseRejectionWarning: Error: Returned error: base fee exceeds gas limit

Как это решить?

Ответы (1)

В вашей crCodeпеременной после Contract Creation Code необходимо добавить Constructor Arguments .

Обе части байт-кода доступны вам по URL-адресу, который вы указали в своем вопросе.

В качестве альтернативы, поскольку исходный код контракта также доступен по этой ссылке, вы можете скомпилировать его, а затем развернуть «стандартным способом» (используя deployфункцию web3.js).

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

но они выглядят так, как будто они уже добавлены в код создания ... однако я сделал то же самое, что вы предложили ... но все равно та же ошибка ... Кстати. когда я копирую код создания контракта в коде VS и назначаю crCode, он не отображается полностью (из-за очень большой строки). l означает, что если я нажму кнопку «конец» на клавиатуре, я не смогу увидеть ее последний символ... я думаю, что он существовал. Во-вторых, если я использую альтернативно через .deploy (согласно моему предыдущему вопросу) - мне это невыполнимо, тогда я КАК могу привести эти аргументы ... пожалуйста, обновите свой ответ.
@AmirAli: 1. Я рекомендую вам скопировать длинный код создания в файл и в коде развертывания прочитать его из файла (вместо встраивания в вашу программу). 2. Что вы подразумеваете под "стандартным способом мне не под силу"? Пожалуйста, уточните, что именно невозможно, потому что вам, как правило, нужно решить эту проблему, а не искать другие пути. В любом случае, чтобы узнать, какие аргументы вы должны передать «стандартным способом» (с помощью функции развертывания web3.js), вы должны найти функцию constructorв исходном коде и выяснить, что требуется для построения.
для меня это невыполнимо .. означает, что мне нужно развернуть много контрактов через программу, там я не мог настроить свою программу для сохранения и назначения параметров конструктора для каждого контракта отдельно. а затем разверните. Стандартным образом я знаю, что мне давать, аргументы, как компилировать, как развертывать... ... 2. да, вы правы, когда-то, я не ищу других путей.. потому что текущий ищет легкий для меня сценарий... .. хорошо, я постараюсь найти, что лучше в моем случае... большое спасибо
@AmirAli: Как я уже сказал. Этот метод копирования чужих аргументов построения склонен к жалкому провалу! Любой аргумент, который является адресом учетной записи или контракта, потенциально сделает развернутый контракт непригодным для вас, если вам даже удастся развернуть его без возврата (из-за различных проверок или вызовов, которые конструктор может делать по любому из этих адресов). ). Итак, я понимаю, что вы ищете «короткий путь», но имейте в виду, что эта попытка, скорее всего, закончится гораздо более длинным путем, чем тот, которого вы пытаетесь избежать.