问题标签 [erc721]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
229 浏览

java - 如何使用 Web3j 检查交易是否为 NFT?

我正在使用 Web3j 库来处理区块链。我想解决在特定交易期间转移了哪些代币。我已经尝试过的:

  • 调用Function该名称supportsInterface以检查其是否支持 NFT 标准(ERC721、ERC1155 等)。没有成功。
  • 试图解码Transaction Logs,找到了如何检索Token ID,但我对这些信息无能为力。

对此有什么建议吗?

0 投票
1 回答
147 浏览

ethereum - 为什么 NFT (ERC721) 令牌中的事件将地址 (0) 作为第一个参数?

我正在学习 nft 智能合约的工作原理。我不明白为什么发出事件会收到address(0)

这是来自Openzeppeling ERC721的 _mint 函数

当我们发出 Transfer 事件时,为什么要使用address(0). address(0)代表空地址。这是转移事件:

0 投票
1 回答
62 浏览

blockchain - 如何在 ERC721 合约中调用 ERC20 合约函数

我想要完成的是从 ERC721 合约调用 ERC20 合约中定义的函数,如下所示,特别transferFrom是 ERC20 合约中的函数在 ERC721 中的同一函数内。

这不编译。它最终所做的是,每次发生 erc721 NFT 转移时,版税都会以 erc20 代币的形式转移给创建者。

0 投票
0 回答
108 浏览

ethereum - Erc721 智能合约部署等待 Remix

我已经在 Metamask 上提交了我的智能合约部署并且交易成功。这是 Polygon 网络上的 ERC721 智能合约。我也可以在 Polygon Scan 上看到交易,但有两个问题。

  1. 我在扫描仪上看不到智能合约或令牌名称,它只是从这个 id 显示到那个 id。名称未显示。

  2. 最重要的是,在 Remix 上,它仍然显示创建 xxxxx 待定....

  3. 自 Metamask 上的合约部署成功以来已经超过 4 个多小时。

请帮帮我,这是我的第一个智能合约。

0 投票
1 回答
185 浏览

json - ERC721 元数据 JSON 模式中的类型(如“对象”)是什么

根据标准,有一个type如下所示的“对象”。这是做type什么用的,我们还可以使用哪些其他类型?我可以像“艺术”一样使用吗?

0 投票
1 回答
127 浏览

solidity - 在 NFT Mint 函数中燃烧已部署的 ERC 代币 - 编译,但交易失败

我对 Solidity 很陌生,最近一直在努力学习。作为参考,在完成了基本的加密僵尸教程系列之后,我一直使用此视频 ( https://www.youtube.com/watch?v=tBMk1iZa85Y ) 中的代码作为入门。

我一直在尝试调整此视频中提供的 Solidity 合约代码(我运行得很好!),以要求在铸造 NFT 作为自己的练习之前烧掉指定数量的 ERC-20 代币。我认为我应该是一个有效的实现,它在 Remix 中编译,然后部署到 Rinkeby。部署到 Rinkeby 后,我在 Remix 中调用了 allowAccess 函数,并且成功了。但是,当我使用两个参数调用 mint 函数时,我得到:“gas 估计错误,出现以下消息(见下文)。交易执行可能会失败。你想强制发送吗?执行已恢复。”

如果我仍然发送交易,元掩码会产生“交易 xx 失败!交易遇到错误。”。

我很肯定它与“require(paymentToken.transfer(burnwallet,amounttopay),”transfer Failed“);”有关,尽管我不确定出了什么问题。下面是我的整个合约代码。我目前只是与 Rinkeby 上的 Chainlink 合约进行交互,因为它们有一个方便的代币水龙头。

如果有人至少可以指出我在添加的代码中做错了什么,请这样做!蒂亚!

0 投票
2 回答
70 浏览

python - 在 eth-brownie 中使用外部包?

我正在尝试在 VSCode 上的 Brownie 中打开 ERC721 智能合约,并遍历令牌 ID 并设置每次迭代的 URI。我使用 brownie run scripts/parcel_asset/testpyodbc.py 执行脚本。我正在尝试使用名为 pyodbc 的 ODBC 驱动程序来查询 Access 数据库并创建一个游标进行迭代。仅作为 python 脚本运行时它工作正常,但 Brownie 给出错误“ModuleNotFoundError: No module named 'pyodbc'” 有没有办法使用 Brownie 访问他的 odbc?

下面是我得到的错误

0 投票
3 回答
1031 浏览

blockchain - 多边形区块链上 MetaMask 的内部 JSON-RPC 错误。`ERC721:转接呼叫者既不是所有者也不是批准的。`

我正在创建一个 NFT 市场。当我在 Mumbai-testnet 上部署我的合约时。createToken 函数可能会起作用,因为它会显示 Gas Fee 的 Metamask,但在那之后,会发生与ONWNERSHIP 相关的错误。 (错误图像和文本如下所示。)

我遵循的步骤

  1. npm hardhat node
  2. npm run dev
  3. 选择创建页面。
  4. 输入所有详细信息。
  5. 单击调用createToken函数的创建资产。

然后发生错误。

这是我的 NFT 合约

这是我的 NFTMarket 合约

我尝试更改 MetaMask 和配置文件中的 RPC,并使用不同的帐户重新部署了很多次,但仍然没有任何变化。

错误

控制台的图像

如果需要任何其他信息,请发表评论

区块链浏览器链接

0 投票
1 回答
31 浏览

solidity - 保证一个合约只能收到一种 ERC721 nft

为 ERC721 NFT 的 privateSale 创建一个合约,首先我为实现 onErc721Received(...) 的 privateSale 合约地址创建一些库存我要保证的是这个 privateSaleContract 只接收来自一个给定 NFT 类型的 ERC721 代币(通过其合约地址)

我怎么能保证呢?

0 投票
1 回答
59 浏览

visual-studio-code - Brownie compile ValueError: Invalid NPM block with OpenZeppelin

*****我的 .sol 文件的顶部行 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;

导入“@openzeppelin/contracts/token/ERC721/ERC721.sol”;

合约 ParcelAsset 为 ERC721 {

******命令行VScode brownie编译contracts\ParcelAsset.sol

我得到这个错误。ValueError:'>=0.6.0 <0.8.0 import "@openzeppelin/contracts/token/ERC721/ERC721.sol"'中的无效 NPM 块:'import'

*********** 我的 brownie-config.yaml 依赖项的片段:

  • smartcontractkit/chainlink-brownie-contracts@1.1.1
  • OpenZeppelin/openzeppelin-contracts@3.4.0 编译器:solc:重新映射:
    • '@chainlink=smartcontractkit/chainlink-brownie-contracts@1.1.1'
    • '@openzeppelin=OpenZeppelin/openzeppelin-contracts@3.4.0'

我已经尝试 npm install @openzeppelin/contracts 并将solidity更新到0.8.0

有人知道我做错了什么吗?