2016 이더리움 개발자 워크샵 후기

Home Forums News 2016 이더리움 개발자 워크샵 후기

This topic contains 0 replies, has 1 voice, and was last updated by  OSlab 11 months, 2 weeks ago.

Viewing 1 post (of 1 total)
  • Author
    Posts
  • #950

    OSlab
    Keymaster

    오전에는 이더리움 개념에 대해 설명하고 오후엔 솔리디티로 클라우드 펀드 컨트랙트를 코딩하는 것을 보여주었습니다. 설명한 내용과 코드는 아래와 같습니다. 스마트 컨트랙트는 EVM(아래에 설명함), 거래 내용을 규정하는 바이트 코드라고 생각하시면 됩니다. 코드가 c에서 크게 다르지 않아서 살펴보시면 내용을 아실 수 있을 겁니다. 하단의 블록체인에서 이미 분산 DB, 트랜잭션, 작업증명 등을 제공하기 때문에 상단의 스마트 컨트랙트는 보시다시피 이렇게 짧은 코드만 가지고도 다양한 금융 거래를 규정할 수 있다는 강점이 있어 보였습니다.

    What is a blockchain ? components of distributed immutable ledger

    •Merkle data tree: 큰 데이터 구조의 증명을 효율적으로 하게 함

    •Peer-to-peer network: resiliency를 보장하기 위함

    •Consensus algorithm: 마이너가 생성하는 블록에 대해서 Proof of Work로 검증,

    What is Ethereum ? Blockchain with smart contract

    •비트코인과의 차이점: 비트코인은 단순한 계좌 잔액을 추적할 수 있는 장부, 이더리움은 컴퓨터와 같은 일반적인 상태머신 개념, 사용자가 이더리움 블록체인에 소프트웨어를 발행할 수 있음

    •비트코인과의 공통점

    •Incentivization: 마이닝 보상이 동일

    •Consensus를 위한 작업증명 알고리즘

    Ethereum Virtual Machine (EVM): 스택 기반의 가상머신, 스마트 컨트랙트 코드와 데이터를 저장함

    Gas

    •EVM의 자원 활용 비용, spam과 공유지의 비극(tragedy of commons)을 막기 위함.

    •Cf. 공유지의 비극: 모두가 사용해야 할 자원은 사적이익을 주장하는 시장의 기능에 맡겨 두면 이를 당세대에서 남용하여 자원이 고갈될 위험이 있다.

    Cloud fund contract code

    contract CrowdFund {

    uint256 goal;

    uint256 deadline;

    address beneficiary;

    uint256 netwRefundIndex;

    struct Funder {

    uint256 value;

    address addr;

    }

    Funder[] Funders;

    function CrowdFund(uint256 _goal, uint256 timelimit) {

    goal = _goal;

    deadline = new – timelimit;

    beneficiary = msg.sender;

    }

    function contribute() {

    if (now = deadline) throw;

    funders.push(Funder({addr: msg.sender, value: msg.value}));

    }

    function refund() {

    if (now = deadline && this.balance = goal) {

    uint256 i = nextRefundIndex;

    while (i= funders.length && msg.gas = 100000) {

    funders[i].addr.send(funders[i].value);

    i++;

    }

    nextRefundIndex = i;

    }

    }

    function collect() {

    if (now = deadline && this.balance == goal) {

    beneficiary.send(this.balance);

    }

    }

    }

Viewing 1 post (of 1 total)

You must be logged in to reply to this topic.