ao 컴퓨터의 프로토콜 규격
ao
란 무엇인가?
ao
는 Arweave에서 실행되는 Actor Oriented(역할 기반) 컴퓨터로, 이 컴퓨터를 구성하는 네트워크 노드는 핵심 데이터 프로토콜을 따릅니다. 본 문서는 프로토콜 사양, 기능 및 기술 세부 사항을 간략히 소개하여 구축자가 이 서비스를 구현하거나 통합할 수 있도록 합니다.
ao
는 분산 네트워크의 이질적 노드 집합에 호스팅되는 단일 통합 컴퓨팅 환경(단일 시스템 이미지 Single System Image)입니다. ao
는 임의의 수의 병렬 프로세스가 상주할 수 있는 환경으로 설계되었으며, 프로세스 간에는 개방된 메시지 전달 계층을 통해 조정됩니다. 이러한 메시지 전달 표준은 독립적으로 실행되는 프로세스를 연결하여 "네트워크"를 형성하며, 이는 웹사이트가 독립 서버에서 실행되지만 하이퍼링크를 통해 통합된 경험을 제공하는 전체 시스템과 유사합니다.
기존의 분산 컴퓨팅 시스템과 달리 ao
는 프로토콜 고유의 용량 제한과 형식에 구애받지 않는 유연한 계산 작업을 지원하며, 네트워크 자체의 검증 가능성을 유지합니다(이를 통해 최소한의 신뢰를 실현합니다). 또한, ao
의 분산 및 모듈화 아키텍처는 기존의 스마트 계약 플랫폼이 네트워크에 쉽게 "접속"할 수 있도록 하여, 다른 모든 프로세스와 메시지를 주고받을 수 있는 단일 프로세스를 열 수 있게 합니다.
ao
는 모든 사용자 계산 환경에 일련의 규칙을 강요하지 않으며, 모듈화된 형태로 구축됩니다: 사용자가 가장 적합한 가상 머신, 정렬 모델, 메시지 전달 보안 보장 및 결제 옵션을 선택할 수 있습니다. 이 모듈화된 환경은 Arweave의 분산 데이터 계층에서 통합된 메시지(모든 메시지가 동일한 형식을 사용)를 통해 정산 처리됩니다. 이 모듈화된 환경은 극히 광범위한 작업 부하 요구를 충족할 수 있는 통합 컴퓨팅 환경으로, 각 프로세스는 쉽게 메시지를 전달하고 협력할 수 있습니다.
ao
의 핵심 목표는 규모 제한 없이 신뢰를 최소화하고 상호 협력하는 계산 서비스를 실현하는 것입니다. 이는 과거에는 불가능했던 애플리케이션에 새로운 가능성을 제공합니다: 스마트 계약 애플리케이션의 장점(코드에 대한 신뢰만 필요)과 전통적인 컴퓨팅 환경(예: 아마존 EC2 등)의 장점을 결합합니다.
aos
(ao
의 분산 운영 체제)는 개발자가 분산 네트워크에서 스마트 계약과 유사한 명령줄 프로세스를 시작할 수 있도록 합니다. 이 과정은 클라우드 서비스에서 서버를 시작하는 것과 유사하지만, 분산 및 신뢰 없는 계산이 핵심 장점입니다. 이러한 프로세스는 특정 물리적 위치에 제한받지 않고 네트워크를 통해 원활한 사용자 상호작용을 실현합니다. 이로 인해 모든 참여자가 공동으로 사용하는 단일(단일 시스템 이미지 Single System Image), 통합된 글로벌 컴퓨팅 플랫폼이 생성되어 물리적 및 확장성 제한을 초월합니다. 간단히 말해, ao
는 사용자가 모든 프로세스와 상호작용할 수 있는 거대하고 확장 가능한 컴퓨터를 형성하여, 고도로 협력적인 생태계를 형성합니다.
사용자에게 ao
는 여러 프로세스를 실행할 수 있는 공유 컴퓨터를 나타냅니다. 이러한 프로세스는 특정 서버의 제한을 받지 않으며, 개인이나 그룹의 지배를 받지 않습니다. 활성화되면 이러한 프로세스는 암호화된 안전한 방식으로 서비스를 제공하여 객관적이고 지속적인 실행을 보장합니다. 이러한 설계는 사용자가 애플리케이션을 장기적으로 안정적으로 사용할 수 있는 권리를 부여하여, 사용자와 시스템 간의 신뢰할 수 있는 상호작용 환경을 제공합니다.
핵심 기능
기존의 분산 및 분산 컴퓨팅 시스템과 비교할 때, ao
프로토콜은 다음과 같은 기능을 제공합니다:
- 임의의 수의 프로세스(프로세스는 스마트 계약과 유사) 병렬 실행:
ao
에서 애플리케이션은 임의의 수의 통신 프로세스로 구성됩니다. 원래의 액터 모델(Carl Hewitt, 1973년)과 Erlang에서 영감을 받은ao
는 프로세스 간의 메모리 공유를 허용하지 않지만, 본래의 메시지 전달 표준을 통해 통신할 수 있도록 합니다. 그런 다음, 이러한 프로세스 각각은 사용 가능한 계산 자원을 최대 속도로 실행할 수 있으며 서로 간섭하지 않습니다. 메시지 전달에 집중함으로써ao
는 전통적인 Web2/분산 시스템 환경과 유사한 확장 메커니즘을 구현하며, 전통적인 스마트 계약과는 다릅니다. - 무한한 계산 자원: 원래의 SmartWeave 및 LazyLedger(후에 Celestia로 알려짐)의 지연 계산 아키텍처를 기반으로 구축된
ao
네트워크의 노드는 프로그램 상태 전환에 대한 합의에 도달할 때 어떤 계산도 수행할 필요가 없습니다. 각 프로세스의 모든 로그는 저장되며, 최종 프로세스의 홀로그램 상태(HolographicState)는 Arweave에 남겨집니다. 그런 다음 계산 비용은 사용자에게 위임되며, 사용자는 자신의 상태를 계산하거나 자신이 선택한 노드에 계산을 요청할 수 있습니다. - Arweave 접근, 무한한 하드 드라이브:
ao
프로세스는 메모리에 직접 임의 크기의 데이터를 원활하게 로드하고 실행하며, 네트워크에 다시 쓸 수 있습니다. 이러한 설정은 전형적인 자원 제약을 제거하고 완전한 병렬 실행을 실현하여 애플리케이션 개발의 가능성을 크게 확장하며, 전통적인 스마트 계약 플랫폼의 한계를 초월합니다. 따라서 이는 대량의 데이터 처리 및 계산 자원이 필요한 복잡한 애플리케이션에 대한 새로운 가능성을 열어줍니다. 예를 들어, 머신 러닝 작업 및 대량 계산의 자율 에이전트 등이 있습니다. - 자동화 계약: 전통적인 스마트 계약 환경(예: 이더리움, 솔라나, 폴리곤 등)에서는 계약이 사용자 거래 요청에 따라 "활성화"되어야 계산을 수행할 수 있습니다. 이 환경에서는 사용자가 상호작용하지 않으면 프로그램이 "활성화"되지 않으므로, 그 위에 구축할 수 있는 애플리케이션의 범위가 줄어듭니다.
ao
는 계약이 계획된 작업을 통해 이 제한을 제거할 수 있도록 하여, 이러한 상호작용이 설정된 간격으로 자동으로 활성화되고 계산을 수행할 수 있습니다. 모든 사용자 또는 프로세스 자체가 노드에 비용을 지불하여 프로세스를 "구독"할 수 있으며, 이를 통해 적절한 빈도로 계산을 트리거할 수 있습니다. - 확장 가능한 모듈화 아키텍처 지원:
ao
의 핵심 아키텍처는 누구나 구축할 수 있는 개방형 데이터 프로토콜입니다. 정렬기, 메시지 전달 중계기, 심지어 시스템 수준의 가상 머신까지 자유롭게 교체하고 확장할 수 있습니다. 이러한 유연성은 Arweave 생태계의 기존 스마트 계약 시스템(Warp, everPay, Mem 등)이ao
에 삽입되고 통합 네트워크와 메시지를 주고받을 수 있도록 허용합니다. 이는 또한 이러한 모든 스마트 계약 시스템이 동일한 인프라와 도구를 공유할 수 있게 하여 Arweave에서의 컴퓨팅 경험을 더욱 일관되게 만듭니다.
ao
아키텍처 개요
ao
의 기본 구성 요소는 다음과 같습니다:
- 프로세스: 네트워크의 계산 단위입니다. 프로세스는 Arweave에 저장된 상호작용 로그로 표현될 수 있으며, 이러한 로그는 정보 데이터 항목으로 구성됩니다. 프로세스를 초기화할 때는 계산 환경(가상 머신, 스케줄러, 메모리 및 필요한 확장 포함)을 정의해야 합니다. 프로세스의 상태는 요구를 충족하는 계산 단위를 통해 계산되고 합의를 얻을 수 있습니다. 프로세스는 사용자 지갑에서 메시지를 수신하는 것 외에도, 다른 프로세스에서 신뢰할 수 있는 단위를 통해 메시지를 수신합니다. 프로세스의 개발자는 이러한 메시지의 신뢰성을 결정하는 방법을 자유롭게 선택할 수 있습니다(아래 참조).
- 메시지:
ao
에서 프로세스와의 각 상호작용은 메시지로 표현됩니다. 본질적으로 메시지는 ANS-104 표준을 준수하는 데이터 항목입니다. 사용자와 프로세스(발신함 및 신뢰할 수 있는 단위를 통해)는 스케줄러를 통해 네트워크의 다른 프로세스에 메시지를 보낼 수 있습니다.ao
메시지의 의미 정의는 UDP와 TCP 사이에 위치합니다: 단 한 번만 전송되도록 보장되지만, 메시지가 신뢰할 수 있는 단위에 의해 전달되지 않거나 수신자가 실제로 처리하지 않으면 해당 메시지는 발생하지 않은 것으로 간주됩니다. - 스케줄러 단위(SUs): 스케줄러 단위는 프로세스에 전송된 정보에 원자적 증가 슬롯 번호(이더리움 nonce와 유사)를 할당하는 역할을 합니다. 할당 후, 스케줄러는 데이터가 Arweave에 업로드되어 다른 사람이 영구적으로 접근할 수 있도록 해야 합니다. 프로세스는 선호하는 정렬기를 자유롭게 선택할 수 있으며, 이는 다양한 방식으로 구현될 수 있습니다: 분산형, 중앙 집중형, 심지어 사용자 호스팅형입니다.
- 계산 단위(CUs): 계산 단위는
ao
에서 프로세스 상태를 계산하는 노드로, 입력은 사용자와 신뢰할 수 있는 단위가 제공한 정보를 사용합니다. 스케줄러 단위는 프로세스 메시지의 정렬만 수행하며, 프로세스 상태 계산에는 추가적인 계산 단위가 필요합니다. 이는 계산 단위가 프로세스 상태를 계산하는 서비스 제공을 위해 서로 경쟁하는 P2P 계산 시장을 생성합니다. 이러한 계산 단위는 가격, 계산 요구 및 기타 매개변수 간의 균형을 맞추는 게임을 진행합니다. 상태 계산이 완료되면, 계산 단위는 호출자에게 서명이 포함된 출력 증명을 반환합니다. 계산 단위는 서명된 상태 증명을 생성하고 게시할 수도 있으며, 다른 노드는 UDL에서 지정한 비용을 지불하여 이러한 증명을 로드할 수 있습니다. - 신뢰할 수 있는 단위(MUs): 신뢰할 수 있는 단위는
ao
네트워크에서 메시지를 전달하는 역할을 하며, 이 메시지는 "크랭킹"이라는 과정으로 전달됩니다. 본질적으로 신뢰할 수 있는 단위가 시스템에서 메시지를 처리할 때, 적절한 SU로 정보를 전송하여 처리하고, 정보는 SU에서 CU 계산 출력을 통해 다시 SU로 반환됩니다. 신뢰할 수 있는 단위는 이 과정을 반복합니다. 이 과정은 더 이상 처리할 메시지가 없을 때까지 계속됩니다. 사용자와 프로세스는 MU에 비용을 지불하여 프로세스를 구독할 수 있으며, 이는 정해진 일정에 따라 상호작용에서 발생하는 모든 메시지를 처리합니다. 프로세스는 메시지를 방송(cast)으로 선택적으로 표시할 수 있으며, 이는 MU가 메시지를 SU에 전송하되 응답을 듣지 않도록 합니다. 이러한 방식으로ao
는 사용자와 프로세스에게 최대한의 선택 자유를 제공하는 역동적인 환경을 제공합니다: 가상 머신(VM), 결제 방식, 스케줄러 유형, 메시지 보안성 등------비용이 많이 드는 계산 자체에 대해 합의할 필요 없이.
관련 작업
현재 ao
및 그 사용 경험을 설명할 수 있는 유사한 사례는 없습니다. 그러나 ao
와 비교하여 그 특성을 설명할 수 있는 많은 관련 프로젝트와 네트워크가 있습니다. 이 섹션에서는 각 관련 작업을 순차적으로 논의합니다.
- 액터 모델
액터 모델은 Carl Hewitt, Peter Bishop 및 Richard Steiger가 그들의 논문 《인공지능을 위한 일반 모듈화 액터 형식화》에서 소개한 것으로, 컴퓨터 시스템에서의 동시성을 이해하고 구현하기 위한 기본 프레임워크입니다. 이 모델은 계산의 기본 단위가 "액터"이며, 이는 지역 결정을 내리고, 더 많은 액터를 생성하고, 메시지를 전송하며, 수신한 메시지에 어떻게 응답할지를 결정하는 엔티티로 간주합니다. 이러한 시스템 설계 및 프로그래밍 방법은 분산되고 고도로 동시적이며 확장 가능한 애플리케이션을 생성하는 데 도움이 됩니다.
- Erlang
ao
는 Erlang 계산 환경 및 그 프로그래밍 언어에서 많은 영감을 받았습니다. Erlang은 액터 모델의 구현으로, 런타임의 스케줄러에 의해 처리되는 극히 경량의 프로세스를 제공하여 대규모 병렬 시스템(여러 물리적 스레드를 가진 머신 및 네트워크)에서 효율적으로 활용할 수 있도록 합니다. 이러한 기능은 개발자가 목표를 달성하기 위해 자연스럽게 계산을 여러 협력적이고 병렬적인 구성 요소로 나누는 "프로세스 지향" 프로그래밍 형태를 생성합니다. Erlang은 주류 계산 분야에서 그리 유명하지 않지만, 전화 교환기, WhatsApp과 같은 즉각적인 통신 서비스 등 많은 고성능 환경에서 널리 사용됩니다.
ao
컴퓨터는 Erlang의 프로세스 지향 접근 방식을 직접 계승합니다. Erlang의 실증은 프로세스를 통해 메시지를 전달하고 메모리를 공유하지 않는 분산 계산 환경이 매우 효율적일 수 있음을 보여줍니다. ao
는 이 방법을 스마트 계약 분야에 적용하여 Erlang 스타일 환경의 단일 시스템 이미지를 최초로 제공합니다.
- 스마트 계약 플랫폼(예: 이더리움)
이더리움은 모든 사용자가 메모리와 실행 스레드를 공유하는 분산 계산 네트워크입니다. 처음에는 튜링 완전한 계산을 블록체인에 추가하는 아이디어를 기반으로 하여, 이더리움은 "세계 컴퓨터"를 구축하는 프로젝트로 발전했습니다. 출시 당시 이더리움은 신뢰 없는 임의 코드 계산의 능력을 최초로 성공적으로 보여주었습니다------이는 독립적인 블록체인 네트워크를 생성하지 않고도 실현되었습니다. 이 네트워크는 사용자와 개발자 사이에서 큰 관심을 얻었지만, 2015년 출시 이후 핵심 네트워크의 처리량은 증가하지 않았습니다.
이더리움 생태계는 기본 네트워크의 확장을 단일 작은 스레드 실행의 처리 능력 이상으로 시도하지 않았으며, 대신 "롤업 중심" 로드맵으로 전환했습니다. 이 확장 방법은 추가적인 "롤업" 네트워크를 지원하는 데 중점을 두며, 이러한 네트워크는 이더리움의 일부 속성을 상속하지만 모두는 아닙니다. 본 문서를 작성하는 시점에서 이더리움 생태계에는 14개의 롤업 네트워크가 있으며, 이 프로그램 뒤에 있는 프로젝트의 총 가치는 1억 달러를 초과합니다. 이 14개의 롤업 프로젝트 각각은 병렬로 실행될 수 있는 단일 스레드(ao
용어에서의 "프로세스") 계산을 나타냅니다. ao
는 처음부터 공유 메모리 대신 병렬 실행에 집중하는 아키텍처를 구축하여 임의의 수의 독립 프로세스에 대한 완전히 새로운 아키텍처를 제공합니다. 동시에 프로그램이 분산되고 신뢰 없는 방식으로 실행될 수 있도록 합니다.
- 분산 계산 시장(예: Akash)
이더리움과 같은 전통적인 스마트 계약 플랫폼에서는 공유 스레드 아키텍처가 각 사용자가 더 작은 계산 작업만 수행할 수 있도록 제한합니다. 이러한 제한은 네트워크에서의 작업 복잡성과 확장성을 제약합니다. 이러한 공유 자원 모델은 본질적으로 애플리케이션의 확장성과 효율성을 제한하며, 더 계산 집약적인 스마트 계약의 잠재력에 영향을 미칩니다.
일부 네트워크는 분산 환경에서 대규모 계산을 촉진하는 것을 목표로 합니다. 예를 들어 Akash가 있습니다. 검증 가능하고 재현 가능한 계산을 강조하는 플랫폼과는 달리, Akash 및 유사한 네트워크는 컨테이너 호스팅 서비스용 분산 시장을 제공합니다. 이러한 접근 방식은 x86 아키텍처 물리 머신에서 전통적이고 비결정적인 프로그램을 실행할 수 있도록 합니다. 그러나 이러한 접근 방식은 스마트 계약 지원 서비스와 같은 신뢰 없는 서비스를 생성하는 능력을 희생합니다.
ao
는 개발자가 선호하는 가상 머신(VM)을 선택할 수 있도록 하며, 초기 참조 구현은 WebAssembly(WASM)를 사용하여 프로세스를 실행하는 데 중점을 둡니다. ao
의 WASM 컨테이너는 최대 4GB의 메모리를 관리할 수 있으며, WASM64의 채택에 따라 이 제한이 증가할 것으로 예상되어 장시간 계산이 가능해집니다. WASM 생태계의 풍부한 컴파일 도구는 다양한 프로그램을 지원합니다. 최근 WASM의 사용 예로는 웹 브라우저에서 대형 언어 모델(LLM) 변환기 모델, 음성 인식, 심지어 계산 집약적인 이미지 처리 소프트웨어(예: Photoshop) 실행 등이 있습니다.
ao
는 상당한 계산 능력을 갖추고 있으며, 홀로그램 상태 메커니즘 덕분에 전통적인 스마트 계약의 속성을 유지할 수 있습니다. ao
는 계산 자체의 상태에 대해 합의하지 않고, 상호작용 로그가 Arweave에 기록되고 지속적인 가용성을 갖추도록 보장하는 데 집중합니다. 결정론적 청구 가상 머신과 모든 프로세스 메시지가 Arweave에서 가용성을 갖추고 있기 때문에 "홀로그램"을 투사할 수 있습니다: 상태는 아직 어떤 참여자에 의해 실제로 계산되지 않았지만, 계산이 완료되면 출력이 항상 일관되도록 보장할 수 있습니다. 또한 Arweave의 메시지 로그를 통해 활성화된 홀로그램 상태 시스템은 ao
프로세스가 시간에 따라 암묵적인 메시지에 응답하여 스스로를 활성화하고 작업을 수행할 수 있도록 합니다. 홀로그램 상태 메커니즘과 결합하여, ao
는 사용자에게 계산 결과에 대한 암호화된 서명 선언을 제공하는 분산 Compute Units
계산 단위 네트워크를 제공합니다. 이러한 계산 노드는 시장에서 서로 경쟁하여 사용자가 홀로그램 상태를 해석하는 비용을 낮춥니다.
- P2P 가상 머신 호스팅(예: Urbit)
Urbit는 ao
와 몇 가지 유사점을 가진 P2P 계산 시스템입니다. Urbit는 상호작용 로그의 전송 및 가용성에 집중하여, "서버"가 하나의 물리 호스트에서 다른 호스트로 이동할 수 있는 분산 계산 환경을 제공합니다. 하나의 호스트에서 다른 호스트로 전환하는 과정에서 호스팅된 계산의 상호작용 로그를 실행하여 현재 상태를 재계산할 수 있습니다. Urbit 프로세스는 서로 메시지를 전송하여 통신할 수도 있습니다.
ao
와 달리 Urbit는 상호작용 로그에 대해 분산 합의를 이루지 않습니다. 실제로 이는 "롤업"의 권위 있는 프로토콜이나 가용성을 보장하지 않음을 의미합니다------따라서 그 프로세스의 상태도 보장되지 않습니다. 이러한 경우 Urbit는 Akash 및 기타 분산 계산 시장과 유사하게 볼 수 있지만, 호스트가 전환할 의사가 있는 경우 계산을 검증 가능한 방식으로 한 호스트에서 다른 호스트로 이동할 수 있는 추가적인 능력을 가지고 있습니다. ao
는 이 모델을 확장하여, 프로세스에 대한 로그 메시지가 스케줄러 단위(SUs)를 통해 전송되고 Arweave에 업로드되도록 보장합니다. 이 로그의 가용성을 강제함으로써, 사용자 프로세스는 분산되어 있으며------특정 계산 노드에 국한되지 않으며------상태가 분산된 계산 단위(CUs) 네트워크에 의해 실시간으로 해결될 수 있도록 합니다. 이러한 아키텍처상의 차이는 ao
프로세스가 신뢰 없는 스마트 계약(검증 가능한 분산 계산)을 배포할 수 있는 필수 속성을 갖추도록 보장합니다. 또한 임의의 수의 프로세스를 호스팅할 수 있는 능력이 생깁니다. 이러한 후자의 능력은 프로세스가 여전히 홀로그램으로 표현될 수 있기 때문에 발생합니다(그들의 메시지 로그는 영구적으로 가용합니다), 현재 어떤 계산 단위도 이를 실행하기 위해 추가될 필요가 없습니다.
- 유연한 신뢰 및 보안 모델
본 문서에서 설명한 바와 같이, ao
의 핵심 데이터 프로토콜은 안전한 계산을 위한 프레임워크를 제공하지만, 본질적으로 경제적 보장을 제공하거나 강제하지 않습니다. 대신, ao
는 경제적 보안 메커니즘을 구현할 수 있는 유연한 암호화 보안 요소 시스템을 제공합니다.
사용자에게 경제적 보안을 제공하기 위해 ao
스테이킹 계약 및 토큰이 개발되고 있으며, 이 계약 및 토큰은 네트워크 내 단위의 올바른 작동을 경제적으로 강제할 수 있습니다. 이러한 메커니즘의 세부 사양은 본 데이터 프로토콜 정의의 범위에 포함되지 않지만, 다음 섹션에서는 ao
위에 이러한 시스템을 구축하는 방법에 대한 청사진을 제공합니다.
전체 프로토콜 사양: https://permadao.com/permadao/ao-1353cc109d434941a6757560ef35dcc2