Blockstream의 Greenlight: 확장 가능한 비수탁형 Lightning 인프라 개발자 공개
Lightning Network

Blockstream의 Greenlight: 확장 가능한 비수탁형 Lightning 인프라 개발자 공개

Christian Decker
Christian Decker

불과 2년 전, Blockstream은 손상이나 수탁 없이 Lightning 배포를 확장하는 획기적인 Lightning 호스팅 인프라인 Greenlight를 고안했습니다. 작년에 파트너들과 함께 테스트한 결과 Greenlight의 안정성과 사용 용이성을 입증했습니다. 오늘 우리는  클라이언트 리포지토리를 오픈소스로 공개하고 개발자 프리뷰에 관심 있는 사람들의 신청을 오픈했습니다!

Greenlight란?

Greenlight는 기업, 판매자, Lightning 앱을 위한 비수탁형 Lightning-as-a-Service(LaaS)입니다. 사용자가 키를 보유하고 다른 모든 것은 저희가 처리합니다. Greenlight를 사용하는 개발자는 Lightning 프로토콜 전문 지식이 없거나 긴 노드 설정 없이도 간단한 API와의 대화를 통해 애플리케이션에 Lightning 결제를 원활하게 통합할 수 있습니다.

Greenlight에는 사용자와 Blockstream이라는 두 가지 제어 도메인이 있습니다. 사용자 도메인의 모든 클라이언트는 Blockstream 도메인의 단일 노드에 연결할 수 있습니다. Blockstream의 인프라에서 실행되는 노드는 명령을 수신하고 상태 변경을 계산한 다음, 전적으로 사용자의 통제하에 있는 서명자에게 연락하여 변경 사항을 확인하고 승인하도록 합니다. 그 결과, 귀하의 키는 귀하의 장치에 저장되며 당사 인프라에는 전혀 접근하지 않는 비수탁형, 주문형 Lightning 노드가 생성됩니다.

Greenlight의 철학은 무엇이고 그것이 어떻게 Lightning 수탁을 영원히 바꿀 것인가?

현재 이용 가능한 기능

현재 Greenlight 개발이 활발하게 진행중이지만 공개 인터페이스는 안정적이며 사용할 준비가 되어 있습니다.

클라이언트 리포지토리에는 여러 구성요소가 포함되어 있습니다.

● gl-client와 해당 언어 바인딩은 Greenlight와 사용자 노드와 상호 작용할 수 있는 간단한 API를 제공합니다. 기본 서명자는 시드를 관리하고 노드로부터 숨겨지며, 그에 따라 서비스 운영자에게도 숨겨집니다. 서명자의 엔드투엔드 검증(아직 개발 중이며 이 프리뷰에서는 완료되지 않음)은 모든 상태 변경이 인증된 클라이언트에 의해 승인되었는지 확인하여 잠재적인 노드 호스트 손상으로 인해 자금 손실이 발생하지 않도록 합니다.

● gl-testing은 실제 Greenlight 서비스 대신 개발 코드를 테스트할 수 있는 완벽한 모의 환경을 제공합니다. 자세한 내용은 gl-client-py의 Python 바인딩을 사용하여 Python 프로젝트에서 gl-testing을 사용하는 방법에 대한 튜토리얼을 참조하세요. 추가 튜토리얼도 준비 중에 있습니다.

● gl-plugin과 gl-signerproxy를 사용하면 시드를 노출된 서버에 보관하지 않고 원격 서명자를 사용할 수 있는 기능을 포함하여 누구나 Greenlight 노드에서 노출된 인터페이스를 복제할 수 있습니다.

마지막 2개는 오프보딩 계획의 기초입니다. Greenlight를 넘어 성장하거나 더 많은 제어가 필요한 경우, 자체 인프라로 오프보딩할 수 있으며 모든 애플리케이션은 계속 작동할 것입니다. 즉, Greenlight API에 대해 애플리케이션을 개발하는 경우 자동으로 Core Lightning을 지원하게 됩니다. 공식 Greenlight 문서와 튜토리얼 사이트에서 오프보딩 방법에 대해 자세히 알아볼 수 있습니다.

시작하기

 시작하기 튜토리얼로 이동하여 안내를 따르십시오. 서비스에 새 노드를 등록하려면 먼저 초대 코드가 필요합니다. 초대 시스템을 통해 서비스의 초기 단계에서 통제된 방식으로 점진적으로 확장할 수 있습니다. 초대를 요청할 수 있는 양식을 마련했으며 가능한 한 빨리 보내드리겠습니다.

노드를 등록하고 예약한 다음 노드에서 getinfo를 실행하는 최소 클라이언트는 Python에서 다음과 같이 보일 것입니다.

from glclient import TlsConfig, Signer, Scheduler
import secrets  # Make sure to use cryptographically sound randomness

invite_code = "..."seed = secrets.randbits(256)  # 32 bytes of randomnessnetwork = "bitcoin"

tls = TlsConfig()
signer = Signer(seed, network, tls)
scheduler = Scheduler(node_id=signer.node_id(), network=network, tls=tls)

# Now actually register the node, `r` will contain the credentials to use # when talking to the node
r = scheduler.register(signer, invite_code=invite_code)

# Use the credentials when talking to Greenlight from now on. 
Requires a refresh 
# of the `TlsConfig` and the `Scheduler`
tls = tls.with_identity(r.device_cert, r.device_key)
scheduler = Scheduler(
		node_id=signer.node_id,
        network=network,
        tls=tls
)
node = scheduler.node()  # Schedules the node on the service

# And finally we can use `node` to call `getinfo`
print(node.getinfo())

이게 다입니다. bitcoind, 데이터베이스, 백업, 감시탑, 가십, 노드 구성 등을 설정할 필요가 없습니다. 모든 작업은 우리 측에서 이루어지므로 여러분은 가장 중요한 것, 즉 사용자와 사용자의 요구에 집중할 수 있습니다!

향후 계획

우리는 이미 협력자들로부터 많은 피드백을 받았습니다.

Breez는 Greenlight에 Breez SDK를 구축하여 LSP와 스왑 서비스로 제품을 확장하고 잘 알려진 Breez 지갑을 Greenlight로 마이그레이션했습니다.

● 당사의 안전한 서명 인프라를 위한 Lightning 서명자 확인을 통해 전체 엔드투엔드 검증에 한 발 더 가까워졌습니다.

● 내부 피드백과 테스트를 위한 Blockstream Green 지갑.

● 이 규모에 대한 최고의 Lightning 구현인 Core Lightning.

우리는 정식 출시를 간절히 고대하고 있지만 이를 위해서는 여전히 개발자의 추가 피드백이 필요합니다. Discord의 #greenlight 채널 또는 Build On L2 커뮤니티의 개발자 페이지에 참여하여 여러분의 생각과 경험을 공유하고 Greenlight관련 워크숍에 대한 소식을 들으실 수 있습니다.

Greenlight를 사용하여 흥미로운 것을 개발하고 있다면 저희에게 알려 주시고 공식 Blockstream 블로그에 소개될 기회도 놓치지 마세요!

If you have specific preferences, please, mark the topic(s) you would like to read: