개발자가 되고 싶은 사람

ubuntu환경에서 project start 스크립트 만들기

|

Start 스크립트 만드는 방법

https://blog.lael.be/post/3932

  • pm2 라는 노드 프로세스 매니징 도구를 이용하면, 자동으로 start 스크립트를 만들어 줄 수 있다. 나중에는 이 기능을 이용했다.

발생했던 이슈 및 해결

https://ubuntuforums.org/showthread.php?t=1978337

https://www.unix.com/shell-programming-and-scripting/137464-how-kill-process-dynamic-pid.html

[EOS #7] EOS Wallet & Account 차이

|

EOS Wallet

  • 지갑은 토큰을 저장하지 않는다.
  • 지갑은, 암호화된 파일에 개인 키를 저장하고, 트랜잭션에 서명할때 사용된다.

Wallet / Account 차이

  • 둘 다 키 쌍 (암호화를위한 개인 키 및 검증을위한 공개 키)을 기반
  • wallet은 블록체인과 관련이 없다.
  • wallet은 클라이언트 컴퓨터에 여러 키 쌍을 안전하게 저장한다.
  • account는 블록 체인에 있다
  • 사람이 읽을 수 있는(readable) 계정이름(name)과 소유자키 및 활성화 키가 있다(owner key and active key).
  • 각각의 키는 블록체인에서 고유한 수준의 사용권한(their own levels of permission, on the blockchain을 가진다.
  • 두개의 차이는 아래의 그림을 통해 이해할 수 있다.

[EOSIO_Architecture]

eos_node

Desc

wallet

  • 개인 키 쌍의 저장소
  • 블록체인에서 수행된 작업을 서명하는데 필요
  • 지갑과 그 내용은 keosd에서 관리 / cleos를 사용해 액세스 가능

account

  • nodeos는 블록체인 계정 게시 및 계정 관련 작업 관리
  • nodeos의 계정 관리 기능은 cleos를 사용하여 액세스 가능
  • An account can be thought of as an on-chain identifier that has access permissions associated with it (i.e., a security principal).

Reference

[EOS #8] EOS token contract 테스트 과정 (from eos튜토리얼)

|

Token Contract complie/deploy/issue/transfer


1. Contract 경로에 include, src 폴더를 만들어 컨트랙트 파일을 생성한다.

  • /home/username/eosio.contracts/eosio.token(token이름은 eosio.token로 생성함)
  • 디플로이할 기본 token 컨트랙트 ==> eosio.token.cpp
  • link : token contract file

2. 컨트랙트를 deploy할 계정을 생성한다(계정이름은 원하는 이름으로 생성 ex : oasistokenn1)

3. Compile the contract

  • 기본명령어 : eosio-cpp -I include -o [파일명.wasm] [.cpp파일경로] --abigen
  • example : eosio-cpp -I include -o oasis.token.wasm /home/skdev/eosio.contracts/eosio.token/src/eosio.token.cpp --abigen

4. Deploy the Token Contract

  • 기본명령어 : cleos set contract eosio.token CONTRACTS_DIR/eosio.contracts/eosio.token --abi eosio.token.abi -p eosio.token
  • example : cleos set contract oasistokenn1 /home/skdev/eosio.contracts/eosio.token --abi eosio.token.abi -p oasistokenn1
  • 하지만, 위의 명령어를 실행하면 Account using more than allotted RAM usage이라는 에러 메세지가 뜬다. 이를 해결하기 위해 5번 과정의 buy ram을 수행한다.

4-1. Buy RAM

  • link : buy ram 방법
  • 에레메세지에서 부족하는 만큼의 양을 보충할 충분한 ram을 사주도록 한다.
  • cleos system buyram oasistokenn1 oasistokenn1 '10.000 EOS'
Reading WASM from /home/skdev/eosio.contracts/eosio.token/eosio.token.wasm...
Publishing contract...
Error 3080001: Account using more than allotted RAM usage
Error Details:
account oasistokenn1 has insufficient ram; needs 230274 bytes has 179384 bytes

4-2. Buy RAM 이후, set contract를 실행하면 아래와 같이 결과가 잘 나온다.

  • example : $ cleos set contract oasistokenn1 /home/skdev/eosio.contracts/eosio.token --abi eosio.token.abi -p oasistokenn1
  • abi 파일 생성 이후 버전을 확인결과 : “eosio::abi/1.1”
Reading WASM from /home/skdev/eosio.contracts/eosio.token/eosio.token.wasm...
Publishing contract...
executed transaction: be273569dc63c7d4c7abea4f4cd36e1d3be4651ed8b5e04c120760812dbf3a8d  9312 bytes  1196 us
#         eosio <= eosio::setcode               {"account":"oasistokenn1","vmtype":0,"vmversion":0,"code":"0061736d0100000001aa011c60037f7e7f0060047...
#         eosio <= eosio::setabi                {"account":"oasistokenn1","abi":"0e656f73696f3a3a6162692f312e310008076163636f756e7400010762616c616e6...

5. Create token

  • 새 토큰을 만들려면 적절한 인수를 사용하여 create (…) 액션을 호출.
  • 이 액션은 1 개의 인수를받습니다. 이것은 최대 공급 float와 대문자로 된 alpha 문자로 된 symbol_name 두 개의 데이터로 구성된 symbol_name 유형.
  • 발급자는 발급을 요청하거나 소유자의 동결, 회수 및 허용 목록 작성과 같은 다른 작업을 수행 할 수있는 권한을 가진 사람이됩니다
  • create의 첫번째 인자는 토큰발행자, 두번째 인자는 토큰의 최대 수량.
  • cleos push action oasistokenn1 create '[ "oasistokenn1", "1000000000.0000 OAS"]' -p oasistokenn1
executed transaction: e04526ad1bb3e6c8bf983bc570cf3779139572242b8213f0435b5b87ac55e7ba  120 bytes  307 us
#  oasistokenn1 <= oasistokenn1::create         {"issuer":"oasistokenn1","maximum_supply":"1000000000.0000 OAS"}
warning: transaction executed locally, but may not be confirmed by the network yet         ]

  • 정글넷에서 해당 토큰이 생성된지 확인가능하다. token_create

6. Issue Tokens

  • 토큰을 발행하기 위해 issue action을 수행한다.
  • 첫번째인자는 토큰을 발행받는 account( 컨트랙트를 디플로이한 계정과 다르다!!! )
  • cleos push action oasistokenn1 issue '["goldengatejb", "10000.0000 OAS", "oasis token issue test"]' -p oasistokenn1
$ cleos push action oasistokenn1 issue '["oasiswkimdev", "10000.0000 OAS", "oasis token issue test"]' -p oasistokenn1
executed transaction: 83dedf35587376e7775767a30e253cec2057e25935b877caa238ba9560271a61  144 bytes  525 us
#  oasistokenn1 <= oasistokenn1::issue          {"to":"goldengatejb","quantity":"10000.0000 OAS","memo":"oasis token issue test"}
#  oasistokenn1 <= oasistokenn1::transfer       {"from":"oasistokenn1","to":"goldengatejb","quantity":"10000.0000 OAS","memo":"oasis token issue tes...
#  goldengatejb <= oasistokenn1::transfer       {"from":"oasistokenn1","to":"goldengatejb","quantity":"10000.0000 OAS","memo":"oasis token issue tes...
  • 아래 그림 처럼 확인 가능하다.
    token_issue

7. Transfer Token

  • 토큰을 발급받은 계정이 transfer를 다른 계정에게 수행할 수 있다. (-p option을 주의한다! - 아래 명령어에서 -p옵셥에 들어갈 account는 토큰을 발송할 즉, 토큰을 지급받은 계정이다)
  • cleos push action oasistokenn1 transfer '[ "oasiswkimdev", "doublechainw", "35.0000 OAS", "OAS token transfer" ]' -p oasiswkimdev
  • 아래처럼 송금가능하고 송금확인할 수 있다.
executed transaction: e68264415411d9b41a1edd0ae93b1b9cc6e46802417d14e639ea9678760acacd  144 bytes  322 us
#  oasistokenn1 <= oasistokenn1::transfer       {"from":"oasiswkimdev","to":"doublechainw","quantity":"35.0000 OAS","memo":"OAS token transfer"}
#  oasiswkimdev <= oasistokenn1::transfer       {"from":"oasiswkimdev","to":"doublechainw","quantity":"35.0000 OAS","memo":"OAS token transfer"}
#  doublechainw <= oasistokenn1::transfer       {"from":"oasiswkimdev","to":"doublechainw","quantity":"35.0000 OAS","memo":"OAS token transfer"}

token issue 수량 확인 확인

  • cleos get currency balance oasistokenn1 goldengatejb

Reference

  • https://developers.eos.io/eosio-home/docs/token-contract

[EOS #11] EOS 주요 발생했던 ERROR 및 해결

|

Error 3090003: Provided keys, permissions, and delays do not satisfy declared authorizations

Error 3090003: Provided keys, permissions, and delays do not satisfy declared authorizations
Ensure that you have the related private keys inside your wallet and your wallet is unlocked.
Error Details:
transaction declares authority '{"actor":"addressbook2","permission":"active"}', but does not have signatures for it.

resolved

  • 해당 에러는 생성한 어카운트에 대한 private key가 default wallet에 import 되어 있지 않았을때 발생했다(즉, 권한이 없는경우 발생..)
  • account 생성시, private key를 반드시 default wallet에 넣어줘야 함

Error 3080001: Account using more than allotted RAM usage

Error 3080001: Account using more than allotted RAM usage
Error Details:
account addressbook2 has insufficient ram; needs 2996 bytes has 0 bytes

resolved

  • eosio라는 계정의 contract 탭을 보면 여러 액션들이 존재한다.
  • abi를 보면 newaccount에 대한 action arqument값들을 볼 수 있다.
  • 아래처럼 실행하면, 계정이 생성된다!!!!!

cleos system newaccount --stake-net "0.1000 EOS" --stake-cpu "0.1000 EOS" --buy-ram-kbytes 8 doublechain4 doubletestab EOS592NLgZJAaUAR2FYK8f959bYVQguULpfK4ZsPBa3KrTLMEVUAU

assertion failure with message: no active bid for name

  • EOS에서, 12자리 이하 길이의 account명은 투표를 통해 생성한다.
  • 12자리의 계정name으로 생성해야 한다.

[EOS #3] EOS Smartcontract 테스트하기

|

EOSIO.CDT (계약 개발 툴킷)

  • EOSIO.CDT는 WebAssembly (WASM)를위한 도구 모음이며 EOSIO 플랫폼의 계약 작성을 용이하게하는 일련의 도구
  • 범용 WebAssembly 툴 체인이 될뿐만 아니라, EOSIO 특정 계약을 통해 EOSIO 스마트 계약 구축을 지원할 수 있습니다.

token 배포, 발행 및 전송

  • contract token을 배포하기 전에 먼저 계정을 만들어야 하며, 이 계정을 eosio 개발 키를 사용 해야 한다.

abi 파일

  • 액션, 타입 등이 정의된 파일
  • ABI (Application Binary Interface)는 JSON과 Binary 표현간에 사용자 작업을 변환하는 방법에 대한 JSON 기반 설명입니다.

hello world tutorials

Reference

  • https://developers.eos.io/eosio-home/docs