- Solidity
- Base OS: Ubuntu 18.04
- Base Image: ethereum/solc:0.4.24
- Docker 설치
- Truffle@4.1.15
cd sc
sudo docker build -t [image:tag] .
sudo docker run -it --rm [image:tag] --optimize --bin Faucet.sol
sudo docker run -it --rm [image:tag] --abi Faucet.sol함수
function FunctionName([parameters]) {public|private|internal|external}
[pure|constant|view|payable] [modifiers] [returns (return types)]생성자(constructor)
pragma ^0.4.22
contract MEContract {
constructor () {
}
}SELFDESTRUCT
selfdestruct(address recipient);함수 변경자(modifier)
modifier onlyOwner {
require(msg.sender == owner);
_;
}컨트랙트 상속
contract Child is Parent {
...
}예외 처리
require(msg.sender == owner, "Only Contract Owner");이벤트
contract Faucet is mortal {
event Withdrawal(address indexed to, uint amount);
[...]
function withdraw(uint withdraw_amount) public {
[...]
emit Withdrawal(msg.sender, withdraw_amount);
}wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
command -v nvm // nvm 출력되면 설치nvm install --lts
node -v
npm -vnode -v > .nvmrc
nvm install
npm -g install truffle@4.1.15mkdir Faucet
cd Faucet
truffle init
Faucet/
├── contracts
│ └── Migrations.sol
├── migrations
│ └── 1_initial_migration.js
├── test
└── truffle-config.js
# 트러플 네트워크 설정
vi truffle-config.js
networks: {
localnode: {
host: "127.0.0.1", // Localhost (default: none)
port: 8545, // Standard Ethereum port (default: none)
network_id: "*", // Any network (default: none)
gas: 3141592
// }
# truffle-config 가스 조회 (이더리움 노드에서 실행)
eth.getBlock("latest").gasLimit
npm init
npm install dotenv truffle-wallet-provider ethereumjs-wallet
cd ..
copy sc/faucet.sol Faucet/contracts # 컨트랙트를 프로젝트 내부 contracts 디렉토리로 복사
cd Faucet
truffle compile # 컨트랙트 컴파일
# Faucet 컨트랙트 배포를 위한 마이그레이션 파일 생성
cd migrations
vi 2_deploy_contracts.js
var Faucet = artifacts.require("./Faucet.sol");
module.exports = function(deployer) {
deployer.deploy(Faucet);
};
# 트러플 마이그레이션 배포
truffle migrate --network localnode