首页 > 解决方案 > 0x 协议错误:未找到给定网络 ID 的默认合约地址

问题描述

我在运行 0x 协议后端启动套件时遇到了这些错误。

WARNING: Multiple definitions for safeTransferFrom
Error: No default contract addresses found for the given network id (137). If you want to use ContractWrappers on this network, you must manually pass in the contract address(es) to the constructor.
    at Object._getDefaultContractAddresses (/home/ubuntu/smartdex-backend/node_modules/@0x/contract-wrappers/src/utils/contract_addresses.ts:10:15)
    at new ContractWrappers (/home/ubuntu/smartdex-backend/node_modules/@0x/contract-wrappers/src/contract_wrappers.ts:118:19)
    at new OrderBook (/home/ubuntu/smartdex-backend/ts/lib/orderbook.js:96:34)
    at new Handlers (/home/ubuntu/smartdex-backend/ts/lib/handlers.js:64:27)
    at /home/ubuntu/smartdex-backend/ts/lib/index.js:19:22

我分叉了这个存储库:github.com/0xProject/0x-launch-kit-backend

标签: blockchainethereum

解决方案


这个错误是由于依赖问题引起的。0x 协议启动工具包使用“@0x/contract-addresses”包作为合约包装器。

这是一个非常棘手的解决方案。

将 0x-launch-kit-backend (v2)克隆到与 0x-monorepo 相同的父目录中。不要安装依赖项!

打开 yarn.lock 文件并将所有行 "@0x/contract-addresses" "^3.0.1" 替换为 "@0x/contract-addresses" "file:../0x-monorepo/packages/contract-addresses"。

现在使用 --frozen-lockfile 标志安装依赖项

$ yarn install --frozen-lockfile

然后它将解决问题。


推荐阅读