我有一个名为“领养狗”的可靠函数,如下所示,它基本上是合同中的应付函数。
// 这失败了,因为我不知道如何在 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) 我试图提取特定区块上发生的交易,但我被困在这里:
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 节点提取该交易。
我尝试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) 我正在使用区块链构建一个 todoList Web 应用程序。当我尝试连接blockchain server到元掩码时,我陷入了困境。当我尝试添加Ganache (HTTP://127.0.0.1:7545) 中提到的新网络时,我错过了 chainID,当我用Genache网络 Id填充 chainID 时,它显示给定的错误。

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)
如何将我的区块链网络与本地主机连接?
如果智能合约具有已编译的合约字节码,可以先部署后续合约吗?
根据 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) 我想将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) 我用来IUniswapV3PoolState.slot0返回 sqrtPriceX96 并在 Uniswap V3 中勾选不同的货币对。对于 ETH/DAI 来说,结果非常合理,但对于 ETH/USDT 和 ETH/USDC 来说,结果却截然不同。
这不是因为代币的顺序,而是价格的最终结果(在考虑平方根和 Q96 后)相差 10^(-12)。所以我会得到 ETH/DAI 大约 3200 美元,而 ETH/USDT 和 ETH/USDC 会得到 3200*10^(-12) 美元。我有什么遗漏的吗?谢谢你!
嘿 Solana 爱好者,
我正在开发由 Solana 驱动的 NFT 项目,我正在使用惰性铸币方法,但我陷入了困境。我想将新铸造的 NFT 发送到钱包地址。Solana 不像以太坊那样有很好的文档记录。
我正在尝试在 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) 我是区块链新手,我只是尝试将一个简单的智能合约部署到 ropsten 测试网。我使用了https://github.com/t4sk/solidity-multi-sig-wallet中的智能合约代码。我还使用truffledevelopment提供的帐户
\n我的 truffle-config.js:
\nnetworks: {\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)