___|  _ \   |  |    |   |_ _|\ \     / ____|
 |     |   |  |  |    |   |  |  \ \   /  __|
 |   | |   | ___ __|  ___ |  |   \ \ /   |
\____|\___/     _|   _|  _|___|   \_/   _____| 

 --- A GOPHER-LIKE INTERFACE FOR HIVE BLOCKCHAIN ---

이더리움으로 자신만의 토큰 만들기 #5

BY: @elysia | CREATED: Aug. 28, 2018, 1:52 p.m. | VOTES: 5 | PAYOUT: $0.06 | [ VOTE ]

벌써 5번째 업로드입니다~ 이번에는 수수료와 마이닝 관련 내용이네요ㅎ
수수료 부분에서는 토큰을 받는 사람이 수수료를 지불하도록 만드는 방법도 있다니 ㅋㅋㅋㅋ 물론 아직 테스트는 안해봤습니다^^

(본문에 있는 코드는 혹시 모르니 이더리움 홈페이지에서 복사 하는걸 추천 드려요)

원제 : Create your own CRYPTO-CURRENCY with Ethereum
출처 : https://ethereum.org/token

[IMAGE: https://cdn.steemitimages.com/DQmXhEnJn5vFsdVto393btSbBwCv3rjUtuZXcWLerv9w41P/5lJi5beb.jpg]

AUTOMATIC SELLING AND BUYING

지금까지 유틸리티와 신뢰를 토대로 가치를 평가했습니다.
그러나 원하는 경우 자동으로 판매하고 시장 가치로 구매하는 펀드를 만들어서 토큰의 가치를 이더(또는 다른 토큰)가 뒷받침하도록 만들 수 있습니다.
먼저 구매 및 판매 가격을 설정해 보겠습니다.

...................................................................................................

uint256 public sellPrice;
uint256 public buyPrice;

function setPrices(uint256 newSellPrice, uint256 newBuyPrice) onlyOwner {
    sellPrice = newSellPrice;
    buyPrice = newBuyPrice;
}

...................................................................................................

이것은 새로운 가격 변경이 거래를 실행하고 약간의 이더를 소비해야하기 때문에 자주 변경되지 않는 가격에 적용됩니다. 변동 가격을 일정하게 유지하려면 standard data feeds(https://github.com/ethereum/wiki/wiki/Standardized_Contract_APIs#data-feeds)를 조사하는 것이 좋습니다.
다음 단계는 구매 및 판매 기능을 만드는 것입니다.

...................................................................................................

functionbuy() payablereturns (uint amount){
    amount = msg.value / buyPrice;                    // calculates the amount
    _transfer(this, msg.sender, amount);
    return amount;
}

functionsell(uint amount) returns (uint revenue){
    require(balanceOf[msg.sender] >= amount);         // checks if the sender has enough to sell
    balanceOf[this] += amount;                        // adds the amount to owner's balance
    balanceOf[msg.sender] -= amount;                  // subtracts the amount from seller's balance
    revenue = amount * sellPrice;
    msg.sender.transfer(revenue);                     // sends ether to the seller: it's important to do this last to prevent recursion attacks
    Transfer(msg.sender, this, amount);               // executes an event reflecting on the change
    return revenue;                                   // ends function and returns
}

...................................................................................................

이것은 새로운 토큰을 생성하지는 않지만 계약이 소유하는 잔액을 변경함을 주목하십시오.
이 계약은 자체 토큰과 이더 및 계약 소유자를 둘 다 보유 할 수 있지만 가격을 설정하거나 경우에 따라 은행의 토큰 또는 이더를 만질 수없는 새로운 토큰(해당되는 경우)을 만들 수 있습니다.
이 계약이 자금을 이동할 수 있는 유일한 방법은 그것들을 판매하고 구매하는 것입니다.

Note

"가격"은 이더에서는 설정되지 않지만 wei에서는 시스템의 최소 통화 (유로 및 달러의 센트 또는 Bitcoin의 Satoshi와 동일)로 설정됩니다.
  1 ETH는 1000000000000000000 wei입니다.
따라서 이더에서 토큰 가격을 설정할 때 마지막에 18 개의 0을 추가하십시오.
계약서를 작성할 때 시장에 있는 모든 토큰을 다시 구매할 수 있도록 충분한 Ether을 보내야합니다. 그렇지 않으면 계약이 파산하여 사용자가 토큰을 판매 할 수 없게 됩니다.
이전 예제는 물론 단일 중앙 구매자와 판매자와의 계약을 설명했지만, 훨씬 더 흥미로운 계약은 누구나 다른 가격을 입찰 할 수 있는 시장을 허용하거나 아니면 외부 소스에서 가격을 직접로드 할 수 있게 합니다.

AUTOREFILL

Ethereum에서 거래를 할 때마다 스마트 계약의 결과를 계산할 블록 채굴자에게 수수료를 지불해야합니다.
이것은 미래에 변경 될 수 있지만(https://github.com/ethereum/EIPs/issues/28), 순간적으로 수수료는 이더로만 지불 될 수 있으므로 당신의 토큰을 사용하는 모든 사용자는 이를 필요로 합니다. 수수료보다 잔액(이더)이 적은 계정의 토큰은 소유자가 필요한 수수료를 지불 할 수 있을 때까지 붙어 있습니다.
그러나 일부 사용 케이스에서는 사용자가 Ethereum에 대해 (블록체인이나 어떻게 이더를 얻을지)생각하기를 원하지 않을 수도 있습니다. 그래서 가능한 한 가지 접근법은 잔액이 위험 할 정도로 낮으면 동전이 자동으로 사용자의 잔액을 보충 하도록 합니다. 이를 위해서, 먼저 임계값을 유지할 변수와 이를 변경하는 함수를 만들어야합니다. 값을 모르는 경우 5 finney (0.005 에테르)로 설정하십시오.

...................................................................................................

uintpublic minBalanceForAccounts;

function setMinBalance(uint minimumBalanceInFinney) onlyOwner {
     minBalanceForAccounts = minimumBalanceInFinney * 1 finney;
}

...................................................................................................

그런 다음이 함수를 전송 함수에 추가하여 보낸 사람을 환불합니다.

...................................................................................................

/* Send coins */
functiontransfer(address _to, uint256 _value) {
    ...
    if(msg.sender.balance < minBalanceForAccounts)
        sell((minBalanceForAccounts - msg.sender.balance) / sellPrice);
}

...................................................................................................

대신 발신자가 수신자에게 요금을 지불하도록 변경할 수도 있습니다.

...................................................................................................

/* Send coins */
function transfer(address _to, uint256 _value){
    ...
    if(_to.balance= bytes8(difficulty));                   // Check if it's under the difficulty

    uint timeSinceLastProof = (now - timeOfLastProof);  // Calculate time since last reward was given
    require(timeSinceLastProof >=  5 seconds);         // Rewards cannot be given too quickly
    balanceOf[msg.sender] += timeSinceLastProof / 60 seconds;  // The reward to the winner grows by the minute

    difficulty = difficulty * 10 minutes / timeSinceLastProof + 1;  // Adjusts the difficulty

    timeOfLastProof = now;                              // Reset the counter
    currentChallenge = sha3(nonce, currentChallenge, block.blockhash(block.number - 1));  // Save a hash that will be used as the next proof
}

...................................................................................................

또한 Constructor function (처음 업로드 시, 호출되는 계약과 동일한 이름을 가진)을 변경하여 이 행을 추가하면,
난이도 조정은 미치지(crazy) 않을 것입니다.

...................................................................................................

timeOfLastProof = now;

...................................................................................................

계약서가 온라인 상태가 되면 "작업 증명"기능을 선택하고 nonce field에 원하는 번호를 추가하여 실행하십시오.
확인 창이 "Data can't be execute"라는 빨간색 경고 메시지가 나타나면 거래가 진행될 때까지 다른 번호를 선택 하십시오. 이 프로세스는 임의적입니다. 하나를 찾으면 마지막 보상이 주어 졌으므로 매 순간마다 1 토큰을 받게 됩니다. 그리고 챌린지 난이도는 보상 당 평균 10 분을 목표로 위아래로 조정됩니다.

보상을 제공하는 번호를 찾으려는 이 프로세스는 ‘마이닝’이라고 하는 것입니다. 난이도가 높아지면 행운의 숫자를 찾는 것이 매우 어려울 수 있지만, 발견 한 것을 확인하는 것은 언제나 쉽습니다.

TAGS: [ #kr ] [ #crypto ] [ #blockchain ] [ #bitcoin ] [ #ethereum ]

Replies

@steamsteem | Aug. 28, 2018, 8:20 p.m. | Votes: 3 | [ VOTE ]

음.. 글이라는 것이 길이를 조절하기 나름이겠지만,
eos 토큰 만드는 것은 한페이지 정도로 간단했던 것 같은데,
eth 토큰 만드는 것은 5 페이지를 넘어가는군요.

그래서 eos 가 eth 킬러 라고 내세우는 것인지.. ??

smt 는 더 편할 것이라는 주장을 하고는 있는 것 같은데,
과연 일정대로 나올지 의문이네요.

이미 제가 처음 본 일정이 2018.03 정도라고 했던 것 같은데, ??
2019.03 으로 공식 일정이 나온듯 ?

아직 잘 모르지만, 얼핏 몇개월 접한 느낌이,
ned 와 vitalik 은 말 뿐이고, ??
dan larimer 가 진정 실력자인 듯.. ??

@elysia | Aug. 29, 2018, 12:24 p.m. | Votes: 1 | [ VOTE ]

예전에 다른분이 요청해주신게 있어서 EOS 토큰 만들기도 번역해 볼 예정 입니다.
@steamsteem님 께서도 EOS 말씀을 하셔서 홈페이지(https://developers.eos.io/eosio-cpp/docs/quick-start-token)에 들어가봤더니 토큰 만들기 보기 전에 C언어부터 공부해야 될지도 모르겠더군요;;;

@steamsteem | Aug. 29, 2018, 6:07 p.m. | Votes: 2 | [ VOTE ]

eos token 만들기 홈페이지,
@elysia 님 좋은 정보 감사.

결국 빠른 무엇인가를 만들려면, c, c++ 로 가야하고,
편한 무엇인가를 만들려면, python, js 등으로 가야하는 것인가 보군요 ?

--

혹시 smt 로 steem 토큰 만드는 것도 이미 알려져 있으면,
방법을 올려주시면 더욱 더 감사드리겠습니다.

--

이것 초면에 너무 요구 사항이 많은지 모르겠는데,
간단한 steem bot 예를 들면, 댓글 봇이나, 보팅 봇 만드는 것도
언제 편하게 시간 되실때, 올려주시면 감사..

@elysia | Sept. 1, 2018, 8:38 a.m. | Votes: 1 | [ VOTE ]

smt로 토큰 만드는것은 한번 찾아봐야 할 것 같네요. 아직 이더리움도 잘 몰라서 열심히 공부중입니다ㅎㅎ
스팀봇은 저도 어떻게 만드는지를 모르겠어요. 제가 프로그래밍쪽을 모르다보니...^^;;
근데 보팅봇 만들 수 있으면 정말 편하겠네요ㅎ

@steamsteem | Sept. 1, 2018, 2:45 p.m. | Votes: 2 | [ VOTE ]

아.. 프로그래밍을 모르시고도 eth eos 토큰 만드는 것을 따라하실 수 있는 정도로 이해가 되나 보군요.
저는 프로그래밍 도사들이나 따라할 수 있을까 걱정했는데요,

smt token 은 프로그램 몰라도 따라 할 수 있을 듯이 홍보하는 것 같기는 하더라고요.
저도 얼핏 어깨 넘어로 본 것이라, 정확한 정보는 아니고요.

암튼 관련 자료 올려주시면, 감사드립니다.

@elysia | Sept. 2, 2018, 7:19 a.m. | Votes: 1 | [ VOTE ]

네 감사합니다~~^^
저도 smt 홈페이지 들어가보니 관심이 생기더라구요ㅎ
관련정보를 계속 찾아봐야겠어요 :-)

@steamsteem | Sept. 2, 2018, 9:55 a.m. | Votes: 2 | [ VOTE ]

smt 홈페이지는 어디인가요?
저는 아직 그것도 모르고 있다는..

글구, smt 로 token 만드는 방법도 따라해 볼 수 있게 해주시면 감사드리겠습니다.

@steamsteem | Aug. 30, 2018, 3:40 a.m. | Votes: 2 | [ VOTE ]

https://steemit.com/kr/@elysia/re-steamsteem-re-elysia-5-20180829t122449483z

"예전에 다른분이 요청해주신게 있어서 EOS 토큰 만들기도 번역해 볼 예정 입니다.
@steamsteem님 께서도 EOS 말씀을 하셔서 홈페이지에 들어가봤더니 토큰 만들기 보기 전에 C언어부터 공부해야 될지도 모르겠더군요;;;
SMT는 어떤게 편하다는 건지 모르겠습니다. SMT 기반의 토큰 제작이 편하다는 건지 사용하기가 편하다는건지...."

아마 수정하시기 전의 글을 본것 같은데요,

-->

smt 는 클릭 몇번으로 쉽게 token 만들수 있다
는 둥 어떻다는 둥

그런 취지의 말을 얼핏 본 것 같아서, ??
관심이 생기더군요.

@elysia | Sept. 1, 2018, 9:21 a.m. | Votes: 1 | [ VOTE ]

https://smt.steem.io/에 들어가보니 토큰만드는 방법이 간단하게 설명되어있네요ㅎ
정말 이렇게 간단하게 만들 수 있다면 좋을텐데 아직 개발중인가봐요ㅜㅜ

[ BACK TO TRENDING ] [ BACK TO MENU ]
CMD>