标签: chainlink

错误 HH12:尝试使用不受支持的 Hardhat 非本地安装。请使用 npm 或 Yarn 在本地安装 Hardhat,然后重试

我从事 Hardhat 项目已经有一段时间了。
一段时间后,当我运行 npx hardhat node 启动 HH 服务器时,出现以下错误:

这是错误的图像

我尝试研究该错误并在安全帽网站上找到了这个

   HH12: Hardhat is not installed or installed globally
    You tried to run Hardhat from a global installation or not installing it at all. This is not supported.

Please install Hardhat locally using npm or Yarn, and try again.
Run Code Online (Sandbox Code Playgroud)

有趣的是,我创建了一个新的 HH 项目并重新安装了所有内容
,然后将我的代码导入到新项目中,这似乎解决了问题......
但过了一段时间,问题又开始了。
我不能每次发生这种情况时都创建一个新项目。
我已经被困了好几天了,非常感谢任何帮助。

操作系统:windows10

ethereum chainlink hardhat

17
推荐指数
1
解决办法
3万
查看次数

如何在本地对 Chainlink 的可验证随机函数进行单元测试?

语境

\n

在尝试建立一个基本的自托管单元测试环境(和 CI)来测试这个 Chainlink VRF 随机数合约时时,我在如何在本地模拟任何相关的区块链/测试网方面遇到了一些困难。

\n

例如,我发现这个测试 Chainlinks VRF 的存储库。但是,对于默认部署,它建议/需要免费,KOVAN_RPC_URL例如来自 Infura 的站点,甚至对于“本地部署”,它建议/需要免费MAINNET_RPC_URL例如来自 Alchemy 的站点。

\n

尝试/基线

\n

我采用了waffle框架的单元测试环境,描述如下:

\n

文件结构

\n
src____AmIRichAlready.sol\n   |____RandomNumberConsumer.sol\n   |\ntest____AmIRichAlready.test.ts\n   |____mocha.opts\npackage.json\ntsconfig.json\nwaffle.json\nyarn.lock\n
Run Code Online (Sandbox Code Playgroud)\n

文件内容

\n

AmIRichAlready.sol

\n
pragma solidity ^0.6.2;\n\ninterface IERC20 {\n    function balanceOf(address account) external view returns (uint256);\n}\n\ncontract AmIRichAlready {\n    IERC20 private tokenContract;\n    uint public richness = 1000000 * 10 ** 18;\n\n    constructor (IERC20 _tokenContract) public {\n        tokenContract = _tokenContract;\n    }\n\n    function check() public view returns …
Run Code Online (Sandbox Code Playgroud)

random unit-testing solidity chainlink

10
推荐指数
1
解决办法
2939
查看次数

有人知道为什么 Chainlink 的 PriceFeed 返回“int”类型的价格值,而价格应该始终 >= 0?

PriceFeed中获取最新价格的代码是:


pragma solidity ^0.6.7;

import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";

contract PriceConsumerV3 {

    AggregatorV3Interface internal priceFeed;

    /**
     * Network: Kovan
     * Aggregator: ETH/USD
     * Address: 0x9326BFA02ADD2366b30bacB125260Af641031331
     */
    constructor() public {
        priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331);
    }

    /**
     * Returns the latest price
     */
    function getThePrice() public view returns (int) {
        (
            uint80 roundID, 
            int price,
            uint startedAt,
            uint timeStamp,
            uint80 answeredInRound
        ) = priceFeed.latestRoundData();
        return price;
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,在 function 中getThePrice,为什么 Chainlink在价格上int price使用类型?int为什么不直接uint打字呢?Chainlink PriceFeed 是否有可能获得负价格?

chainlink

7
推荐指数
1
解决办法
1002
查看次数

ParserError:源文件需要不同的编译器版本(当前编译器是0.8.7+commit.e28d00a7.Emscripten.clang)

我最终尝试在 remix IDE 中运行此代码,我使用 0.6.6 版本的 Solidity 运行此代码并遇到了此错误。我也尝试过使用其他版本,例如 0.8 和 0.6。

// SPDX-License-Identifier: MIT

pragma solidity =0.8.7;

import "@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol";

contract myContract{
    using SafeMathChainlink for uint256;
    mapping(address => uint256) public payTo;

    function Payment() public payable {
        uint256 minimumUSD = 50 * 10 ** 18;
        require(getConversionRate(msg.value) >= minimumUSD, "Doesn't satisfy the minimum condition");
        payTo[msg.sender] += msg.value;
    }
}
Run Code Online (Sandbox Code Playgroud)

blockchain solidity chainlink

7
推荐指数
1
解决办法
1万
查看次数

如何将 uint256 变量转换为 int256 变量?

我试图通过在下面的代码中uint timeStamp键入来进行打印:return timeStamp;return price;

pragma solidity ^0.6.7;

import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";

contract PriceConsumerV3 {

AggregatorV3Interface internal priceFeed;

/**
 * Network: Kovan
 * Aggregator: BTC/USD
 * Address: 0x6135b13325bfC4B00278B4abC5e20bbce2D6580e
 */
constructor() public {
    priceFeed = AggregatorV3Interface(0x6135b13325bfC4B00278B4abC5e20bbce2D6580e);
}

/**
 * Returns the latest price
 */
function getThePrice() public view returns (int) {
    (
        uint80 roundID, 
        int price,
        uint startedAt,
        uint timeStamp,
        uint80 answeredInRound
    ) = priceFeed.latestRoundData();
    return price;
    return timeStamp;
}
}
Run Code Online (Sandbox Code Playgroud)

当我在 Remix Compiler 上编译上面的代码时,它回复:

类型错误:返回参数类型 uint256 无法隐式转换为预期类型(第一个返回变量的类型)int256。返回时间戳;^--------^

我倾向于认为我只需要输入int256 …

solidity smartcontracts chainlink

6
推荐指数
1
解决办法
1万
查看次数

v0.8 AggregatorV3Interface.sol ,它在 @chainlink/contracts 中可用吗?

当我将版本更改为 0.8 时出现错误,但在 0.6 上工作正常,我如何查看最新版本?,我尝试从 npm install @chainlink/contracts --save 下载,但仅适用于模拟模式。

这是我的仓库: https: //github.com/irwingtello/lottery

正在编译合约... Solc 版本:0.8.9 优化器:启用运行:200 EVM 版本:Istanbul CompilerError:solc 返回以下错误:

ParserError:找不到源“C:/Users/irwin/.brownie/packages/smartcontractkit/chainlink-brownie-contracts@1.1.1/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol”:找不到文件。--> 合同/Lottery.sol:4:1: | 4 | 导入“@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol”;| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

错误:无法加载项目

chainlink brownie

6
推荐指数
1
解决办法
3741
查看次数

混音:返回错误:{“jsonrpc”:“2.0”,“错误”:“无效操作码:PUSH0”,“id”:2405507186007008}

在我的 Ubuntu 中运行 geth 中的私有链节点和 Chainlink 节点后,我想测试 Chainlink Any API 的功能(https://docs.chain.link/any-api/get-request/examples/single-word -响应,单字响应)。

我运行这些命令来运行节点:

## SHELL1
cd ~/myChain/localChain/node1 && geth --datadir data --gcmode "archive" --syncmode=full --networkid 4190 --http --http.addr 0.0.0.0 --http.port 6789 --http.corsdomain "*" --ws --port 30305 --allow-insecure-unlock --unlock edd96278959aA8B27DdC14FD70ACb31f7e7beC2F --keystore ./keystore console

## SHELL2
cd ~/myChain/chainlink/.chainlink && docker run --net host -u=root  -p 6688:6688 -v ~/.chainlink:/chainlink -it --env-file=.env smartcontract/chainlink:1.11.0 local n
Run Code Online (Sandbox Code Playgroud)

我成功部署了我的LinkToken合约,operator并在我的 Chainlink 节点 UI Operator 中创建了一个新作业(GET>uint256)。它们如下:

链克.sol

pragma solidity ^0.4.11;

import …
Run Code Online (Sandbox Code Playgroud)

solidity go-ethereum chainlink

6
推荐指数
1
解决办法
6436
查看次数

智能合约 - Chainlink VRF / @openzeppelin/truffle-upgrades 兼容性

现在我正在使用@openzeppelin/truffle-upgrades将基本智能合约转换为可升级的智能合约

因此,我遵循了文档中的所有必需步骤,但仍然存在一个问题:

Truffle-Upgrades 要求我用初始化器替换构造函数,这对我来说很好,但不适用于导入到我自己的智能合约中的智能合约,示例:

pragma solidity 0.6.6;

import "@chainlink/contracts/src/v0.6/VRFConsumerBase.sol";

contract Sample is VRFConsumerBase {
    
    address private owner;
    
    bytes32 internal keyHash;
    uint256 internal fee;
    
    constructor(address _owner)
        VRFConsumerBase(
            0xa555fC018435bef5A13C6c6870a9d4C11DEC329C, // VRF Coordinator
            0x84b9B910527Ad5C03A9Ca831909E21e236EA7b06  // LINK Token
        ) public
    {
        keyHash = 0xcaf3c3727e033261d383b315559476f48034c13b18f8cafed4d871abe5049186;
        fee = 0.1 * 10 ** 18; // 0.1 LINK (Varies by network)
        
        owner = _owner;
    }

    ...
Run Code Online (Sandbox Code Playgroud)

因此松露抱怨道:

../@chainlink/contracts/src/v0.6/VRFConsumerBase.sol:182: Contract `VRFConsumerBase` has a constructor
Define an initializer instead
Run Code Online (Sandbox Code Playgroud)

由于它是第三方软件包,我无法替换它:)

有什么架构技巧/配置吗?

我浏览了几乎所有关于 chainlink/truffle 的文档,但没有找到这个问题的解决方案。

谢谢!

更新1:

首先,我将 VRFConsumerBase 合约修改为:(我还删除了注释以使其简短..) …

random numbers solidity truffle chainlink

5
推荐指数
0
解决办法
1508
查看次数

信息:找不到给定模式的文件。错误

我在 Visual Studio Code 中使用布朗尼编译时遇到问题,因为我收到一条信息:无法找到给定模式的文件。

这是我得到的错误:

在此输入图像描述

python ethereum chainlink

5
推荐指数
1
解决办法
2万
查看次数

如何使用不同编译指示/编译器版本的导入来使用安全帽进行开发和编译?

Hardhat 不支持 https 导入。使用 npm 安装 openzeppelin 和 chainlink 并使用 @openzeppelin/@chainlink 后,我们会遇到 pragma/compiler 版本问题,即使 Hardhat.config.js 中的编译器版本不同,甚至覆盖。如何使用安全帽和这些导入进行开发和编译?

solidity chainlink

4
推荐指数
1
解决办法
3512
查看次数