首页
学习
活动
专区
工具
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的铸造铸造后默认的持有人是铸造者本人。

56710

如何创建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

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

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

2.6K00

如何编写 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

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

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

58120

层级化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个月,也可以一一列举 三原色,也是可以一一列举 这些数据的表示就可以使用枚举了。

6310

符文Runes协议技术详解

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

34332

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

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

56130
领券