develop custom_top_html:no
default debug random = 2 / type = READ / detected = READ
30분만에 ICO하기
 
안녕하세요. 오늘은 조금 자극적인 제목을 가지고 와봤습니다. 요즘 ICO 많이들 참여하시고,  직접 하시는 분들도 많이 계신데요. ICO에 필요한 토큰을 단 30분 만에 발행하는 방법을 소개해볼까 합니다.
 
준비물은 단 한 가지. mist 지갑입니다. 이 mist 지갑에는 스마트 컨트랙을 발행하는 기능이 있는데요. 여기에 아래와 같이 ERC20 표준에 해당하는 코드를 넣고 발행하기만 하면, 순식간에 토큰 하나가 뚝딱 만들어집니다.
 
코드 예시 : 
 
pragma solidity ^0.4.16;
interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) public; }
contract TokenERC20 {
    // Public variables of the token
    string public name;
    string public symbol;
    uint8 public decimals = 18;
    // 18 decimals is the strongly suggested default, avoid changing it
    uint256 public totalSupply;
    // This creates an array with all balances
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;
    // This generates a public event on the blockchain that will notify clients
    event Transfer(address indexed from, address indexed to, uint256 value);
    // This notifies clients about the amount burnt
    event Burn(address indexed from, uint256 value);
    /**
     * Constructor function
     *
     * Initializes contract with initial supply tokens to the creator of the contract
     */
    function TokenERC20(
        uint256 initialSupply,
        string tokenName,
        string tokenSymbol
    ) public {
        totalSupply = initialSupply * 10 ** uint256(decimals);  // Update total supply with the decimal amount
        balanceOf[msg.sender] = totalSupply;                // Give the creator all initial tokens
        name = tokenName;                                   // Set the name for display purposes
        symbol = tokenSymbol;                               // Set the symbol for display purposes
    }
    /**
     * Internal transfer, only can be called by this contract
     */
    function _transfer(address _from, address _to, uint _value) internal {
        // Prevent transfer to 0x0 address. Use burn() instead
        require(_to != 0x0);
        // Check if the sender has enough
        require(balanceOf[_from] >= _value);
        // Check for overflows
        require(balanceOf[_to] + _value > balanceOf[_to]);
        // Save this for an assertion in the future
        uint previousBalances = balanceOf[_from] + balanceOf[_to];
        // Subtract from the sender
        balanceOf[_from] -= _value;
        // Add the same to the recipient
        balanceOf[_to] += _value;
        Transfer(_from, _to, _value);
        // Asserts are used to use static analysis to find bugs in your code. They should never fail
        assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
    }
    /**
     * Transfer tokens
     *
     * Send `_value` tokens to `_to` from your account
     *
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
    function transfer(address _to, uint256 _value) public {
        _transfer(msg.sender, _to, _value);
    }
    /**
     * Transfer tokens from other address
     *
     * Send `_value` tokens to `_to` on behalf of `_from`
     *
     * @param _from The address of the sender
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(_value <= allowance[_from][msg.sender]);     // Check allowance
        allowance[_from][msg.sender] -= _value;
        _transfer(_from, _to, _value);
        return true;
    }
    /**
     * Set allowance for other address
     *
     * Allows `_spender` to spend no more than `_value` tokens on your behalf
     *
     * @param _spender The address authorized to spend
     * @param _value the max amount they can spend
     */
    function approve(address _spender, uint256 _value) public
        returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        return true;
    }
    /**
     * Set allowance for other address and notify
     *
     * Allows `_spender` to spend no more than `_value` tokens on your behalf, and then ping the contract about it
     *
     * @param _spender The address authorized to spend
     * @param _value the max amount they can spend
     * @param _extraData some extra information to send to the approved contract
     */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData)
        public
        returns (bool success) {
        tokenRecipient spender = tokenRecipient(_spender);
        if (approve(_spender, _value)) {
            spender.receiveApproval(msg.sender, _value, this, _extraData);
            return true;
        }
    }
    /**
     * Destroy tokens
     *
     * Remove `_value` tokens from the system irreversibly
     *
     * @param _value the amount of money to burn
     */
    function burn(uint256 _value) public returns (bool success) {
        require(balanceOf[msg.sender] >= _value);   // Check if the sender has enough
        balanceOf[msg.sender] -= _value;            // Subtract from the sender
        totalSupply -= _value;                      // Updates totalSupply
        Burn(msg.sender, _value);
        return true;
    }
    /**
     * Destroy tokens from other account
     *
     * Remove `_value` tokens from the system irreversibly on behalf of `_from`.
     *
     * @param _from the address of the sender
     * @param _value the amount of money to burn
     */
    function burnFrom(address _from, uint256 _value) public returns (bool success) {
        require(balanceOf[_from] >= _value);                // Check if the targeted balance is enough
        require(_value <= allowance[_from][msg.sender]);    // Check allowance
        balanceOf[_from] -= _value;                         // Subtract from the targeted balance
        allowance[_from][msg.sender] -= _value;             // Subtract from the sender's allowance
        totalSupply -= _value;                              // Update totalSupply
        Burn(_from, _value);
        return true;
    }
}
 
 
 
KakaoTalk_20180218_203831395.png

 

 
 
어때요 정말 쉽지 않나요? SUPERTOKEN이라는 이름을 가진 토큰이 하나 만들어졌습니다. 이 과정에서 가장 어려운 일은 mist 지갑을 준비하는 일입니다. mist 지갑은 이더리움 네트워크와 싱크를 맞추기 위해서 상당한 시간이 소요됩니다. 적어도 하루는 잡아야 하고요. PC 사양에 따라서 오래 걸릴 경우에는 일주일 이상 소요될 수 있습니다.
 
여기서 우리는 몇 가지 시사점을 얻을 수 있습니다.
 
 
1. 생각보다 많은 ICO들이 이런 허접한 컨트랙을 가지고 ICO를 진행합니다. 컨트랙이 공개된 몇몇 해외 유명 ICO들과 국내 ICO들을 뒤져보면, 30분 만에 찍어낸 수준으로 토큰을 발행한 곳들이 많습니다. ICO에 거액이 투자되는데도 사람들은 내용을 모르고 너무 쉽게 쉽게들 투자하죠. 
 
2. 그렇지만 토큰 발행에는 그닥 많은 기능이 필요하지 않은 게 사실이기도 합니다. 요즘 ICO에 필수라고 여겨지는 KYC나 토큰 전송 기능, 아무나 컨트랙에 손대지 못하게 하는 권한 분배, 최근 NEM 해킹 사태처럼 비상 사태가 발생했을 때 대처할 수 있는 기능들, DApp 개발 후에 포크를 위한 포크 기능 정도면 충분합니다. 그러나 이정도도 없이 30분 완성 컨트랙으로 적당히 ICO를 때우려는 사람들이 있는 것도 사실이죠.
 
3. ICO는 끝이 아니라 시작입니다. 많은 ICO 주최자들과 심지어는 참여자들까지도 간과하고 있는 사실이 바로 ICO는 시작에 불과하다는 점입니다. 주최자들은 물론이고 주최자들을 감시해야 할 참여자들까지도 투더문을 외치는 모습이 바람직하다고만 볼 수는 없습니다. ICO는 DApp을 만들고 사람들이 원하는 서비스를 제공하기 위해 시작하는 것인데, ICO로 거액을 모았다고 해서 그것이 끝인 것처럼 행동해서는 안된다는 것이죠.
 
 
마치며, 첫 ICO를 준비하는 개발자들에게 도움이 될만한 것들을 적어봅니다. 
 
 
미니미 토큰은 포크를 하기 위해 적합한 라이브러리입니다. 소스들을 뜯어보면 알겠지만, 정말 손쉽게 다음 버전의 토큰을 만들어낼 수 있습니다. 토큰 배분 후에 개발을 진행하고, 개발 후에 새로운 기능을 추가해서 토큰 홀더들에게 새 토큰을 발행하는 것까지 이미 완성되어 있습니다. 실제 사용할 때는 약간 수정할 부분들이 있지만, 사용하기에 큰 무리가 없습니다.
 
 
ICO Wizard는 ICO를 준비하는 사람들을 위해서 만들어졌고, 원하는 정보들을 입력하면 필요한 코드를 생성해줍니다. 그대로 사용하기는 무리가 있지만 베이스가 없는 상황에서 구조를 설계하는 것엔 많은 도움이 됩니다. 

 

 

 

-------------------------------------

꼬리말

* 게시글 내용 삭제레벨 강등

* 질문은 각 주제별 게시판에.

 

비트코인 암호화화폐 커뮤니티 땡글~ 땡글~

-------------------------------------

269

파이리님의 서명

Blockchainnovation

ERC20 토큰 개발, 암호화폐 지갑 개발, 스마트 컨트랙 개발

댓글 28
  • ?
    이렇게 전문적으로 아는분들이 얼마나 될까요?
    그냥 돈 된다고 하면 불나방처럼 뛰어들어가는거죠
  • 좋은 정보 감사합니다!
  • 일반분들이 이런 내용을 알아야 할 텐데요.. 삐까뻔쩍한 홈피만 보고 우르르...대박의 꿈만 쫒다보니.
  • esc는 2번 항목 다 갖추고있는지 궁금하네요?
  • @maxsin
    ESC는 이더리움 소스를 이용한 블록체인이고 위 설명은 이더리움 위에 ERC20 토큰입니다.

    범주가 다릅니다.
  • ?
    잘 읽었습니다. 감사합니다.~~
  • ?
    좋은글 잘읽엇습니다... 혹시 코인하나 뚝딱 만들어 주실수 잇는지요?
    쪽지 주시면 감사하겟습니다.
  • @비밀번호
    제가 진행하고 있는 프로젝트들이 있어서 어려울 것 같습니다. 죄송합니다 (_ _)
  • Great~
  • ?
    좋은글 감사합니다
  • ?
    좋은 자료 감사합니다! 암호화폐의 가장 큰 내부의 적은 무한히 증식하는 스캠코인들이 아닐까합니다. 코인에도 저작권 개념이 있었다면 좋았을텐데요. 카피 코인들은 법률적으로는 아니더라도 시장에서 냉정하게 밴시키면 좋겠습니다.
  • ?
    @OldBoy
    대부분 erc20 표준 코드에 이름만 바꾸는게 대부분이라 저작권, 카피 개념 적용이 불가능합니다.
  • ?
    감사합니다. 이런식으로 쉽게 만드는 스캠들이 발생하는거군요
  • 토큰의 위험성이죠
  • ?
    이런 자료들 볼수있는 자료실 카테고리 운영된다면,,,정망 감사할듯,,합니다,
  • ?
    좋아요...~~
  • ?
    이런 글에 좋아요를 주지 않으면 어떤 글에 줘야 할까요..ㅋ 정말 좋은 글입니다.
  • ?
    좋은 글 감사합니다.
  • 이 sentence들이 무슨 언어 인가요?
    따라서 쭉 읽어 보는데 모르는 단어들이 있네요 @param

    1억개의 SPT코인 내용은 알겠는데요

  • 좋은 정보입니다.
    깃허브에 보면 토큰만드는 오픈소스가 많이 올라와 있습니다. 코딩을 스페셜하게 하시는 분들은 직접 코인을 발행하고 지갑도 만들고 노드도 돌리면서 채굴까지 1인이 플렛폼을 다 꾸미기도합니다. 그런 코인들 많습니다.
  • ?
    대부분 위처럼 erc20 표준을 따르는 토큰인데, 저 소스 코드를 개선한다고 해서 NEM 사태를 막을 수 있는 방법이 있나요? 만약에 토큰 창조자가 일종의 동결기능을 만들면 중앙 통제가 일어나는것인데.. 글쓴이 님이 생각하시는 비상상태 대비 코드가 무엇인지 알려주셨으면 합니다
  • ?
    좋은 정보 정말 감사합니다.
  • ?
    올려주신 글 보면서 공부 해보겠습니다.
  • ?
    난 언제 이런 전문가가 될 수 있을까요 ㅎㅎㅎ 감사히 잘 읽었습니다.
  • ?
    혹시요 이더리움 네트워크 와 싱크할때요 소량의 이더리움이 필요한가요??
  • ?
    Rinkeby에서 해봤는데 안되네요...혹시 메인넷에서만 되는건가요?
  • @로텔
    pragma solidity ^0.4.16;
    interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) external; }
    contract TokenERC20 {
    // Public variables of the token
    string public name;
    string public symbol;
    uint8 public decimals = 18;
    // 18 decimals is the strongly suggested default, avoid changing it
    uint256 public totalSupply;
    // This creates an array with all balances
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;
    // This generates a public event on the blockchain that will notify clients
    event Transfer(address indexed from, address indexed to, uint256 value);
    // This notifies clients about the amount burnt
    event Burn(address indexed from, uint256 value);
    /**
    * Constructor function
    *
    * Initializes contract with initial supply tokens to the creator of the contract
    */
    function TokenERC20(
    uint256 initialSupply,
    string tokenName,
    string tokenSymbol
    ) public {
    totalSupply = initialSupply * 10 ** uint256(decimals); // Update total supply with the decimal amount
    balanceOf[msg.sender] = totalSupply; // Give the creator all initial tokens
    name = tokenName; // Set the name for display purposes
    symbol = tokenSymbol; // Set the symbol for display purposes
    }
    /**
    * Internal transfer, only can be called by this contract
    */
    function _transfer(address _from, address _to, uint _value) internal {
    // Prevent transfer to 0x0 address. Use burn() instead
    require(_to != 0x0);
    // Check if the sender has enough
    require(balanceOf[_from] >= _value);
    // Check for overflows
    require(balanceOf[_to] + _value > balanceOf[_to]);
    // Save this for an assertion in the future
    uint previousBalances = balanceOf[_from] + balanceOf[_to];
    // Subtract from the sender
    balanceOf[_from] -= _value;
    // Add the same to the recipient
    balanceOf[_to] += _value;
    emit Transfer(_from, _to, _value);
    // Asserts are used to use static analysis to find bugs in your code. They should never fail
    assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
    }
    /**
    * Transfer tokens
    *
    * Send `_value` tokens to `_to` from your account
    *
    * @param _to The address of the recipient
    * @param _value the amount to send
    */
    function transfer(address _to, uint256 _value) public {
    _transfer(msg.sender, _to, _value);
    }
    /**
    * Transfer tokens from other address
    *
    * Send `_value` tokens to `_to` on behalf of `_from`
    *
    * @param _from The address of the sender
    * @param _to The address of the recipient
    * @param _value the amount to send
    */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
    require(_value <= allowance[_from][msg.sender]); // Check allowance
    allowance[_from][msg.sender] -= _value;
    _transfer(_from, _to, _value);
    return true;
    }
    /**
    * Set allowance for other address
    *
    * Allows `_spender` to spend no more than `_value` tokens on your behalf
    *
    * @param _spender The address authorized to spend
    * @param _value the max amount they can spend
    */
    function approve(address _spender, uint256 _value) public
    returns (bool success) {
    allowance[msg.sender][_spender] = _value;
    return true;
    }
    /**
    * Set allowance for other address and notify
    *
    * Allows `_spender` to spend no more than `_value` tokens on your behalf, and then ping the contract about it
    *
    * @param _spender The address authorized to spend
    * @param _value the max amount they can spend
    * @param _extraData some extra information to send to the approved contract
    */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData)
    public
    returns (bool success) {
    tokenRecipient spender = tokenRecipient(_spender);
    if (approve(_spender, _value)) {
    spender.receiveApproval(msg.sender, _value, this, _extraData);
    return true;
    }
    }
    /**
    * Destroy tokens
    *
    * Remove `_value` tokens from the system irreversibly
    *
    * @param _value the amount of money to burn
    */
    function burn(uint256 _value) public returns (bool success) {
    require(balanceOf[msg.sender] >= _value); // Check if the sender has enough
    balanceOf[msg.sender] -= _value; // Subtract from the sender
    totalSupply -= _value; // Updates totalSupply
    emit Burn(msg.sender, _value);
    return true;
    }
    /**
    * Destroy tokens from other account
    *
    * Remove `_value` tokens from the system irreversibly on behalf of `_from`.
    *
    * @param _from the address of the sender
    * @param _value the amount of money to burn
    */
    function burnFrom(address _from, uint256 _value) public returns (bool success) {
    require(balanceOf[_from] >= _value); // Check if the targeted balance is enough
    require(_value <= allowance[_from][msg.sender]); // Check allowance
    balanceOf[_from] -= _value; // Subtract from the targeted balance
    allowance[_from][msg.sender] -= _value; // Subtract from the sender's allowance
    totalSupply -= _value; // Update totalSupply
    emit Burn(_from, _value);
    return true;
    }
    }
  • ?
    전문가 분들때문에 힘이납니다.. 좋은글감사합니다
default debug random = 0 / type = READ / detected = READ

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
1834 개발 모니터링 프로그램 ver 0.82 업데이트 안녕하세요. 남자별입니다.   어제 하루 잠시 시간이 비어서 0.8 업데이트에 몇몇 기능 개선을 추가했습니다. 주요 업데이트 내용은 다음과 같습니다. 자세한 설명은 압축파일 안에 Readme.txt ... 107 file 97 12960
남자별
2018.03.20
1833 개발 허접하지만 알뜰한 기능의 채굴기 모니터링 프로그램입니다 기능 -채굴기 1set의 평균온도와 해쉬 -모든 그래픽카드들의 온도와 해쉬 -온도와 해쉬의 수치별 색상변화 -각 set별 혹은 그래픽카드별 설정수치시 알람 발생(sms 문자발생, 다수인원 가능) -설... 23 file 93 8222
503
2017.08.12
1832 개발 다중 수천대 가능 무료 원격조정 모니터링 알람 제어 ( 꽁짜 )     천리님 글  1. 마이너 컨픽 파일 수정2. 컨픽 파일 일괄 업로드3. 마이너 재시작4. 컴퓨터 리부팅5. 마이너 버전 업데이트 시 파일 일괄 업로드6. 마이닝 프로그램 일괄 변경 (ex. Claymore... 35 file 76 5799
다롱잉임
2018.04.08
1831 개발 오버클럭을 손쉽게! 이지 오버클럭을 릴리즈 합니다. 안녕하세요, 땡글을 통해 여러가지 도움을 얻고 있는 괴발개발 입니다.   애프터 버너는 좀 무겁고, 옵션이 너무많아 다루기가 쉽지 않습니다. 또한, 여러 그래픽카드의 정보를 한눈에 보기 어려... 70 file 73 6524
괴발개발
2018.04.20
1830 개발 모니터링 프로그램 ver 0.8 업데이트 안녕하세요. 남자별입니다.   0.7 업데이트 이후로 빠르게 업데이트 해드릴려고 했으나 여러 사정이 겹쳐서 이제서야 업데이트 했습니다. 이런저런 문의/요청사항에 대해서 추가 작업 및 명절이 ... 61 file 67 6783
남자별
2018.03.16
1829 개발 모니터링 프로그램 ver 0.6 업데이트 안녕하세요. 남자별입니다.   최근에 개인일이 바빠져서 모니터링 프로그램 업데이트를 당분간 보류할 생각이었으나 갑자기 핫해진 모네로 관련으로 문의가 많으셔서 -_-a 급하게 땜빵 수정했습... 75 file 61 16910
남자별
2017.08.28
1828 개발 누구나 따라할 수 있는 ETN 마이닝 풀 구축 가이드 입니다. 일렉트로니움 마이닝풀 운영을 위한 설치 가이드 입니다.   ETN 마이닝 풀 서버 설치를 해보려고 했는데 node 버전 문제로 여러번의 실패로 우분투를 재설치하면서 여러번의 삽질을 하여 성공하... 61 60 11922
번트마이너
2018.02.11
1827 개발 오픈소스 거래소 깃헙 공개하였습니다. 안녕하세요 몇일전 거래소 오픈소스로 깃헙에 공개하겠다고한 coinext 개발자입니다. 좀더 리팩토링이나, 보완할걸 하고 공개하려고 했는데, 전반적으로 크게 문제는 없어보여 선공개합니다. 시... 42 57 18805
coinext
2017.12.20
1826 개발 모니터링 프로그램 ver 0.7 업데이트 안녕하세요. 남자별입니다.   최근에 몇몇 분들이 개인적으로 Bminer 지원을 요청하시기에 api 분석만 하고 바로 적용했습니다. Bminer 지원 이외에 다른 수정사항은 아직 적용하기전이라 Bminer... 84 file 53 15326
남자별
2018.01.08
1825 개발 안녕하세요. 오픈소스로 자동 트레이딩+알림 봇 공유합니다.   파이썬3로 제작되었고요.   1. 텔레그램에서 문자인증 받고 자동으로 로그인하는 기능. 2. 텔레그램에서 해당 채널의 메시지를 자동으로 읽는 기능. 3. 읽은 메시지를 정규표현식으로 분석해서... 24 file 48 25236
소프트
2018.01.12
1824 개발 모니터링 프로그램 ver 0.4 업데이트 안녕하세요. 남자별입니다. 이번 업데이트는 좀 늦었습니다. 개인적인 사정과 회사프로젝트가 바빠져서 그랬습니다.   더이상 미루기 힘들어 몇시간정도 뚝딱 거려봤습니다. 저번에 요청오신 기... 71 file 47 18761
남자별
2017.07.19
1823 개발 모니터링 프로그램 ver 0.5 업데이트 안녕하세요. 남자별입니다. 이번 업데이트는 기존 요청사항들중 편의성 부분으로 개별 설정할 수 있도록 수정했습니다.   ver 0.5  업데이트                 monitor.ini 설정 추가. 기본 배포... 61 file 44 12814
남자별
2017.08.11
1822 개발 전세계 실시간 챠트/시세를 원화로 모아서 볼수 있는 사이트를 만들었습니다 전세계 3048개 코인, 648종 가상화폐를 실시간 차트/시세를 원화로 모아서 볼수 있는 사이트를 만들었습니다.   암호화폐 실시간 차트및 시세를 각국 통화로 암호화폐별, 거래소별, 관심코인으로... 33 file 42 4686
그냥초보
2018.04.10
1821 개발 SMT 토큰 이중지불 해킹에 대한 설명과 대비책   안녕하세요. 온더의 철학자입니다.   SMT라는 ERC20토큰의 토큰 이중지불 해킹이 일어났습니다. 이 해킹건에 대해 설명이 필요한 것 같아 긴급하게 글을 남깁니다.   Ethereum Transaction 0x1... 21 file 41 2879
철학자
2018.04.25
개발 이더리움과 스마트 컨트랙(2) - 30분만에 ICO 하기 30분만에 ICO하기   안녕하세요. 오늘은 조금 자극적인 제목을 가지고 와봤습니다. 요즘 ICO 많이들 참여하시고,  직접 하시는 분들도 많이 계신데요. ICO에 필요한 토큰을 단 30분 만에 발행하... 28 file 40 8467
파이리
2018.02.22
1819 개발 단순 콘솔 모니터링 프로그램 ver 0.2 배포   안녕하세요. 지난번에 올린 모니터링 프로그램에 요청사항들이 있으셔서 수정했습니다. 이하는 개발노트입니다. 보안 관련으로 걱정하시는 분들도 계셔서 소스코드도 같이 첨부합니다. ver 0.... 44 file 39 8885
남자별
2017.06.26
1818 개발 채굴 관리프로그램 MINE ASSIST 베타버전 공개 안녕하세요. 저는 S전자에서 개발자로 일하다가 지금은 작은 스타트업을 하고 있는 파이리입니다.   얼마 전에 채굴기 관리 프로그램을 개발하고 있다고 글을 올린적이 있었는데, 베타 테스트에 ... 180 file 39 14897
파이리
2017.06.17
1817 이더리움 데브콘4 참관기 1 이더리움 데브콘4 참관기 1 2018년 프라하에서 열린 이더리움 데브콘4에 참석했었습니다. 행사 참석 기사를 위해 썼던 내용을 정리해보았습니다.   데브콘4에서 가장 인상깊었던 내용   세션하... 24 file 34 2865
atomrigs
2018.11.18
1816 개발 예스빗부스터 무료배포(ver 0.0.1)   예스빗매니저 오픈베타서비스에 참여해주신 분들의 요청으로 윈도우 최적화 프로그램(예스빗부스터)을 배포합니다. 앞으로도, 요청사항을 검토하여, 지속적인 업데이트를  진행할  예정입니다.... 22 file 34 4158
예스빗
2018.07.09
1815 [강좌] 쌩광부의 모바일 지갑 만들기 #4. 이더리움 계열 지갑 만드는 방법 안녕하세요. 쌩광부입니다.   이번 시간에는 RN에 대한 설명을 잠시 접어두고 이더리움 계열 코인의 지갑 구조에 대해서 설명하도록 하겠습니다.   #4. 이더리움 계열 지갑 만드는 방법   1. Pri... 16 30 1656
쌩광부
2018.11.21
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 92 Next
/ 92
default debug random = 0 / type = READ / detected = READ