Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- MySQL
- Programming
- web
- 트랜잭션
- erc
- ERC20
- tcp
- Ethereum
- ERC165
- JavaScript
- truffle
- 블록체인
- web3.js
- NFT
- 솔리디티
- 네트워크
- solidity
- git
- 제어의역전
- Python
- web3
- geth
- server
- Docker
- 스마트 컨트랙트
- github
- blockchain
- erc721
- ethers
- 이더리움
Archives
- Today
- Total
멍개의 연구소
[solidity] library, enum 본문
· library
library는 컨트랙트를 라이브러리처럼 사용할 수 있도록 도와줍니다. 다만 library를 사용하기 위해선 using ~ for ~ 키워드를 이용합니다.
pragma solidity 0.8.9;
library MyLibrary {
struct data {
string name;
uint age;
}
function add(uint a, uint b) external pure returns (uint) {
return a + b;
}
}
library Math {
function add (uint _a, uint _b) external pure returns (uint) {
return _a + _b;
}
function sub (uint _a, uint _b) external pure returns (uint) {
return _a - _b;
}
}
contract MyContract {
using MyLibrary for MyLibrary.data;
using Math for *;
MyLibrary.data charactor;
function getA () public view returns (MyLibrary.data memory) {
return charactor;
}
function setA (string memory _name, uint _age) public {
charactor = MyLibrary.data(_name, _age);
}
function mathAdd (uint _a, uint _b) public pure returns (uint) {
return Math.add(_a, _b);
}
function mathSub (uint _a, uint _b) public pure returns (uint) {
return Math.sub(_a, _b);
}
}
만약 MyLibrary와 Math를 별도의 파일로 분리한다고 하면 import로 가져온 후 사용할 수 있습니다.
// library.sol
pragma solidity 0.8.9;
library MyLibrary {
struct data {
string name;
uint age;
}
function add(uint a, uint b) external pure returns (uint) {
return a + b;
}
}
library Math {
function add (uint _a, uint _b) external pure returns (uint) {
return _a + _b;
}
function sub (uint _a, uint _b) external pure returns (uint) {
return _a - _b;
}
}
pragma solidity 0.8.9;
import './library.sol';
contract MyContract {
using MyLibrary for MyLibrary.data;
using Math for *;
MyLibrary.data charactor;
function getA () public view returns (MyLibrary.data memory) {
return charactor;
}
function setA (string memory _name, uint _age) public {
charactor = MyLibrary.data(_name, _age);
}
function mathAdd (uint _a, uint _b) public pure returns (uint) {
return Math.add(_a, _b);
}
function mathSub (uint _a, uint _b) public pure returns (uint) {
return Math.sub(_a, _b);
}
}
· enum
pragma solidity 0.8.9;
contract MyContract {
enum bb { a1, a2, a3 }
function getA() public pure returns (bb) {
return bb.a1;
}
}
enum은 연속된 자연수를 특정 문자열에 맵핑하여 관리할 때 유용합니다.
enum은 상수를 변수로 관리하는데 의의가 있습니다.
'블록체인' 카테고리의 다른 글
[ethereum] solidity overflow, underflow에 대해서 (0) | 2022.08.28 |
---|---|
[ethereum] input data의 methodId와 event signature 만드는 방법 (0) | 2022.08.28 |
[solidity] 에러함수 - require, revert, assert (0) | 2022.08.28 |
[Ethereum] genesis 초기화 시 cannot unmarshal 에러 해결법 (0) | 2022.08.28 |
[Ethereum] EIP1559 네워크축 구축을 위한 제네시스 설정방법 (0) | 2022.08.28 |
Comments