고양이 구입에 관한 이 이야기는 Blockstream에서 진행하고 있는 초고속 소액 결제 시스템인 C lightning 프로토타입의 v0.5의 시연에서 시작됩니다. 우리는 출시가 임박한 프로토타입을 테스트할 목적으로 lightning 네트워크를 통해 테스트 비트코인 결제를 위한 인보이스를 생성하고 그에 대한 응답으로 고양이, 또는 적어도 ASCII 고양이 그림을 제공할 웹 서버를 구축했습니다.
저와 함께 일하는 Blockstream 개발자인 Christian Decker 박사는 해당 서버에서 lightning 채널을 열기 위해 테스트 블록 928335에서 채굴한 0.01 테스트 비트코인으로 고양이 그림을 구입했습니다. 단일 검증 이후, 100 사토시를 전송하여 인보이스를 결제했습니다. 그 후, Christian은 구입한 고양이 그림을 찾기 위해 링크에 액세스했고, 그 그림은 보너스가 딸린 ASCII 그림이라는 것을 알게 되었습니다. 고양이가 두 마리였던 것입니다! Christian은 즉시 다른 노드를 열었고, 첫 번째 노드에 연결했으며, 이전 노드를 통해 라우팅하여 그 고양이 그림을 하나 더 구입했습니다.
비하인드 스토리
Digital Ocean 서버는 Apache, bitcoind, lightningd를 실행합니다. CGI 스크립트에 액세스하면 스크립트가 'lightning-cli invoice 100000'을 호출하여 인보이스가 생성되고 이는 사용자에게 전송됩니다. 사용자가 고유 링크를 클릭하고, 'lightning-cli listinvoice'가 해당 인보이스가 결제되었다는 것을 나타내면 CGI 스크립트는 이 그림을 보여줍니다.
이것이 인보이스 발행, 멀티홉 결제, 품목 배송 등을 포함한 lightning 소액결제 네트워크의 첫 번째 종단 간 테스트입니다. 이는 Flare라 불리는 Acinq의 최근 lightning 라우팅 알고리즘의 시뮬레이션과는 매우 다릅니다. Acinq의 시뮬레이션은 A에서 B로 효율적으로 가려면 어떻게 거리 지도를 만들어야 하는지 단순한 유추를 통해 보여주는 반면, 우리가 여기에서 C lightning 프로토타입의 v0.5로 시연한 테스트는 실제로 그 거리를 걷게 해줍니다.
향후 계획
우리는 코너 케이스에서 몇 가지 버그를 발견했고 알려진 몇몇의 FIXME에 부닥쳤지만, 잘못된 구성에 대비하여 lightningd를 더욱 강력하게 만들었습니다. 여전히 매끄럽게 만들어야 할 거친 부분이 조금 있고 0.5 버전 출시 전에 작성하고자 하는 문서도 일부 있습니다. 이러한 과제를 해결하고 나면, 웹 개발자들이 자신의 고양이 그림 스토어를 구성하며 놀 수 있는 라이브러리를 만들고 싶습니다!
이러한 작업을 보여주는 짧은 동영상이 있습니다. 생산 가치가 낮아 ASCII 기술에 적합합니다.