文章
专栏
问答
讲堂
集市
更多
提问
发表文章
文档
招聘
发现
Toggle navigation
首页
(current)
文章
问答
专栏
招聘
文档
讲堂
集市
搜索
登录
注册
9
请问有没有参考的盲盒智能合约?
Solidity
ERC721
回答问题即可获得
5
贡献值,回答被采纳后即可获得
14
学分。
0 条评论
分类:
以太坊
请先
登录
后评论
默认排序
时间排序
6 个回答
stirlingx
- 去中心化搬砖工
2021-11-08 09:45
可以基于随机可验证函数实现: 合约中有3个公开的变量: pk: 项目方公钥。 a: A的剩余数量 b: B的剩余个数。 打开盲盒需要几个步骤 (1)用户调用合约传入一个随机字符串,合约要保证每次传入的字符串不能有重复。 (2)项目方使用随机可验证函数,传入自己的私钥和用户的随机字符在链下生成新的随机字符串和证明。 (3)项目方调用合约,将生成的字符串和证明公布,再计算字符串哈希,映射到一个范围在[ 0, a+b) 的成整数,记为 c。 若c < a, 产出A,否则产出B。 (4) 用户可以通过验证函数,验证项目方没有作弊。
请先
登录
后评论
温柔
2021-11-07 04:07
比如设定有30个A,20个B。 用户随机获得A或B。
请先
登录
后评论
温柔
2021-11-07 04:08
``` struct BoxFactory { uint256 id; uint8 bunnyId; // A string tokenURI; uint256 price; uint256 limit; // 限制x个,比如A 30 uint256 minted; // 已经铸造 的个数, 比如A 1个 } // factoryId: BoxFactory mapping(uint256 => BoxFactory) public _boxFactories; ```
请先
登录
后评论
温柔
2021-11-07 04:08
``` function addBoxFactory( uint8 bunnyId, string memory tokenURI, uint256 limit ) public onlyOwner returns (uint256) { _boxFactoriesId++; BoxFactory memory boxFactory; boxFactory.id = _boxFactoriesId; boxFactory.bunnyId = bunnyId; boxFactory.tokenURI = tokenURI; boxFactory.price = boxPrice; boxFactory.limit = limit; _boxFactories[_boxFactoriesId] = boxFactory; return _boxFactoriesId; } ```
请先
登录
后评论
温柔
2021-11-07 04:10
请问大佬如何实现一个方法,可以公平产出A或B,而且保证A和B的数量不能多也不能少。概率 ``` function buyRandomBox() external payable nonReentrant returns(uint256 tokenId) { // @????? 这里要怎么实现 公平随机决定 产出A还是B // uint256 factoryIdAorB??? = Random()???? BoxFactory storage boxFactory = _boxFactories[factoryId]; if (boxFactory.limit > 0) { require( boxFactory.limit.sub(boxFactory.minted) >= 1, "Over the limit" ); } // 买一个生产一个box boxFactory.minted = boxFactory.minted.add(1); // 生产 tokenId = factory.nft.mint(msg.sender, boxFactory.tokenURI, boxFactory.bunnyId); } ```
请先
登录
后评论
比特聪
2021-11-09 16:40
可以看一下open sea 的盲盒方案
请先
登录
后评论
您需要登录后才可以回答问题,
登录
或者
注册
关注
4
关注
收藏
0
收藏,
459
浏览
提出于 2021-11-07 04:07
相似问题
Solidity 中获得数组切片
2 回答
代币合约怎么判定_transfer是swap买入。
1 回答
关于remix部署的一个安全问题,这个是什么问题?
1 回答
有大佬知道一次调用如何产生多笔交易吗?
1 回答
通过erc721智能合约创建的nft如何在tokenpocket钱包显示名称和图片?
2 回答
×
发送私信
发给:
内容:
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因: