ERC1155-UPGRADEABLE

This commit is contained in:
2022-11-21 13:02:08 +08:00
parent 3378a572a2
commit bb617056a1
5 changed files with 181 additions and 4 deletions

6
.gitignore vendored
View File

@@ -1,3 +1,7 @@
/node_modules
.DS_Store
src/*/artifacts/
src/artifacts/
.DS_Store
src/*/.DS_Store
src/.DS_Store

115
src/DEMO/Solidity.sol Normal file
View File

@@ -0,0 +1,115 @@
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
/**
* @dev 智能合约中的一些内置函数
*/
contract Solidity {
// 计算输入的Keccak-256散列
function callKeccak256(bytes memory text)
public
pure
returns (bytes32 result)
{
return keccak256(text);
}
function callKeccak256(string memory text)
public
pure
returns (bytes32 result)
{
return keccak256(bytes(text));
}
// 计算输入的SHA-256散列
function callSha256(bytes memory text) public pure returns (bytes32) {
return sha256(text);
}
function callRipemd160(bytes memory text) public pure returns (bytes20) {
return ripemd160(text);
}
/**
* @dev 数值的另一种标记方式
*/
function totalSupply() public pure returns (uint256) {
return 9_527_000_000e6;
}
/**
* @dev 获取当前区块链的CHAINID
*/
function chainId() public view virtual returns (uint256) {
uint256 _chainId;
assembly {
_chainId := chainid()
}
return _chainId;
}
/**
* @dev 当前时间戳,单位秒。
*/
function timestamp() public view virtual returns (uint256) {
return block.timestamp;
}
/**
* @dev 获取当前区块链高度
*/
function height() public view virtual returns (uint256) {
return block.number;
}
/**
* @dev 当前区块的难度
*/
function difficulty() public view virtual returns (uint256) {
return block.difficulty;
}
/**
* @dev 当前区块的gaslimit
*/
function gaslimit() public view virtual returns (uint256) {
return block.gaslimit;
}
/**
* @dev 当前区块矿工的地址
*/
function coinbase() public view virtual returns (address) {
return block.coinbase;
}
/**
* @dev 剩余 gas
*/
function gasLeft() public view virtual returns (uint256) {
return gasleft();
}
/**
* @dev 交易中发送者愿意支付的价格
*/
function gasPrice() public view virtual returns (uint256) {
return tx.gasprice;
}
/**
* @dev 这笔交易的发送者。 在开发中避免使用合约调用有Delegate call的方式可能不会与你的预期不一致。
*/
function origin() public view virtual returns (address) {
return tx.origin;
}
// msg.data (bytes calldata) 完成 calldata
// msg.sender (address payable) 消息发送者 (当前 caller)
// msg.sig (bytes4) calldata的前四个字节 (function identifier)
// msg.value (uint) 当前消息的wei值
}

View File

@@ -24,7 +24,14 @@ contract MyERC20 is
uint8 decimals_
) ERC20(name_, symbol_) {
_decimals = decimals_;
_mint(msg.sender, totalSupply_);
_mint(msg.sender, totalSupply_ * (10 ** decimals_));
}
/**
* @dev 获取当前区块链高度
*/
function height() public view virtual returns (uint256) {
return block.number;
}
function decimals() public view virtual override returns (uint8) {
@@ -36,7 +43,6 @@ contract MyERC20 is
address to,
uint256 amount
) internal virtual override(ERC20, ERC20Pausable, ERC20Snapshot) {
ERC20Pausable._beforeTokenTransfer(from, to, amount);
ERC20Snapshot._beforeTokenTransfer(from, to, amount);
super._beforeTokenTransfer(from, to, amount);
}
}

View File

@@ -0,0 +1,39 @@
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
import "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
contract UpgradeableERC1155 is ERC1155Upgradeable, OwnableUpgradeable {
string private _name;
string private _symbol;
function name() public view virtual returns (string memory) {
return _name;
}
function symbol() public view virtual returns (string memory) {
return _symbol;
}
function initialize(
string memory tokenName_,
string memory symbol_,
string memory uri_
) public initializer {
_name = tokenName_;
_symbol = symbol_;
__ERC1155_init(uri_);
__Ownable_init();
}
function mint(
address to,
uint256 id,
uint256 amount
) public virtual {
super._mint(to, id, amount, bytes(""));
}
}

13
src/小记.md Normal file
View File

@@ -0,0 +1,13 @@
## chainId
```solidity
function chainId() public virtual view returns (uint256) {
uint256 _chainId ;
assembly {
_chainId := chainid()
}
return _chainId;
}
```