EOS 개발자 포털_Getting Started_번역본(Version 1.0) / KEOS는 EOS 메인넷의 현재 Standby BP 입니다.

in #eos6 years ago (edited)

7.png

안녕하세요 KEOS입니다.

KEOS는 EOS 메인넷의 현재 Standby BP 입니다. (현재 52위, EOSPortal.io에서 확인 가능, 계정명 : keoskorea111)

이번에 EOSIO 개발자 포털을 번역하게 된 계기는 더 많은 개발자들이 쉽게 EOSIO를 쓸 수 있도록 하여 EOS 생태계에 기여하고 싶어서 시작했습니다.

이 글은 KEOS가 개발자 포털의 Getting Started를 번역하였습니다.(Version 1.0)

스팀잇을 제외한 다른 플랫폼으로 퍼갈 경우, 출처를 남겨주시기 바랍니다.


2.PNG

시작하기에 앞서 Oracle VM VirtualBox를 통해 ubutu(리눅스 OS)를 설치하고 진행해주세요.

하드디스크 용량은 최소 20GB의 여유 공간, RAM은 8GB 이상이어야 합니다.

(그래서 개발자용 컴퓨터가 아니면 로컬 환경에서 힘들 거에요 ㅜ)


3.PNG

시작하기

개요

Eosio는 여러 프로그램이 있습니다. 사용할 가장 주요한 프로그램과 여기서 다루는 프로그램은 다음과 같습니다.

4.PNG

nodeos : 노드를 운영할 플러그 인과 함께 운영될 수 있는 핵심 EOSIO 데몬. 예제 용도는 블록 생산, 전용 API endpoints, 로컬 개발 입니다.

cleos : 블록체인과 상호작용하고 지갑을 관리할 명령 행 인터페이스

keosd : EOSIO 지갑을 관리하는 구성 요소


df.PNG

Docker Quickstart

Docker 설치

시작하기 위해, 컴퓨터에 Docker를 설치하는 것이 필요로 합니다.

Docker는 서비스를 관리하기 위한 container와 같습니다.

Docker는 개발자가 휴대 가능한 container 안에 완전히 구성된 시스템 환경을 만들도록 가능하게 하는 것에 의해 앱 배포를 단순화하게 합니다.

시스템 환경은 앱이 필요로 하는 모든 런타임(runtime, 실행 시간) 지원을 제공하는 시스템 구성 운영에 있어서 운영되는 목표 앱을 구성합니다.

개발자는 container 안에 바람직한 시스템 구성을 만듭니다.

그리고 나서 분배를 위한 container를 패키징합니다.

그 목표는 앱 유저가 container의 사본을 얻을 수 있도록 하는 것이고 앱 유저의 Docker 환경에서 그것이 배포되도록 하는 것이고 많은 시스템과 앱 구성을 필요로 하는 것 없이 해제하고 실행할 수 있다는 것입니다.

Docker를 설치 하기 위해, 이 안내서를 참조하세요.


EOSIO 개발자 Docker image

EOSIO 개발자 Docker image는 현지 개발을 위하여 컴파일된(Compiled, 명령어를 사람이 읽을 수 있는 것으로 바뀐) EOSIO 소프트웨어 버전입니다.

저장소로부터 이미지를 가져오세요.

docker pull eosio/eos-dev

그리고 EOSIO 노드를 시작하세요.

sudo docker run --rm --name eosio -d -p 8888:8888 -p 9876:9876 -v /tmp/work:/work -v /tmp/eosio/data:/mnt/dev/data -v /tmp/eosio/config:/mnt/dev/config eosio/eos-dev /bin/bash -c "nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::wallet_plugin --plugin eosio::producer_plugin --plugin eosio::history_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --plugin eosio::http_plugin -d /mnt/dev/data --config-dir /mnt/dev/config --http-server-address=0.0.0.0:8888 --access-control-allow-origin=* --contracts-console"

작동 여부를 확인하세요.

sudo docker logs --tail 10 eosio

결과물은 이것과 비슷해야 합니다.

1929001ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366974ce4e2a... #13929 @ 2018-05-23T16:32:09.000 signed by eosio [trxs: 0, lib: 13928, confirmed: 0]
1929502ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366aea085023... #13930 @ 2018-05-23T16:32:09.500 signed by eosio [trxs: 0, lib: 13929, confirmed: 0]
1930002ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366b7f074fdd... #13931 @ 2018-05-23T16:32:10.000 signed by eosio [trxs: 0, lib: 13930, confirmed: 0]
1930501ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366cd8222adb... #13932 @ 2018-05-23T16:32:10.500 signed by eosio [trxs: 0, lib: 13931, confirmed: 0]
1931002ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366d5c1ec38d... #13933 @ 2018-05-23T16:32:11.000 signed by eosio [trxs: 0, lib: 13932, confirmed: 0]
1931501ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366e45c1f235... #13934 @ 2018-05-23T16:32:11.500 signed by eosio [trxs: 0, lib: 13933, confirmed: 0]
1932001ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366f98adb324... #13935 @ 2018-05-23T16:32:12.000 signed by eosio [trxs: 0, lib: 13934, confirmed: 0]
1932501ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 00003670a0f01daa... #13936 @ 2018-05-23T16:32:12.500 signed by eosio [trxs: 0, lib: 13935, confirmed: 0]
1933001ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 00003671e8b36e1e... #13937 @ 2018-05-23T16:32:13.000 signed by eosio [trxs: 0, lib: 13936, confirmed: 0]
1933501ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000367257fe1623... #13938 @ 2018-05-23T16:32:13.500 signed by eosio [trxs: 0, lib: 13937, confirmed: 0]

축하합니다! Docker container에서 운영되는 매우 단순한 싱글 노드 블록체인을 가졌습니다.

또한, RPC 인터페이스가 작동하는 지 확인하기 위해 브라우저에서 이 주소로 가세요.

다음과 비슷한 메시지를 보아야 합니다.

{
"server_version": "d624664b",
"head_block_num": 13780,
"last_irreversible_block_num": 13779,
"last_irreversible_block_id": "000035d36e1ca29ba378081c574ab3b5ab4214ba29754dd42b512690a9f03e80",
"head_block_id": "000035d4165c9225d7a04822d142fbcb15f997a6f2571dc7bae8437dea782205",
"head_block_time": "2018-05-23T16:30:54",
"head_block_producer": "eosio",
"virtual_block_cpu_limit": 100000000,
"virtual_block_net_limit": 1048576000,
"block_cpu_limit": 99900,
"block_net_limit": 1048576
}


Cleos

Cleos는 블록체인과 함께 상호작용하고 지갑을 관리할 명령어 행 인터페이스 입니다.

편리함을 위해 container에서 운영되는 cloes를 위해 bash alias(예를 들면, 서울=1, 부산=2처럼 어떤 명령을 별명화 시키는 프로그램 같은 것)를 만들 것입니다.

터미널(창)에서 실행하세요.

alias cleos='docker exec eosio /opt/eosio/bin/cleos --wallet-url http://localhost:8888'

이제, 터미널에서 cleos --help 를 실행하려고 하세요.

다음의 결과물처럼 보여야 합니다.

Command Line Interface to EOSIO Client
Usage: /opt/eosio/bin/cleos [OPTIONS] SUBCOMMAND

Options:
-h,--help Print this help message and exit
-u,--url TEXT=http://localhost:8888/
the http/https URL where nodeos is running
--wallet-url TEXT=http://localhost:8900/
the http/https URL where keosd is running
-r,--header pass specific HTTP header; repeat this option to pass multiple headers
-n,--no-verify don't verify peer certificate when using HTTPS
-v,--verbose output verbose actions on error

Subcommands:
version Retrieve version information
create Create various items, on and off the blockchain
get Retrieve various items and information from the blockchain
set Set or update blockchain state
transfer Transfer EOS from account to account
net Interact with local p2p network connections
wallet Interact with local wallet
sign Sign a transaction
push Push arbitrary transactions to the blockchain
multisig Multisig contract commands
system Send eosio.system contract action to the blockchain.

굉장합니다! 우리는 이제 실행 중 입니다.


계정과 사용자 권한

· 지갑

· 계정

· 권한과 사용자 권한

· 취합[기본 계정 구성(단일 서명), 다중 서명 계정&커스텀 허락]

계정은 사람이 읽을 수 있고 블록체인에 저장되는 식별 가능한 것입니다. 모든 거래는 계정의 구성된 권한 아래에서 평가되는 사용자 권한을 가집니다.

각각의 명명화된 사용자 권한은 유효하게 고려되는 권한 아래에서 서명된 거래로 충족되는 한계점을 가집니다.

거래는 로드되고 잠금 해제된 지갑을 가지는 클라이언트를 사용하는 것에 의해 서명됩니다.

지갑은 키 사용을 하게하고 보호하는 소프트웨어입니다.

이 키들은 블록체인에 계정 권한에 부여된 사용자 권한일 수도 있고 아닐 수도 있습니다.


지갑

지갑은 하나 또는 그 이상의 계정의 사용자 권한과 관련되거나 될 수 있지 않은 키를 저장하는 클라이언트입니다.

이상적으로, 지갑은 높은 엔트로피 비밀번호에 의해 보호되는 잠긴(암호화된) 그리고 잠금 해제된(복호화된) 상태를 가집니다.

EOSIO/eos 저장소는 keosd라 불리는 라이트 클라이언트와 상호작용하는 cleos라 불리는 명령 행 인터페이스와 함께 묶인다.

그것들은 이러한 패턴을 나타나게 합니다.


계정

계정은 블록체인에 저장되는 사람이 읽을 수 있는 이름입니다.

개인 또는 사용자 권한 구성에 따라 단체에 의해 소유될 수 있습니다.

계정은 블록체인으로 거래를 전송하기 위해 필요합니다.


권한과 사용자 권한

권한은 어떤 주어진 action이 적절히 권한을 부여받았는지 안 받았는지 결정합니다.

모든 계정은 두개의 명명화된 고유한 사용자 권한을 가집니다.

· Owner(소유자) 권한은 계정의 소유에 대한 상징이다. 이러한 권한을 필요로하는 거래들은 적습니다. 일반적으로, 어느 누구에도 공유하지 않고 콜드 스토리지에 저장할 것을 권합니다. Owner 권한은 다른 사용자 권한을 복구하기 위해 사용될 수 있습니다.

· Active(액티브) 권한은 높은 수준의 계정에 대한 변경, 블록 프로듀서에게 투표, 자금을 이체 하기 위해 사용됩니다.

고유한 사용자 권한을 더해서, 계정은 계정 관리를 더 확장할 수 있는 커스텀으로 명명화된 권한을 소유할 수 있습니다. (다른 사람이 계정의 일부를 통제할 수 있는 권한을 소유할 수 있다는 말)

커스텀 사용자 권한은 엄청나게 유동적이고, 그것이 구현될 때 수 많은 사용가능한 유저 케이스들을 다룹니다.

이 중 많은 부분이 어떻게 그것들이 쓰이고 적용될 지는 개발자 커뮤니티에 달려있습니다.

어떤 주어진 권한에 대한 사용자 권한은 하나 또는 다중 public key에 할당되거나 유효한 account name(계정 이름)에 할당될 수 있습니다.


취합

아래는 위의 개념과 어떻게 그것들이 실제적으로 이용 될지에 대한 몇 가지 예의 조합입니다.

기본 계정 구성(단일 서명)

이것은 계정이 생성된 후 어떻게 계정이 구성되 지를 나타냅니다.

계정은 owner(소유자)와 active(액티브) 사용자 권한에 대한 단일 키를 가집니다.

두 개의 키는 Weight(가중치)가 1, Threshold(임계값)이 1인 사용자 권한을 가집니다.

예) @bob 계정 권한

캡처.PNG

@bob 계정 예에서, 이 표는 @bob의 owner 키가 weight가 1인 권한을 가지고 권한 아래에서 거래를 push(푸쉬)하기 위해 필요로하는 임계값은 1이라는 것을 보여줍니다.

owner 권한 아래에서 거래를 push하기 위해, 오직 @bob은 유효성에 대한 자격이 있기 위해 그 거래를 위해 소유자 키와 함께 그 거래에 서명하는 것을 필요로 합니다. 이 키는 지갑에 저장될 것이고 cleos를 사용함으로서 진행됩니다.

다중 서명 계정&커스텀 사용자 권한

아래의 예들은 @multisig로 명명화된 꾸며낸 계정에 대한 권한입니다.

이 시나리오에서, 두 명의 사용자는 세 명의 사용자가 다양한 weight로 커스텀 publish(게시) 권한을 받고 꾸며낸 @multisig 계정의 owner와 active 사용자 권한에 대해 권한이 있습니다.

@multisig 계정 권한

dddd.PNG

이 시나리오에서, owner 사용자 권한 수준을 바꾸기 위해 weight와 threshold가 2인 값이 필요합니다.

모든 객체가 weight가 1이기 때문에, 모든 사용자는 완전히 권한을 받기 위해 거래에 서명하는 것을 필요로 합니다.

active 권한을 필요로하는 거래를 전송하기 위해, threshold는 1로 설정되어 있습니다.

이것은 오직 1개의 서명은 계정의 active 권한으로부터의 action을 권한을 받는 것이 필요하다는 것을 나타냅니다.

또한 세 번째로 publish로 불리는 커스텀 명명화된 권한이 있습니다.

이러한 예로, publish 사용자 권한은 이론적인 블로그 dapp을사용하는 @multisig의 블로그에서 포스트를 게시하기 위해 사용됩니다.

publish 사용자 권한은 threshold 값이 2입니다.

@bob@stacy 둘다 weight 값이 2입니다.

public key는 weight 값이 1입니다.

이것은 @bob@stacy 둘다 추가적인 서명없이 게시할 수 있다는 것을 나타냅니다.

public key는 public 사용자 권한을 부여받은 action을 위해 추가적인 서명을 필요로 합니다.

그러므로 위의 사용자 권한 표는 계정의 소유자로서 @bob@stacy는 중재자 또는 편집자와 비슷한 특권을 가지는 것을 나타냅니다.

반면에 이러한 원시적인 예는 확장성과 함께 특별히 한계가 있고 특별히 좋은 디자인이 아닙니다.

이러한 예는 EOSIO 사용자 권한 시스템의 유동성있는 환경을 적절히 설명합니다.

또한, 위의 표를 자세히 보세요, 사용자 권한은 계정 이름과 키 둘다 사용하도록 설정되어 있습니다.

처음에 이것은 별로인 것 같지만, 유동성에 대한 몇몇의 추가된 방향성을 제안합니다.


정리

· @bob@stacy는 이 계정의 소유자로서 명시적으로 식별될 수 있습니다.

· public key는 @bob 또는 @stacy의 추가적인 서명 없이 publish 권한 아래에서 action을 push할 수 없습니다.

· @bob@stacy는 추가적인 서명 없이 publish 권한 아래에서 action을 push할 수 있습니다.


다음에 올릴 글은 EOS 개발자 포털Cleos번역본(Version 1.0)입니다.

더 좋은 글로 찾아뵙겠습니다.


Team KEOS

Website : https://www.keos.kr/

Steemit : https://steemit.com/@keos

Medium : https://medium.com/@keos

Telegram (English) : https://t.me/keos_official_en

Telegram (Korean) : https://t.me/keos_official_kr

Sort:  

많이 어렵네요

감사합니다^^

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63316.74
ETH 2581.53
USDT 1.00
SBD 2.79