Skip to content

Commit

Permalink
Add example nft bridge contract for exist ERC721 contracts
Browse files Browse the repository at this point in the history
  • Loading branch information
weiqiushi committed Jan 8, 2024
1 parent f498d3b commit d0009b2
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
25 changes: 25 additions & 0 deletions contracts/example_nft_bridge.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./public_data_storage.sol";
import "@openzeppelin/contracts/token/ERC721/IERC721.sol";

contract NFTBridge is IERCPublicDataContract {
IERC721 nftAddress;

mapping (bytes32 => uint) hashToTokenId;

constructor(IERC721 _nftAddress) {
nftAddress = _nftAddress;
}

function addTokenId(bytes32[] calldata dataMixedHash, uint256[] calldata tokenId) public {
for (uint i = 0; i < dataMixedHash.length; i++) {
hashToTokenId[dataMixedHash[i]] = tokenId[i];
}
}

function getDataOwner(bytes32 dataMixedHash) public view returns (address) {
return nftAddress.ownerOf(tokenId);
}
}
3 changes: 1 addition & 2 deletions contracts/public_data_storage.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ pragma solidity ^0.8.0;
import "./gwt.sol";
import "./sortedlist.sol";
import "./PublicDataProof.sol";
import "./nft_bridge.sol";

import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
Expand Down Expand Up @@ -239,7 +238,7 @@ contract PublicDataStorage is Initializable, UUPSUpgradeable, OwnableUpgradeable
require(dataMixedHash != bytes32(0), "data hash is empty");
require(_allowedPublicDataContract[publicDataContract], " data contract not allowed");
require(IERCPublicDataContract(publicDataContract).getDataOwner(dataMixedHash) != address(0), "not found in data contract");

// 质押率影响用户SHOW数据所需要冻结的质押
require(depositRatio >= sysConfig.minDepositRatio, "deposit ratio is too small");
// minAmount = 数据大小*GWT兑换比例*最小时长*质押率
Expand Down

0 comments on commit d0009b2

Please sign in to comment.