저자: 타일러 홀, 빈스 줄리아노, 이반 모로조프, 샘 윌리엄스, 톰 윌슨; PermaDAO에서 편집
. 왼쪽;">AO란 무엇인가요?
ao는 Arweave에서 실행되는 Actor Oriented (역할 기반) 컴퓨터이며, 컴퓨터를 구성하는 노드 네트워크는 코어 데이터 프로토콜을 따릅니다. 이를 구성하는 노드는 코어 데이터 프로토콜을 따릅니다. 이 백서에서는 빌더가 서비스를 구현하거나 통합할 수 있도록 프로토콜 사양, 기능 및 기술적 세부 사항에 대한 간략한 개요를 제공합니다.
ao는 분산 네트워크의 이기종 노드 집합에서 호스팅되는 단일 통합 컴퓨팅 환경(단일 시스템 이미지)입니다. ao는 여러 개의 병렬 프로세스가 상주할 수 있는 환경으로 설계되었으며, 프로세스는 오픈 액세스를 통해 서로 연결될 수 있도록 되어 있습니다. ao는 병렬 프로세스가 얼마든지 상주할 수 있는 환경으로 설계되었으며, 프로세스는 개방형 메시징 계층을 통해 서로 조정됩니다.
이 메시징 표준은 웹 사이트가 별도의 서버에서 실행되지만 서로 하이퍼링크로 연결되어 통합된 경험을 형성하는 것과 같은 방식으로 머신 독립적인 프로세스를 함께 연결하여 '네트워크'를 형성합니다.
기존의 탈중앙화 컴퓨팅 시스템과 달리 ao는 네트워크 자체의 검증 가능성을 유지하면서 프로토콜의 내재된 용량 제한과 형식에 제약을 받지 않는 유연한 연산 작업을 지원합니다(따라서 신뢰를 최소화합니다).
또한, ao의 분산형 모듈식 아키텍처는 기존 스마트 컨트랙트 플랫폼이 네트워크에 쉽게 '플러그인'할 수 있도록 하여 다른 모든 프로세스와 메시지를 주고받을 수 있는 단일 프로세스를 열어줍니다.
ao는 모든 사용자 컴퓨팅 환경에 일련의 규칙을 적용하는 대신 모듈식으로 구축되어 사용자가 자신에게 가장 적합한 가상 머신, 주문 모델, 메시징 보안 보장, 결제 옵션을 선택할 수 있습니다.
이 모듈식 환경은 모두 동일한 형식의 통합 메시지로 Arweave의 분산형 데이터 레이어에 정착되어 있습니다. 이 모듈형 환경은 매우 광범위한 워크로드를 위한 통합 컴퓨팅 환경으로, 모든 프로세스에서 메시지를 쉽게 전달하고 협업할 수 있습니다.
ao의 핵심 목표는 규모 제약 없이 신뢰할 수 있고 상호 운용 가능한 컴퓨팅 서비스를 구현하는 것입니다. 이는 스마트 컨트랙트 애플리케이션(코드에 대한 신뢰만 필요한 서비스)의 장점과 Amazon EC2 등과 같은 기존 컴퓨팅 환경의 장점을 결합하는 등 과거에는 불가능했던 애플리케이션의 새로운 가능성을 열어줍니다.
aos(ao의 탈중앙화 운영체제)를 통해 개발자는 탈중앙화 네트워크에서 스마트 컨트랙트와 유사한 명령줄 프로세스를 시작할 수 있습니다. 이 과정은 클라우드 서비스에서 서버를 시작하는 것과 비슷하지만, 탈중앙화와 탈신뢰 컴퓨팅이 주요 이점입니다.
이 프로세스는 특정 물리적 위치에 제약 없이 실행되므로 네트워크를 통해 원활한 사용자 상호 작용이 가능합니다. 그 결과 물리적 및 확장성 제약을 뛰어넘어 모든 참여자가 공유하는 단일(단일 시스템 이미지), 통합된 글로벌 컴퓨팅 플랫폼이 탄생합니다.
요약하면, ao는 사용자가 모든 프로세스와 상호 작용할 수 있는 확장 가능한 대규모 컴퓨터를 형성하여 고도로 협업적인 생태계를 형성합니다.
사용자에게 ao는 여러 프로세스를 실행할 수 있는 공유 컴퓨터를 의미합니다. 이러한 프로세스는 특정 서버로 제한되지 않으며 개인이나 그룹이 마음대로 사용할 수 없습니다. 이러한 프로세스는 일단 활성화되면 암호화 방식으로 안전하게 서비스를 제공하여 객관적이고 지속적인 운영을 보장합니다.
이 설계는 사용자가 애플리케이션에 장기간 안정적으로 액세스할 수 있도록 지원하여 사용자가 시스템과 상호 작용할 수 있는 신뢰할 수 있는 환경을 제공합니다.
핵심 기능
기존의 탈중앙화 및 분산 컴퓨팅 시스템과 비교하여 ao 프로토콜은 다음을 제공합니다.
여러 개의 프로세스(프로세스는 스마트 컨트랙트와 유사)가 병렬로 실행됨: ao에서 애플리케이션은 여러 개의 통신 프로세스에 의해 구축됩니다. 원래의 액터 모델(칼 휴잇, 1973)과 Erlang에서 영감을 받은 ao는 프로세스가 서로 메모리를 공유할 수 없지만 네이티브 메시징 표준을 통해 통신할 수 있도록 합니다.
그러면 이러한 각 프로세스는 서로 간섭하지 않고 사용 가능한 컴퓨팅 리소스를 사용하여 최고 속도로 실행할 수 있습니다. 메시징에 집중함으로써 ao는 기존 스마트 컨트랙트보다 전통적인 웹2/분산 시스템 환경과 더 유사한 확장 메커니즘을 구현합니다.
무제한 컴퓨팅 리소스: 원래 버전의 SmartWeave와 LazyLedger(이후 셀레스티아)는 프로그램 상태 전환에 대한 합의에 도달할 때 ao 네트워크의 노드가 연산을 수행할 필요가 없는 비활성 컴퓨팅 아키텍처를 기반으로 구축되었습니다.
각 프로세스에 대한 모든 로그가 저장되고 최종 프로세스의 홀로그래픽 상태가 Arweave에 유지됩니다. 그런 다음 계산 비용은 사용자에게 위임되며, 사용자는 자신의 상태를 직접 계산하거나 원하는 노드에 계산을 요청할 수 있습니다.
무한 하드 드라이브인 Arweave에 액세스: ao 프로세스는 모든 크기의 데이터를 메모리에 직접 원활하게 로드 및 실행하고 네트워크에 다시 쓸 수 있습니다. 이러한 설정은 일반적인 리소스 제약을 없애고 완전한 병렬 실행을 가능하게 하여 기존 스마트 컨트랙트 플랫폼의 한계를 넘어 애플리케이션 개발의 가능성을 크게 확장합니다.
그 결과 머신러닝 작업이나 고성능 자율 에이전트와 같이 대량의 데이터 처리와 연산 자원이 필요한 복잡한 애플리케이션을 개발할 수 있는 길이 열렸습니다.
자동화된 계약: 기존 스마트 컨트랙트 환경(예: 이더, 솔라나, 폴리곤 등)에서 계약은 사용자 트랜잭션에 의해 요청되어야 합니다. 계산을 수행하기 위해 "깨어나야" 합니다. 이러한 환경에서는 사용자가 애플리케이션과 상호작용하지 않으면 애플리케이션이 "활성화"되지 않으므로 구축할 수 있는 애플리케이션의 범위가 줄어듭니다.
ao는 예약된 작업을 통해 컨트랙트가 자동으로 깨어나 설정된 간격으로 계산을 수행하도록 허용하여 이러한 제한을 제거합니다. 모든 사용자 또는 프로세스 자체는 노드에 비용을 지불하여 적절한 주기로 계산을 트리거하는 프로세스를 "구독"할 수 있습니다.
확장을 위한 모듈식 아키텍처: ao의 핵심 아키텍처는 누구나 구축할 수 있는 개방형 데이터 프로토콜입니다. 시퀀서부터 메시지 전달 릴레이, 심지어 시스템 수준의 가상 머신까지 모든 것을 마음대로 교체하고 확장할 수 있습니다.
이러한 유연성 덕분에 아위브 생태계의 기존 스마트 컨트랙트 시스템(Warp, everPay, Mem 등)은 ao에 연결하여 통합 네트워크와 메시지를 주고받을 수 있습니다. 또한 이러한 모든 스마트 컨트랙트 시스템이 동일한 인프라와 도구를 공유할 수 있게 되어 Arweave에서 보다 일관된 컴퓨팅 경험을 제공할 수 있습니다.
ao 아키텍처 소개
ao의 기본 구성 요소는 다음과 같습니다:
프로세스: 네트워크의 연산 단위. 프로세스는 정보 데이터 항목으로 구성된 Arweave에 저장된 상호작용 로그로 표현할 수 있습니다. 프로세스를 초기화하려면 컴퓨팅 환경(가상 머신, 스케줄러, 메모리 및 필요한 확장 기능 포함)을 정의해야 합니다.
프로세스의 상태를 계산하고 요구 사항을 충족하는 계산 단위로부터 합의를 얻을 수 있습니다. 프로세스는 사용자의 지갑에서 메시지를 받는 것 외에도 메신저 유닛을 통해 다른 프로세스로부터 메시지를 받기도 합니다. 프로세스 개발자는 이러한 메시지의 신뢰성을 결정하는 방법을 자유롭게 선택할 수 있습니다(아래 참조).
메시지: ao에서 프로세스와의 모든 상호작용은 메시지로 표현됩니다. 기본적으로 메시지는 ANS-104를 준수하는 데이터 항목입니다. 사용자와 프로세스는 (보낼 편지함과 메신저 장치를 통해) 스케줄링 장치를 통해 네트워크의 다른 프로세스에 메시지를 보낼 수 있습니다.
ao 메시지의 의미론적 정의는 UDP와 TCP 사이의 어딘가에 있습니다. 메시지는 한 번만 전송되도록 보장되지만 메신저 장치에서 메시지를 전달하지 않거나 수신자가 실제로 메시지를 처리하지 않으면 메시지가 발생하지 않은 것과 같습니다.
스케줄링 단위(SU): 스케줄러는 프로세스에 전송되는 메시지에 원자 증분 타임슬롯 번호(이더넷 논스와 유사)를 할당하는 일을 담당합니다. 일단 할당되면 스케줄러는 데이터가 Arweave에 업로드되어 다른 사용자가 영구적으로 액세스할 수 있도록 해야 합니다.
프로세스는 원하는 시퀀서를 자유롭게 선택할 수 있으며, 분산형, 중앙집중형, 사용자 호스팅 등 다양한 방식으로 구현할 수 있습니다.
컴퓨트 유닛(CU): 컴퓨트 유닛은 ao에서 프로세스 상태를 계산하는 노드로, 사용자 및 메신저 유닛이 제공한 정보를 입력으로 사용합니다. 스케줄링 유닛은 프로세스 메시지만 정렬하며, 프로세스 상태 계산을 위해서는 별도의 컴퓨트 유닛이 필요합니다.
이것은 컴퓨팅 유닛이 프로세스 상태를 계산하는 서비스를 제공하고 서로 경쟁하는 피어 투 피어 컴퓨팅 마켓플레이스를 생성합니다. 이러한 단위는 가격, 계산 수요 및 기타 매개변수 사이에서 트레이드오프 게임을 수행합니다. 상태 계산이 완료되면 계산 유닛은 서명이 포함된 출력 증명을 호출자에게 반환합니다.
계산 유닛은 서명된 상태 증명을 생성하고 게시할 수도 있으며, 다른 노드는 선택적으로 UDL에서 지정한 수수료를 지불하고 이를 로드할 수 있습니다.
메신저 유닛(MU): 메신저 유닛은 ao 네트워크에서 메시지 전달을 담당하며, 이는 크랭크("시작"과 "반복"이 있는 고유 명사)라는 시스템을 통해 전달됩니다. "시작" 및 "반복").
본질적으로 메신저 유닛이 시스템에서 메시지를 처리할 때 해당 정보를 적절한 SU로 보내 처리하고, SU는 CU로 메시지를 전달하여 출력을 계산한 후 다시 SU로 반환하며, 메신저 유닛은 이 과정을 반복해서 반복합니다.
이 프로세스는 처리할 메시지가 더 이상 없을 때까지 계속됩니다. 사용자와 프로세스는 MU에 요금을 지불하여 시간 예약된 작업 상호 작용에 의해 생성된 모든 메시지를 처리하는 프로세스에 가입할 수도 있습니다. 프로세스는 선택적으로 메시지를 브로드캐스트로 표시하여 MU가 해당 SU에 메시지를 보내지만 응답을 기다리지 않도록 할 수도 있습니다.
이러한 방식으로 ao는 가상 머신(VM), 결제 방법, 스케줄러 유형, 메시지 보안 등 사용자와 프로세스에 최대한의 선택의 자유를 제공하는 동적 환경을 제공할 수 있습니다. -- 값비싼 연산 자체에 동의할 필요 없이 말입니다.
관련 작업
ao와 유사한 사례는 아직 없습니다. 그러나 ao의 특징을 설명하기 위해 비교 가능한 관련 프로젝트와 네트워크가 많이 있습니다. 이 섹션에서는 이들 각각에 대해 차례로 설명합니다.
액터 모델
액터 모델은 칼 휴잇, 피터 비숍, 리처드 스타이거가 이라는 논문에서 개발했습니다. Steiger는 "인공지능을 위한 일반 모듈형 액터 형식화"라는 논문에서 컴퓨터 시스템에서 동시성을 이해하고 구현하기 위한 기본 프레임워크로서 액터 모델을 사용했습니다.
이 모델은 계산의 기본 단위가 로컬 결정을 내리고, 더 많은 액터를 생성하고, 메시지를 보내고, 수신 메시지에 응답하는 방법을 결정할 수 있는 엔티티인 "액터"라고 가정합니다. 시스템 설계 및 프로그래밍에 대한 이러한 접근 방식은 분산되고 동시성이 높으며 확장 가능한 애플리케이션을 만드는 데 용이합니다.
Erlang
Ao는 Erlang 컴퓨팅 환경과 그 프로그래밍 언어에서 많은 영감을 받았습니다. Erlang은 대규모 병렬 시스템(여러 물리적 스레드가 있는 머신 및 네트워크)에서 효율적으로 사용할 수 있도록 런타임에 스케줄러가 처리하는 매우 가벼운 프로세스를 제공하는 액터 모델을 구현한 것입니다.
이러한 기능 덕분에 개발자는 자연스럽게 연산을 여러 협업 및 병렬 구성 요소로 나누어 목표를 달성하는 일종의 "프로세스 지향" 프로그래밍을 할 수 있게 됩니다. Erlang은 주류 컴퓨팅에서는 잘 알려져 있지 않지만 전화 교환, WhatsApp과 같은 인스턴트 메시징 서비스 등 고성능이 요구되는 많은 환경에서 널리 사용되고 있습니다.
ao 컴퓨터는 Erlang의 프로세스 지향 접근 방식을 직접적으로 계승하고 있으며, Erlang의 경험적 증거에 따르면 메모리를 공유하지 않고 프로세스를 통해 메시지를 전달하여 분산 컴퓨팅을 구현하는 환경이 매우 효율적일 수 있습니다. ao는 스마트 계약 분야에 이 방식을 적용하고 처음으로 Erlang 스타일 환경의 단일 시스템 이미지를 제공합니다. ao는 이러한 접근 방식을 스마트 컨트랙트 분야에 적용하여 처음으로 Erlang 스타일 환경의 단일 시스템 이미지를 제공합니다.
이더리움과 같은 스마트 컨트랙트 플랫폼
이더리움은 모든 사용자가 메모리와 실행 스레드를 공유하는 탈중앙화된 컴퓨팅 네트워크입니다. 원래 튜링 완전 계산을 블록체인에 추가한다는 아이디어에서 출발한 이더는 '세계 컴퓨터'를 구축하기 위한 프로젝트로 발전했습니다.
이더는 출시 당시 신뢰 없이도 임의의 코드를 계산하는 기능을 처음으로 성공적으로 시연했으며, 이는 별도의 블록체인 네트워크를 생성하지 않고도 달성할 수 있었습니다. 이더리움 네트워크는 사용자와 개발자들 사이에서 엄청난 관심을 받고 있지만, 코어 네트워크의 처리량은 2015년 출시 이후 증가하지 않고 있습니다.
이더리움 생태계는 단일 소규모 스레드 실행의 처리 능력 이상으로 기본 네트워크를 확장하는 대신 "롤업 중심" 로드맵으로 전환했습니다.
이 확장 접근 방식은 이더의 일부 속성을 상속하는 추가 "롤업" 네트워크를 지원하는 데 중점을 둡니다(전부는 아니지만). 이 글을 쓰는 현재, 이더 생태계에는 14개의 롤업 네트워크가 있으며, 이러한 프로세스를 지원하는 프로젝트의 총 가치는 1억 달러가 넘습니다.
이 14개의 롤업 프로젝트는 각각 병렬로 실행할 수 있는 또 다른 단일 스레드(AO 용어로는 "프로세스") 계산을 나타냅니다.
Ao는 처음부터 공유 메모리보다는 병렬 실행에 초점을 맞춰 구축되었으며, 프로세스를 분산하고 신뢰할 수 없는 상태로 유지하면서 독립적인 프로세스를 위한 새로운 아키텍처를 제공합니다.
탈중앙화 컴퓨팅 마켓플레이스(예: 아카시)
이더리움과 같은 전통적인 스마트 콘트랙트 플랫폼에서는 공유 스레드 아키텍처가 각 사용자가 보다 작은 연산 작업만 수행하도록 제한합니다. 이러한 제한은 네트워크에서 작업의 복잡성과 확장성을 제약합니다. 이러한 공유 리소스 모델은 본질적으로 애플리케이션의 확장성과 효율성을 제한하여 연산 집약적인 스마트 콘트랙트의 잠재력에 영향을 미칩니다.
아카시처럼 탈중앙화된 환경에서 대규모 연산을 촉진하는 것을 목표로 하는 네트워크도 있습니다. 검증 가능하고 재현 가능한 연산을 강조하는 플랫폼과 달리, 아카시와 유사한 네트워크는 컨테이너 호스팅 서비스를 위한 탈중앙화된 마켓플레이스를 제공합니다.
이 접근 방식은 전통적인 비결정론적 프로그램을 x86 아키텍처의 물리적 머신에서 실행할 수 있게 해줍니다. 그러나 이 접근 방식은 스마트 계약으로 구동되는 서비스와 같이 신뢰할 수 없는 서비스를 생성할 수 있는 기능을 희생합니다.
Ao에서는 개발자가 선호하는 가상 머신(VM)을 선택할 수 있으며, 초기 레퍼런스 구현에서는 WebAssembly(WASM)를 사용하여 프로세스를 실행하는 데 중점을 둡니다. ao의 WASM 컨테이너는 최대 4GB의 메모리를 관리할 수 있으며, WASM64의 채택으로 이 제한은 더 늘어날 것으로 예상되므로 긴 계산 시간이 가능해집니다.
WASM 에코시스템의 풍부한 컴파일 도구는 다양한 프로그램을 지원하며, 최근 WASM 사용 사례로는 웹 브라우저, 음성 인식, 심지어 포토샵과 같은 계산 집약적인 이미지 처리 소프트웨어에서 LLM(대규모 언어 모델) 변환 모델을 실행하는 것까지 포함됩니다.
ao는 상당한 연산 능력 외에도 홀로그램 상태 메커니즘 덕분에 기존 스마트 컨트랙트의 속성까지 유지합니다. ao는 연산 상태 자체에 동의하지 않고 대신 상호 작용 로그가 Arweave에 영구적으로 기록되도록 하는 데 중점을 둡니다.
결정론적 빌링 VM과 모든 프로세스 메시지의 가용성이 Arweave에 있으면 홀로그램을 투사할 수 있습니다. 참여자가 아직 상태를 실제로 계산하지 않았을 수 있지만 계산이 완료되면 그 출력이 항상 일관성을 유지할 수 있다는 것을 보장할 수 있습니다. 는 출력이 항상 일정하다는 것을 보장할 수 있습니다.
또한 Arweave의 메시지 로그에 의해 활성화된 홀로그램 상태 시스템을 사용하면 시간에 따라 암시적 메시지에 응답하여 스스로 깨어나 작업을 수행할 수 있습니다.
홀로그램 상태 메커니즘과 함께 ao는 사용자에게 계산 결과에 대한 암호로 서명된 선언을 제공하는 컴퓨팅 유닛의 분산 네트워크도 제공합니다. 이러한 컴퓨팅 노드는 마켓플레이스에서 서로 경쟁하여 홀로그램 상태를 해결하는 데 드는 비용을 절감합니다.
P2P 가상 머신 호스팅(예: Urbit)
Urbit은 ao와 일부 유사점을 공유하는 피어 투 피어 컴퓨팅 시스템입니다. 상호작용 로그의 전송과 가용성에 초점을 맞춘 Urbit은 '서버'를 한 물리적 호스트에서 다른 호스트로 마이그레이션할 수 있는 분산 컴퓨팅 환경을 제공할 수 있습니다.
한 호스트에서 다른 호스트로 전환하는 과정에서 호스팅된 연산과의 상호작용 로그를 실행하여 현재 상태를 다시 계산할 수 있으며, Urbit 프로세스는 서로 메시지를 전송하여 통신할 수도 있습니다.
ao와 달리 Urbit은 상호작용 로그에 대한 탈중앙화된 합의가 없습니다. 이는 실제로 "롤업"에 대한 권위 있는 합의나 가용성에 대한 보장이 없음을 의미하며, 따라서 프로세스 상태에 대한 보장도 없습니다.
이 경우, 어빗은 아카시 및 다른 탈중앙 컴퓨팅 마켓플레이스와 유사하다고 볼 수 있지만, 호스트가 전환을 원할 경우 한 호스트에서 다른 호스트로 계산을 검증 가능하게 이전할 수 있는 추가 기능이 있습니다.
ao는 아위브에 업로드하는 스케줄링 유닛(SU)을 통해 프로세스에 전송되는 로그 메시지의 가용성을 보장함으로써 이 모델을 확장합니다. 이 로그의 가용성을 강화함으로써, 사용자 프로세스는 탈중앙화됩니다. -더 이상 특정 컴퓨팅 노드에 상주하지 않고 분산된 컴퓨트 유닛(CU) 네트워크에서 실시간으로 상태를 확인할 수 있습니다.
이러한 아키텍처적 차이 덕분에 ao 프로세스는 신뢰가 필요 없는 스마트 컨트랙트(검증 가능한 탈중앙화 컴퓨팅)를 배포하는 데 필요한 속성을 갖출 뿐만 아니라 원하는 수의 프로세스를 호스팅할 수 있는 능력을 갖추게 됩니다. 후자의 기능은 프로세스를 실행하기 위해 현재 계산 단위를 연결할 필요 없이 홀로그램으로 표현할 수 있기 때문에(메시지 로그를 영구적으로 사용할 수 있기 때문에) 등장하게 됩니다.
유연한 신뢰 및 보안 모델
이 문서에서 설명한 것처럼, ao 코어 데이터 프로토콜은 안전한 계산을 위한 프레임워크를 제공하지만 그 자체로 경제적 보증을 제공하거나 강제하지는 않습니다. 어떤 형태의 경제적 보증도 제공하거나 강제하지 않습니다. 대신, ao는 경제적 보안 메커니즘을 가능하게 하는 암호화 보안 요소의 유연한 시스템을 제공합니다.
사용자에게 경제적 보안을 제공하는 역할을 수행하기 위해 네트워크에서 셀의 올바른 작동을 경제적으로 강제하는 계약과 토큰을 서약하기 위해 ao가 개발되고 있습니다.
이러한 메커니즘에 대한 자세한 사양은 이 데이터 프로토콜 정의의 범위를 벗어나지만, 다음 섹션에서는 이러한 시스템이 ao 위에 어떻게 구축될 수 있는지 설명하기 위해 청사진을 제공합니다.
프로세스의 상태는 대부분 Arweave에 저장된 상호작용 로그에 내포되어 있습니다. 상태는 저장되지 않지만 모든 참여자가 결정론적으로 계산할 수 있습니다. 이 접근 방식은 프로세스의 상태를 직접 모니터링하지는 않지만 독립적으로 검증할 수 있고 네트워크 전체에서 일관성을 유지할 수 있습니다.
전체 프로토콜 사양:
https://permadao.com/permadao/ao- 1353cc109d434941a6757560ef35dcc2