블록체인 개발이 연봉 억대 넘는 건데.
저도 나름 고급정보 공유 드립니다. ㅎㅎㅎ
====================================================
제가 배운 이더리움 개발에 대해서 한 줄 쓸려고 합니다.
먼저 개발툴인데요.
저는 remix로 배웠습니다.
remix는 IDE 통합개발환경입니다.
쉽게 말해서
여기 remix에서 컴파일해서 실행파일 만드는 것. 입니다.
remix.
http://remix.ethereum.org/
툴을 알았으면
이제 remix에서
예제를 하나 실행해봅시다.
pragma solidity ^0.4.0;
contract SimpleStorage {
uint storedData;
function set(uint x){
storedData = x;
}
function get() returns (uint retVal){
return storedData;
}
}
이 예제를 그대로 따라 치시고,
마지막에 컴파일 누르시면 됩니다.
그러면 에러나요. ㅇ_ㅇ;;;
하앜.
그래서 오른쪽의 셋팅에서 버전을 맞춰줍니다.
pragma solidity ^0.4.0;
이게 버전 선언이거든요.
0.4.0 버전이니까 맞춰주면 에러 없어집니다.
그리고 컴파일을 눌러주세요. 그러면 에러없음.
여기서 더 문제가 생기신 분들은 119에 전화해서 물어보시길.
그러면 2번째 예제입니다.
pragma solidity ^0.4.0;
contract kisacoin {
mapping(address => uint) public balances;
uint KISA_PER_WEI = 50000000000000000;
function buyCoin(){
balances[msg.sender] += msg.value/KISA_PER_WEI;
if(!msg.sender.send(msg.value % KISA_PER_WEI))
throw;
}
function sellCoin(uint amount){
if(balances[msg.sender] >= amount){
balances[msg.sender] -=amount;
if(!msg.sender.send(amount*KISA_PER_WEI)){
throw;
}
}
}
function showMyCoin() returns(uint amount){
return balances[msg.sender];
}
}
여기까지 쳐서
컴파일을 눌러보세요.
되긴 됩니다. 의미는 모르겠음. ㅇ_ㅇ;;;
그렇다면 3번째 예제입니다.
contract SampleCoin {
address deployer;
mapping(address=>uint) balances;
function DumbCoin() {
// TODO
}
// give coin only can be executed by deployer
function giveCoins(uint amount, address receiver) {
// TODO
}
function viewBalance() returns (uint) {
// TODO
}
}
4번째 예제입니다.
pragma solidity ^0.4.0;
contract SampleCoin {
address deployer;
mapping(address=>uint) balances;
function DumbCoin() {
deployer = msg.sender;
}
// give coin only can be executed by deployer
function giveCoins(uint amount, address receiver) {
if(msg.sender == deployer){
balances[receiver] += amount;
}
else{
throw;
}
}
function viewBalance() returns (uint) {
return balances[msg.sender];
}
}
5번째 예제입니다.
pragma solidity ^0.4.0;
import "./ERC20Interface.sol"
contract KISAERC20COIN is ERC20Interface{
uint public _totalSupply = 1000;
mapping(address => uint) balances;
mapping(address => mapping(address => uint)) allowance
function totalSupply() constant returns (uint256 totalSupply){
return _totalSupply;
}
function balanceOf(address _owner) constant returns (uint256 balance){
return balances[_owner];
}
function transfer(address _to, uint256 _value) returns (bool success){}
function transferFrom(address _from, address _to, uint256 _value) returns (bool success){
uint allowance = allowed[_from][msg.sender];
require(_value <= allowance && balances[_from] >= _value);
balances[_from] -= _value;
balances[_to] += _value;
Transfer(_from, _to, _value);
return true;
}
function approve(address _spender, uint256 _value) returns (bool success){
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
function allowance(address _owner, address _spender) constant returns (uint256 remaining){}
event Transfer(address indexed _from, address indexed _to, uint256 _value){}
event Approval(address indexed _owner, address indexed _spender, uint256 _value){}
}
요기까지 배운 걸로
DAPP 만들 수 있다고 하던데
솔직히 뭐가 뭔지 잘 모르겠어요.
그냥 좋은 자료 같아서 공유해드립니다.
솔리디티의 다른 예제들.
https://github.com/topchaebol/solidity-baby-steps
솔리디티 문법 참조 페이지
http://solidity.readthedocs.io/en/develop/types.html
https://theethereum.wiki/w/index.php/Main_Page
이더리움 DAPP 설명
https://www.ethereum.org/token
이더리움 개발 한 번 해보세요.
그 까이꺼 뭐 쉽습니다.
(아직 저도 못해봤습니다만
저도 도전 ㅋㅋㅋ)
감사합니다.