首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

数字臧品系统开发铸造原理和开发细节分享

=> mapping(address => uint256)) private _balances; }我们做的主要修改是增加一个Token IDURL的映射。...因为我们准备将NFT的图片和Metadata数据都放到IPFS上,所以增加一个Token IDIPFS文件哈希的映射:contract ERC1155 { mapping(uint256 => string...filename=metadata.json”); } }第二个修改是增加一个mint()方法来铸造NFT:function mint(uint256 amount, string memory metadataHash...) public returns (uint256) { // 如果只允许合约部署者铸造,加上判断: // require(msg.sender == owner, “Not contract owner...最后一步,我们调用mint()方法并传入NFT的Metadata的IPFS哈希,就完成了一个NFT的铸造铸造后默认的持有人是铸造者本人。

57610

如何创建NFT并OpenSea上展示《alchemy How to Develop an NFT Smart Contract》译

方法并且只有特殊账户可使用(一般是 owner) Autoincrement IDs( tokenid 自动加1)这个功能将会自动的为你的 NFT 的 ID 自动分配增量 ID Enumerable(枚举...)能够访问链上的 token 枚举 以及 totalSupply 之类的功能,像 ERC721 的 URI 默认情况下是不存在的,需要将元数据和对应的图片进行关联。...1.4 在 REMIX 上修改和部署你的 ERC721 合约 现在你已经有了一个 ERC721 的智能合约,现在开始让我们去修改和部署它 Goerli 测试网络上。...你可以注意,这个 safemint 方法有一个 “only owner” 的修饰,这个修饰只允许当前合约的所有者调用这个方法去铸造 NFT,如果你想所有人都可以使用 mint 方法,那么 你可以删除...点击 sign 后将会铸造你的第一个 nft。 接着转移到 OpenSea 检查你的元数据是否被正确读取到。

1.2K60

如何编写 NFT 智能合约

()函数,每当我们(或第三方)想铸造一个 NFT 时,都会调用这个函数: function _mintSingleNFT() private { uint newTokenID = _tokenIds.current...balance}(""); require(success, "Transfer failed."); } } 在本地部署合约 现在让我们做准备在本地环境中模拟,以便之后将我们的合约部署...让我们在本地运行一下: npx hardhat run scripts/run.js 如果一切顺利,你应该看到类似这样的输出: 将合约部署 Rinkeby 上 为了将我们的合约部署 Rinkeby...运行以下命令: npx hardhat run scripts/run.js --network rinkeby 脚本的输出与之前得到的非常相似,只是现在已经被部署真正的区块链上。...另外,邀请你的一个朋友连接他们的钱包,通过调用mintNFT函数来铸造一些 NFT。 总结 我们现在有一个已部署的智能合约,可以让用户从我们的合约中铸造 NFT。

1.1K70

从暴力枚举用户获取域所有信息

我们可以通过钓鱼、欺骗、信息收集、密码猜解等方式获取一个域中普通用户的权限,下面先看一下如何暴力枚举域中的用户名。...暴力枚举用户名 我们在对域中信息一无所知的情况下,也没有域中的主机权限,也没有域中用户的账户信息,那么我们可以通过使用字典的方式枚举域中的账户名称。...对于用户名枚举需要对根据以下错误信息来辨别用户名是否正确: ? 下面推荐几个工具来完成这个工作。...枚举用户凭证 可以使用 Metasploit 的 auxiliary/scanner/smb/smb_login 来枚举用户的密码凭证,使用帮助如下: ? ?...我们也可以使用 RAST 的界面程序,使用 runas 启动: runas /netonly /user:mydomain\ops mmc 下面我们用这种方式来增加主机或用户域中: ? ?

2.7K00

Art Blocks合约要点分析 - 利用 JavaScript 动态生成图片

Art Blocks 存储这些脚本,当有人想铸造一个 NFT 时,它会创建一个独特的哈希值。这个哈希值被用作图像生成算法的种子,生成的图像对挖掘者来说是独一无二的。...tokenOfOwnerByIndex - 枚举所有者的代币并返回索引处的 tokenId。...projects[projectId].useHashString = true; } nextProjectId = nextProjectId.add(1); } 从上面的截图中你可能已经注意,...如果我们导航这个 HTTP 路径,我们会得到这个 JSON 文件。 注意,这个 JSON 文件有一堆不同的特征类型和项目描述的信息。它也有一个指向实际图像的链接。...(如果其他人在相同的条件下铸造相同的代币,他将得到一个不同的图像,因为他的地址是不同的)。 哈希的另一个输入是 "随机化合约 "的 "返回值"。

59920

层级化NFT标准诞生:EIP-6150

tokenId) external view returns (bool); } Minted 事件需在铸造一个新的 NFT 时发出,记录了新 NFT 的铸造者(minter)、接收者(to)、父节点...铸造函数的代码如下: function _safeMintWithParent( address to, uint256 parentId, uint256 tokenId,...这个铸造函数是 internal virtual 的,上层合约可以重载该函数,且上层的实现合约需要再根据具体需求自己添加开放的铸造函数。...另外,实现代码中,也封装了批量铸造的内部函数,方便扩展支持批量铸造多个子节点的需求。...其实,整个协议并不复杂,但已经足以覆盖很多应用场景,后续我会结合一些具体的应用场景,再增加示例代码作为案例,以促进该协议的落地应用。

1.6K30

C语言从入门实战——联合体和枚举

在主函数中,我们可以修改和访问这些成员,注意修改一个成员会影响其他成员的值。这是因为它们都共享同一个内存空间。 使用联合体时要注意成员的赋值和访问,确保类型和内存空间的正确使用。...枚举的定义方式如下: enum 枚举名称 { 枚举器1, 枚举器2, ... 枚举器n }; 枚举常量可以是整数常量、字符常量或字符串常量。...当最大成员大小不是最大对齐数的整数倍的时候,就要对齐最大对齐数的整数倍。...2.1 枚举类型的声明 枚举顾名思义就是一一列举。...比如我们现实生活中: 一周的星期一星期日是有限的7天,可以一一列举 性别有:男、女、保密,也可以一一列举 月份有12个月,也可以一一列举 三原色,也是可以一一列举 这些数据的表示就可以使用枚举了。

8610

符文Runes协议技术详解

type Terms struct {undefined Amount *uint128.Uint128 //Mint一次能够铸造的数量 Cap *uint128.Uint128...)}因为允许预挖,而允许后续Mint,所以这个符文的发型总量就是:预挖+Amount*Cap符文的数采用uint128,并不是以太坊的uint256也不是比特币的uint64,所以这个符文数量也可以是很大很大的...这意味着每个字母都对应一个从025的整数。组合名称:当Rune名称由多个字母组成时,每个字母的数值是连续的,并且它们表示的是一个累积的数值。...如果一个法令试图分配的符文数量超过了当前未分配的符文数量,该法令的分配数量将被减少当前未分配的符文数量。这意味着,所有的未分配符文都将被完全分配。...铸造计数和销毁:如果墓碑是由于铸造操作不当而产生,该铸造将会计入铸造上限(Cap),并且尝试铸造的符文将被销毁。

48632

枚举贪心再到启发式(上)

N个物品我们就可以用一个N维的数组x进行表示,当: 此外 我们还得用个变量表示目标值 由于约束的存在 我们还得标识该解是否满足所有约束了……等等 那么就把这堆东西集成一个class里面吧!...上面我们一步一步将算法需要相关数据给设计好了 有了以上的基础 我们就可以着手相关的算法设计求解了 先看看枚举法吧~ 枚举就不用我多说了吧,简单点说就是把问题所有的解给一一枚举出来,挨个去评价,然后选出最好的那个...然后在枚举的所有决策中挨个评价,如果找到比当前全局最优还要好的解(并且该解是可行的!),那么更新全局最优解。...枚举法能够找到问题的最优解 这是显而易见的,比较你把所有的解(无论可行的还是不可行的)都比较了一遍,还找不出最优的就说不过去了吧。如此看来,这枚举法是个好东西啊,简单粗暴,结果还是最优。是吗? 2....枚举法求解时间随问题规模增长而呈爆炸式增长 枚举法致命的缺陷就是其求解所需的资源(直观上就是时间、内存等)随当问题规模的增长而呈指数级别增长。这是什么意思呢?

56930
领券