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

Я сделал свою собственную библиотеку и пытаюсь использовать ее в своем собственном проекте.
Ниже приведен файл 2_deploy_contracts.js.

module.exports =  async(deployer, netowrk) => {
await deployer.deploy(OptionStorage, ownerAddress);
await deployer.deploy(LDerivativeFactory);
await deployer.link(LDerivativeFactory, DerivativeFactory);
await deployer.deploy(DerivativeFactory, OptionStorage.address, XToken);
};

и в тестовых случаях я пытаюсь использовать его как

beforeEach(async () => {
    optionStorage = await OptionStorage.new(owner);
    //library = await Library.new();
    //DerivativeFactory.link('LDerivativeFactory',library.address);
    derivativeFactory = await DerivativeFactory.new(optionStorage.address, quoteToken.address, { from : owner, gas : 50000 });
});

но при запуске тестов я сталкиваюсь с ошибкой

Ошибка: DerivativeFactory содержит неразрешенные библиотеки. Перед развертыванием новой версии DerivativeFactory необходимо развернуть и связать следующие библиотеки: LDerivativeFactory

Как это решить? Я также пытаюсь связать тестовые примеры, но в итоге получаю другую ошибку

Ошибка: Ошибка: базовая плата превышает лимит газа

Любая помощь достойна восхищения

измените свой запрос более подробно. Например, какой класс наследуется и что такое библиотечный класс?
У Truffle есть некоторые проблемы с использованием async/await в сценариях миграции github.com/trufflesuite/truffle/issues/501 . Возможно, в вашем случае это вызывает проблемы в ваших тестах.
@Ismael Я не думаю, что он развертывается с помощью async/await, но не работает с тестовыми примерами, но когда я пытаюсь использовать .then(), он выдает ошибку в самом развертывании.Error: VM Exception while processing transaction: revert
@Ismael, вы правы, когда я отлаживаю оба tx (один из асинхронного и из .then()), оба не дают мне исходного кода, чтобы найти ошибку. Я не понимаю, почему? в конце концов, оба способа мне не помогают.

Ответы (1)

Вы должны использовать рекомендуемое исправление в проблеме № 501 , проблема, которую оно вызывает, заключается в том, что артефакты трюфеля не обновляются в правильном порядке.

async function doDeploy(deployer, network) {
    await deployer.deploy(OptionStorage, ownerAddress);
    await deployer.deploy(LDerivativeFactory);
    await deployer.link(LDerivativeFactory, DerivativeFactory);
    await deployer.deploy(DerivativeFactory, OptionStorage.address, XToken);
}


module.exports = (deployer, network) => {
    deployer.then(async () => {
        await doDeploy(deployer, network);
    });
};