不起作用
function mint() public payable {
require(
LINK.balanceOf(address(this)) >= fee,
"Not enough LINK - fill contract with faucet"
);
requestRandomness(keyHash, fee);
}
function fulfillRandomness(bytes32 requestId, uint256 randomness) internal override {
_safeMint(msg.sender, randomness);
}但它有用为什么?
function mint() public payable {
require(
LINK.balanceOf(address(this)) >= fee,
"Not enough LINK - fill contract with faucet"
);
requestRandomness(keyHash, fee);
requestToSender[requestId] = msg.sender;
}
function fulfillRandomness(bytes32 requestId, uint256 randomness) internal override {
_safeMint(requestToSender[requestId], randomness);
}发布于 2022-04-12 14:22:36
我对你所说的“不起作用”作了一些假设。
根据代码,您要在fulfillRandomness()函数中创建的地址有很大的不同。
在第一个示例中,您使用msg.sender来创建薄荷。这在fulfillRandomness函数中;此地址的值很可能是vrfCoordinator的地址。这将导致协调程序“拥有”您刚刚创建的NFT。
在第二个示例中,您将请求随机性的地址映射到请求ID. requestToSender[requestId] = msg.sender;,然后在fulfillRandomness()函数中再次使用该映射。requestToSender[requestId]。这将将请求者的地址传递到fulfillRandomness()函数,从而导致原始请求者‘拥有’NFT。
如果是其他的问题,请告诉我。
https://ethereum.stackexchange.com/questions/126006
复制相似问题