标签: blockchain

如何使用 HardHat 调用可支付的 Solidity 函数?

我有一个名为“领养狗”的可靠函数,如下所示,它基本上是合同中的应付函数。

// 这失败了,因为我不知道如何在 Hardhat/ETHER.JS 中传递 ETH

哈德哈特

 const Adopt = await ethers.getContractFactory("Adopt");
    const adopt = await Adopt.deploy();
    await adopt.deployed();
    await adopt.adopt("Hachiko"); 
Run Code Online (Sandbox Code Playgroud)

合同

 function adopt(string calldata dog_breed) external payable {
             require(msg.value >= 1 ether ,"Min 1 ether needs to be transfered");
            require(user_list[msg.sender].user_allowed_to_adopt,"User not 
            allowed to participate for adoption");
            require(!user_list[msg.sender].adopted,"User has already 
            adopted the dog");
            
        User memory user=user_list[msg.sender];
        user.adopted=true;
        user_list[msg.sender]=user;
    }
Run Code Online (Sandbox Code Playgroud)

blockchain solidity truffle web3js hardhat

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

使用 python 在 Binance 智能链上出现 Web3 ExtraDataLength 错误

我试图提取特定区块上发生的交易,但我被困在这里:

from web3 import Web3

bsc = "https://bsc-dataseed.binance.org/"
web3 = Web3(Web3.HTTPProvider(bsc))

block = web3.eth.get_block('latest')

web3.exceptions.ExtraDataLengthError: The field extraData is 97 bytes, but should be 32. It is quite likely that you are connected to a POA chain. Refer to http://web3py.readthedocs.io/en/stable/middleware.html#geth-style-proof-of-authority for more details.
Run Code Online (Sandbox Code Playgroud)

我想获取某个钱包地址涉及的交易,但我不知道为什么 web3 不允许我从 bsc 节点提取该交易。

python blockchain web3py binance-smart-chain

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

如何获取特定智能合约的所有NFT

我尝试https://docs.opensea.io/reference opensea.io 文档来获取数据。不过,我认为有 2 个 API。

curl --request GET \
     --url https://api.opensea.io/api/v1/asset/0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb/1/
Run Code Online (Sandbox Code Playgroud)

这是针对单个资产的,它也需要一个代币 ID。但我只需提供智能合约地址就可以获取特定智能合约地址的所有 NFT 数据。

这是针对单一合同的。

curl --request GET \
     --url https://api.opensea.io/api/v1/asset_contract/0x06012c8cf97bead5deae237070f9587f8e7a266d
Run Code Online (Sandbox Code Playgroud)

request node.js blockchain ethereum nft

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

Metamask 未连接我的区块链网络

我正在使用区块链构建一个 todoList Web 应用程序。当我尝试连接blockchain server到元掩码时,我陷入了困境。当我尝试添加Ganache (HTTP://127.0.0.1:7545) 中提到的新网络时,我错过了 chainID,当我用Genache网络 Id填充 chainID 时,它显示给定的错误。 在此输入图像描述

当我尝试连接时localhost8545,它返回此错误: 在此输入图像描述

trufle-config.js

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*" // Match any network id
    }
  },
  solc: {
    optimizer: {
      enabled: true,
      runs: 200
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如何将我的区块链网络与本地主机连接?

blockchain metamask

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

智能合约可以部署其他智能合约吗?

如果智能合约具有已编译的合约字节码,可以先部署后续合约吗?

根据 Ethereum.org 的说法:“要部署智能合约,您只需发送包含智能合约编译代码的以太坊交易,而无需指定任何接收者。”

我寻找如何通过智能合约发送交易,我能找到的最接近的是转移 ETH 的示例......

    _to.transfer(msg.value);
  
    bool sent = _to.send(msg.value);
   
    (bool sent, bytes memory data) = _to.call{value: msg.value}("");
   
Run Code Online (Sandbox Code Playgroud)

blockchain ethereum solidity smartcontracts

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

将 Solana 空投到特定账户

我想将sol 空投到特定帐户中,以使我的智能合约触发锚定测试。每当我运行测试时,我都会遇到错误Error: Account BdFchxtKbEaWtsbuFX2nbKyZCjhz5LN8vyPukQzJQrME has insufficient funds for spend (1.30250136 SOL) + fee (0.000945 SOL) There was a problem deploying: Output { status: ExitStatus(ExitStatus(256)), stdout: "", stderr: "" }.

该错误是不言自明的,但如何将代币空投到该特定帐户,我可以运行solana airdrop 5,但随后它将其空投到另一个帐户 GgRbD2AdibdAtBrQMJJEooco9gKt48Sd98Gn7vZQ1nJK。

我什至尝试使用将代币从一个帐户转移到另一个帐户solana transfer BdFchxtKbEaWtsbuFX2nbKyZCjhz5LN8vyPukQzJQrME 5 --allow-unfunded-recipient,但交易只是挂起。

下面是我使用 Anchor 在 Rust 中编写的智能合约:

use anchor_lang::prelude::*;
use anchor_lang::solana_program::system_program;

declare_id!("BNDCEb5uXCuWDxJW9BGmbfvR1JBMAKckfhYrEKW2Bv1W");

#[program]
pub mod solana_twitter {
    use super::*;
    pub fn send_tweet(ctx: Context<SendTweet>, topic: String, content: String) -> ProgramResult {
        let tweet: &mut Account<Tweet> = &mut ctx.accounts.tweet; …
Run Code Online (Sandbox Code Playgroud)

rust blockchain solana solana-cli anchor-solana

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

Uniswap V3 sqrt ETH/DAI 和 ETH/USDT、ETH/USDC 的价格差异很大

我用来IUniswapV3PoolState.slot0返回 sqrtPriceX96 并在 Uniswap V3 中勾选不同的货币对。对于 ETH/DAI 来说,结果非常合理,但对于 ETH/USDT 和 ETH/USDC 来说,结果却截然不同。

这不是因为代币的顺序,而是价格的最终结果(在考虑平方根和 Q96 后)相差 10^(-12)。所以我会得到 ETH/DAI 大约 3200 美元,而 ETH/USDT 和 ETH/USDC 会得到 3200*10^(-12) 美元。我有什么遗漏的吗?谢谢你!

blockchain uniswap

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

如何以编程方式从 Solana 钱包转移 NFT

嘿 Solana 爱好者,

我正在开发由 Solana 驱动的 NFT 项目,我正在使用惰性铸币方法,但我陷入了困境。我想将新铸造的 NFT 发送到钱包地址。Solana 不像以太坊那样有很好的文档记录。

blockchain nft solana

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

为什么我会收到此错误错误:交易已恢复而没有原因字符串。当尝试在 uniswap 上交换代币时?

我正在尝试在 uniswap unsing Hardhat 的主网分支上交换代币,但出现此错误:Error: Transaction reverted without a reason string。我真的不知道为什么。

这是我的交换函数:

    function swap(address router, address _tokenIn, address _tokenOut, uint _amount) public {
        IERC20(router).approve(router, _amount);
        address[] memory path;
        path = new address[](2);
        path[0] = _tokenIn;
        path[1] = _tokenOut;
        uint deadline = block.timestamp + 300;  
        IUniswapV2Router(router).swapExactTokensForTokens(_amount, 1, path, address(this), deadline);  
}
Run Code Online (Sandbox Code Playgroud)

这是一个简单的函数,应该可以工作。我就是这样称呼它的:

await arb.swap(
    uniAddress,
    wethAddress,
    daiAddress,
    ethers.utils.parseEther('0.5')
);
Run Code Online (Sandbox Code Playgroud)

感谢您的解答!

另外,我拨打的地址只是为了验证它们是否正确,但我很确定它们是:

const wethAddress = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2';
const daiAddress = '0x6B175474E89094C44Da98b954EedeAC495271d0F';
const uniAddress = '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D';
Run Code Online (Sandbox Code Playgroud)

blockchain solidity smartcontracts uniswap

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

尝试更新最新块时遇到错误

我是区块链新手,我只是尝试将一个简单的智能合约部署到 ropsten 测试网。我使用了https://github.com/t4sk/solidity-multi-sig-wallet中的智能合约代码。我还使用truffledevelopment提供的帐户

\n

我的 truffle-config.js:

\n
networks: {\ndevelopment: {\n     host: "127.0.0.1",     // Localhost (default: none)\n     port: 8545,            // Standard Ethereum port (default: none)\n     network_id: "*",       // Any network (default: none)\n    },\nropsten: {\n    provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/${infuraKey}`),\n    network_id: 3,       // Ropsten\'s id\n    gas: 5500000,        // Ropsten has a lower block limit than mainnet\n    confirmations: 2,    // # of confs to wait between deployments. (default: 0)\n    timeoutBlocks: 200,  // # of blocks before a deployment times …
Run Code Online (Sandbox Code Playgroud)

blockchain ethereum smartcontracts truffle web3js

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