[번역] AppBase: The next step forward for the Steem blockchain (let the testing begin)

in #kr7 years ago (edited)

steemitdev 팀에서 https://steemitstage.com 라는 URL로 스테이징 환경을 제공한다고 합니다. 블록체인의 내용 즉 데이터는 운영환경과 동일합니다. 댓글을 수정하거나 송금을 해보니 운영환경에 동일하게 반영되네요. 일반적으로 스테이징은 개발을 마치고 운영에 배포하기 직전 서비스 사용 유저들에게 영향 없이 운영환경과 동일한 상황에서 테스트 등을 위한 환경입니다.

condense api 가 추가되었고 여러가지 API 개선사항이 반영되었다고 하네요. 실제로 아래 변경 내용들이 어떤 의미를 가지는지를 이해하려면 AppBase에 대한 내용을 다시 살펴보는 것이 좋을 듯 합니다. 간단히는 Steem Blockchain 의 각 구성요소들을 모듈화하고 확장에 용이한 구조를 만드는 것이라고 이해하면 되겠군요.

Steem Blockchain Update August 2017
AppBase


steemitdev 계정에 포스팅된 내용을 단순 번역한 글입니다.

원문 : https://steemit.com/steem/@steemitdev/appbase-the-next-step-forward-for-the-steem-blockchain-let-the-testing-begin


Summary

  • AppBase 릴리스 후보가 이제 준비되었습니다.
  • 우리는 마침내 AppBase를 대규모로 테스트 할 준비가 되었습니다! (Staging 환경제공)
  • For Developers
    • steemd 노드 변경
    • API 변경
    • New condenser_api
    • API는 이름으로 호출해야합니다.
    • 제거 된 login_api
    • API 메소드 목록
    • 인수 및 프로토타입 반환
    • condenser_api 사용
    • 간소화 된 구문
    • 향상된 JSON-RPC 준수
    • 하위 호환성
    • 향후 업데이트 필요
    • 환경파일 변경
  • 결론

AppBase: The next step forward for the Steem blockchain (let the testing begin)

오늘 우리는 공유 할 흥미로운 소식을 가지고 있습니다 : AppBase가 준비되었습니다. 우리는 모든 사람들이 테스트를 돕길 원합니다. 써드파티 개발자는 새 플랫폼에 맞게 약간의 변경을해야 할 수 있습니다.

Today we have some exciting news to share: AppBase is ready, and we would like everyone to help with testing. Although, please note that third-party developers may need to make some minor changes to adapt to the new platform.

###AppBase 릴리스 후보가 이제 준비되었습니다.
8 월에 우리는 Steem blockchain에 대한 흥미로운 업데이트 소식을 알려주었습니다. 이러한 업데이트 중 하나는 AppBase로 Steem의 확장 능력을 획기적으로 향상시키는 별개의 "모듈"을 생성합니다.

AppBase는 다중 체인 FABRIC을 만드는 첫 번째 단계입니다. AppBase는 전용 플러그인으로 비 합의 블록 체인을 추가함으로써 Steem 블록 체인의 많은 구성 요소가 모듈화 될 수 있도록합니다. 이러한 플러그인은 전체 블록 체인을 재생할 필요가 없으므로 훨씬 더 신속하게 업데이트 할 수 있습니다.

AppBase release candidate is now ready
Back in August we shared with you news of some of the exciting updates being made to the Steem blockchain. One of those updates is AppBase, which will create distinct “modules” that will dramatically improve Steem’s ability to scale.

AppBase is the first step in creating a multi-chain FABRIC. AppBase enables many components of the Steem blockchain to become modular by creating additional non-consensus blockchains as dedicated plugins. These plugins can be updated much more rapidly because they do not require replaying the entire blockchain.

우리는 마침내 AppBase를 대규모로 테스트 할 준비가되었습니다!

Steamit.com 사용자가 일반 사용자 인 경우에도 도움이 될 수 있습니다. steemitstage.com으로 가서 정상적으로하는 것처럼 사이트를 사용하십시오.

스테이징 환경에는 steemit.com과 동일한 보안 조치가 포함되어 있으며 사전 제작으로 간주됩니다. steemit.com을 만들기 전에 새로운 코드를 완전히 확인하기 위해 가능한 '실제'steemit.com에 가깝도록 설계되었습니다. 만약 키 사용에 대해 걱정이된다면 Posting Key 키를 사용하면 됩니다. 아예 로그인하지 않더라도 사이트를 탐색하고 Google에 피드백을 제공하는 것만으로도 유용합니다.

We are finally ready to test AppBase on a large scale!
If you’re just a regular steemit.com user, you can help too. Head on over to steemitstage.com and use the site like you normally would.

Our staging environment includes the same security measures taken for steemit.com, and is considered pre-production. It's designed to be as close to the 'real' steemit.com as possible, in order to fully vet new code before it makes it to steemit.com. If you're still worried about using your keys, you're welcome to just use your posting key. Even if you don't login at all, just browsing the site and providing feedback to us is still useful.

For Developers

Steem 서비스를 실행하거나 유지보수하는 경우 서비스가 예상대로 계속 작동하도록하기 위해 취해야 할 몇 가지 단계가 있습니다. 자세한 내용은 아래 섹션을 참조하십시오.

For Developers
If you run or maintain a Steem service, there are a couple of steps you will need to take to ensure your service will continue to operate as expected. Details are in the sections below.

steemd 노드 변경

steemd 노드를 실행하려면 GitHub 또는 Docker Hub에서 v0.19.4rc1 태그를 체크아웃 할 수 있습니다.

steemd node changes
If you run a steemd node, you can check out the tag v0.19.4rc1 from GitHub or Docker Hub.

API 변경

API를 재구성하여 향후 업그레이드 및 유지 관리를 위한 유연성을 높였습니다. 이제 API는 단일 객체를 인수로 사용하여 단일 객체를 반환 유형으로 반환합니다. 모든 기존 API가 이 표준과 일치하도록 업데이트되었습니다.

더 이상 C ++ 스타일 매개 변수 의미론을 고수 할 필요가 없으므로 가변 매개 변수뿐만 아니라보다 다양한 기본 인수 유형을 사용할 수 있습니다. 또한 반환 된 객체를 확장하여 기존 앱에 영향을 미치지 않고 호출 기능을 확장 할 수 있습니다.

database_api는 steemd가 이미 사용중인 어떤 순서(ordering)로도 모든 합의 객체를 질의 할 수 있도록 상당한 변경을 수행했습니다. 이렇게하면 서비스가 필요한 객체를 보다 융통성 있게 찾을 수 있습니다.

API changes
We restructured our APIs to allow greater flexibility for future upgrading and maintaining. The APIs now take in a single object as an argument and return a single object as a return type. All the existing APIs have been updated to match this standard.

Because we no longer need to stick to C++ style parameter semantics, we can use more varied default argument types as well as variadic parameters. We can also extend the functionality of a call without impacting the existing apps by extending the returned object.

The database_api has undergone significant changes to allow the querying of all consensus objects with any ordering that steemd uses already. This will provide more flexibility for services to find the objects they need.

New condenser_api

이 전환을 돕기 위해 우리는 현재 존재하는 모든 API 메소드를 포함하고 기존 인수 형식을 사용하는 condenser_api를 작성했습니다. 앱을 Appbase로 동작하게 하는 가장 쉬운 방법은 api를 condenser_api로 변경하는 것입니다.

To help with this transition, we created condenser_api, which contains all of the API methods that currently exist and uses the existing argument formatting. The easiest way to get your app to work with Appbase is to change the api to condenser_api.

API는 이름으로 호출해야합니다.

API id를 사용하여 API를 호출하는 데 익숙하다면 해당 호출 메소드는 더 이상 지원되지 않습니다. 이제 모든 API를 이름순으로 호출해야합니다.

APIs must be called by name
If you are used to calling an API using the API id, that method of invocation is no longer supported. All the APIs must now be called by name.

제거 된 login_api

login_api는 API 이름을 숫자 ID에 매핑하는 방법으로 설계되었습니다. API는 더 이상 id를 통해 호출되지 않으므로 이제 login_api가 필요하지 않으므로 제거되었습니다.

Removed login_api
The login_api was designed as a way to map the API names to numeric ids. Because the APIs are no longer called via id, there is now no need for the login_api, and so it has been removed.

API 메소드 목록

jsonrpc.get_methods를 호출하면 사용 가능한 모든 API 메소드 목록이 반환됩니다.

인수 및 프로토타입 반환

API 메서드 이름을 전달하는 jsonrpc.get_signature를 호출하면 인수를 반환하고 객체 프로토 타입을 반환합니다.

예를 들면,

{ "jsonrpc": "2.0", "method": "jsonrpc.get_signature", "params": { "method": "database_api.get_active_witnessess"}, "id": 1}

반환값

{ "jsonrpc": "2.0", "result": { "args": {}, "ret": { "증인": []}}, "id": 1}

{}는 void 유형 인수이며 증인 필드 목록을 반환합니다.

Argument and return object prototypes
If you call jsonrpc.get_signature passing an API method name, it will return the argument and return the object prototypes.
For example,
{"jsonrpc":"2.0", "method":"jsonrpc.get_signature", "params":{"method":"database_api.get_active_witnessess"}, "id":1}
returns
{"jsonrpc":"2.0","result":{"args":{},"ret":{"witnesses":[]}},"id":1}
{} is the void type argument and it returns a list in the witnesses field.

condenser_api 사용

condenser_api의 모든 호출은 배열 인수 전달이 불투명하고 API 호출 자체에 구현되므로 []를 인수로 반환합니다. 그들은 현재 인수 형식을 따릅니다. 기존 앱은 login_api를 사용하지 않고 Appbase를 사용하는 데 필요한 다른 변경 사항없이 모든 호출을 condenser_api로 보내면됩니다.

예를 들어, condenser_api와 database_api를 사용하여 get_dynamic_global_properties를 호출하면 다음과 같습니다.

{ "jsonrpc": "2.0", "method":"condenser_api.get_dynamic_global_properties", "params": [], "id": 1}
{ "jsonrpc": "2.0", "method":"database_api.get_dynamic_global_properties", "id": 1}

메소드에 인수가 없으므로 condensers_api를 사용하지 않을 때 params 필드를 생략 할 수 있습니다. 그러나 선택적으로 빈 유형 (예 : 'params': {})으로 포함 할 수도 있지만 필수는 아닙니다.

Using condenser_api
All calls in condenser_api will return [] as the argument, as the array argument passing is opaque and implemented in the API calls themselves. They follow the current argument formatting. Existing apps should only need to skip using login_api and send all of their calls to condenser_api without any other changes required to use Appbase.

For example, calling get_dynamic_global_properties with condenser_api vs database_api:
{"jsonrpc":"2.0","method":"condenser_api.get_dynamic_global_properties", "params":[], "id":1}
{"jsonrpc":"2.0","method":"database_api.get_dynamic_global_properties", "id":1}

Because the method has no arguments, the params field can be omitted when not using condenser_api. However, it can optionally be included as the void type (e.g. "params":{}) but it is not required.

간소화 된 구문

앞의 예제가 다른 형식을 사용하여 API를 호출 한 것을 알 수 있습니다. 이전에는 다음과 같은 호출 구문이 있었습니다.

{ "jsonrpc": "2.0", "id": 0, "method": "call", "params": [ "api", "function", [ARGS]]}.

그러나 이제는보다 간소화 된 호출 구문을 지원합니다.

{ "jsonrpc": "2.0", "id": 0, "method": "api.function", "params": [ARGS]}

두 형식 모두 작동하지만 가독성을 위해 새로운 형식이 선호됩니다.

Streamlined syntax
You might have noticed that the previous examples used a different format to call the API. Previously, there was an outdated call syntax that looked like this:
{"jsonrpc":"2.0", "id":0, "method":"call", "params":["api","function",[ARGS]]}.
However, we now support a more streamlined call syntax:
{"jsonrpc":"2.0", "id":0, "method":"api.function", "params":[ARGS]}
Both formats work, but with the new format being preferred for readability.

향상된 JSON-RPC 준수

steemd가 널리 사용되는 JSON-RPC 사양을보다 잘 준수하도록 일부 변경되었습니다. 이것은 여전히 새로운 것입니다. json-rpc 구현을 테스트하여 사양을 준수하는지 확인힐 수 있도록 도와주세요

Enhanced JSON-RPC compliance
Some other changes were made to make steemd more compliant with the widely-used JSON-RPC specification. This is still new. Please help us test our json-rpc implementation to ensure that it is spec compliant.

하위 호환성

리버스 프록시 서비스 인 jussi가 메소드 변환을 처리합니다. 즉, 프로덕션 환경에 Appbase를 배포 한 후에도 이전 API 호출이 여전히 작동해야합니다.

Backward compatibility
Our reverse proxy service, jussi, handles the method translation. This means that even after deploying Appbase to our production environment, the old API calls should still work.

향후 업데이트 필요

이 릴리스에서 소개 된 새로운 API는 여전히 진행 중인 작업입니다. 아직 일련 번호가 변경되어 여러 가지 상태가 유지되고 있습니다. 우리는 가까운 장래에 이러한 변화의 본질을 다시 한번 게시 할 것입니다. 이러한 API로 자유롭게 놀아도 되지만 변경 될 수 있습니다. 일단 이러한 API를 완성하면 condenser_api를 사용 중지하고 새로운 API로 마이그레이션을 시작합니다.

Future updates required
Note that the new APIs introduced in this release are still Work in Progress. There are a number of serialization changes that are still being made to them and hence they are in various states of completeness. We will post again in the near future explaining the nature of those changes. Feel free to play around with those APIs, but know that they will be changed. Once we finalize those APIs, we will deprecate condenser_api and begin migration to the new APIs.

환경파일 변경

로깅 설정은 항상 사용 가능한 옵션의 수 때문에 설정 파일의 민감한 지점이었습니다 그것은 너무 복잡하여 다른 파서가 필요했습니다. 우리는 하나의 파서 만 사용할 수있는 json 형식을 사용하도록 변경했습니다. 기본 로깅 구성은 다음과 같습니다.

# Console appender definition json : { "appender", "stream"}
log-console-appender = { "appender": "stderr", "stream": "std_error"}

# File appender definition json : { "appender", "file"}
log-file-appender = { "appender": "p2p", "file": "logs / p2p / p2p.log"}

# 로거 정의 json : { "name", "level", "appender"}
log-logger = { "name": "default", "level": "debug", "appender": "stderr"}
log-logger = { "name": "p2p", "level": "debug", "appender": "p2p"}

Plugins

플러그인 옵션을 통해 플러그인을 사용할 수 있습니다. 더 이상 public-api 옵션이 없으며 이제 모든 API가 플러그인을 통해 활성화됩니다.

대부분의 설정 옵션은 현재 속한 플러그인에 의해 네임스페이스로 지정됩니다. 네임스페이스가 아닌 구성 옵션은 계속 지원되지만 사용하면 더 이상 사용되지 않는다는 경고가 기록됩니다. contrib / config-for-docker.ini 및 contrib / fullnode.config.ini는 Docker 이미지에서 사용되는 구성 예제입니다. 이것을 예제 설정 파일로 사용할 수 있습니다. 평소처럼 Docker 이미지를 사용하여 노드를 배포하는 것을 권장합니다.

결론

이러한 변화는 수개월 동안 진행되어 왔으며 Steem을 향한 큰 진보를 나타냅니다. AppBase는 향후 확장 요구 사항을 모두 충족 할 수있는 견고한 토대를 제공하며, 동시에 써드파티 응용 프로그램 개발자, 증인 및 교환기의 리소스 요구 사항을 관리하면서 플랫폼을 확장 할 수있게 해줍니다.

Conclusions
These changes have been in the works for many months, and represent a major step forward for Steem. AppBase provides a robust foundation for meeting all of our future scaling needs, and will allow us to grow the platform while at the same time managing the resource requirements for third-party application developers, witnesses, and exchanges to grow along with it.


Steemit Dev 팀이 열심히 개발하는 모습을 보니 뿌듯합니다 :)

@steemitdev계정이 있다는 건 알고 있었는데... 그동안 팔로우도 안하고 있었네요 ㅠ_ㅠ 지난 포스팅들을 찬찬히 한번 살펴봐야겠어요 ㅋ

Sort:  

스스로 홍보하는 프로젝트에서 나왔습니다.
오늘도 좋은글 잘 읽었습니다.
오늘도 여러분들의 꾸준한 포스팅을 응원합니다.

스팀잇 개발진도 열심히 하고 있는 모습을 보니 좋네요.
코딩은 이해하지 못하지만 천천히 전진하고 있는 모습이 좋아 보여요 ㅎ
팔로우하고 앞으로의 새로운 소식들 자주 얻으러 올게요 ㅎ

팔로우 감사합니다 ~ 자주 뵈어요 ㅎㅎ

좋은글이네요 팔로우하고가요

팔로우 감사합니다

Hello coffeex! Just came by to say thanks for your upvote on my Chocolate Week episode. Look forward to sharing more stories with you, and as you seem like a tech person, I'd like to learn from your posts. Followed and upvoted! ps. I love ice coffee too! :) Have a ncie day!

Thank you for visiting. I will meet you often at Steemit. I will expect your good story +_+ !!

스팀잇이 더 발전하려나봐요.
좋은 글 잘 봤습니다.^^

음... 혹시 테란 유저신가요?
저는 프로토스... ㅎㅎㅎ

ㅋㅋㅋㅋㅋㅋㅋ 뜬금없이 종족 고백 ㅋㅋㅋㅋ

아이디가 @scv 시길래... ㅋㅋㅋㅋ

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63138.55
ETH 2579.36
USDT 1.00
SBD 2.80