로컬에서 Amadeus 프로토콜 노드를 띄우고 컨트랙트를 실험하는 방법
자신의 컴퓨터에서 블록체인 네트워크를 구동하고 코인을 전송하거나 스마트 컨트랙트를 배포하는 과정을 직접 확인해 볼 수 있습니다. 이 저장소는 Amadeus 프로토콜의 노드 소프트웨어를 빌드하고 로컬 테스트넷을 실행하는 방법을 안내합니다. 클라우드 인프라 없이 로컬 환경에서 프로토콜의 동작 방식을 파악하고 싶다면 이 문서를 따라가면 됩니다.
빌드와 로컬 테스트넷 실행
노드 바이너리를 준비하려면 podman 또는 docker를 사용해 빌드 이미지를 생성한 뒤 build.sh를 실행합니다. 로컬 테스트넷을 실행하기 전에는 /etc/hosts에 nodes.amadeus.bot을 127.0.0.1로 매핑해야 합니다. 또한 인증서 검증과 CORS 정책을 비활성화한 Chrome 브라우저 인스턴스를 별도로 띄워야 RPC API에 접근할 수 있습니다. TESTNET=true 환경 변수와 함께 amadeusd를 실행하면 로컬 네트워크가 시작됩니다. 이 상태에서 REPL을 통해 Testnet.call 함수를 사용해 코인 전송이나 컨트랙트 배포를 수행할 수 있습니다.
컨트랙트 배포와 호출 예시
README에는 AssemblyScript로 작성된 카운터 컨트랙트를 배포하고 값을 증가시키는 과정이 포함되어 있습니다. Testnet.deploy 함수로 .wasm 파일을 배포한 뒤, Testnet.call로 get과 increment 메서드를 호출해 컨트랙트 상태를 변경하고 조회할 수 있습니다. 이 예제를 통해 스마트 컨트랙트 개발의 전체 흐름을 파악할 수 있습니다.
시스템 설정과 서비스 등록
노드를 안정적으로 실행하기 위해 시스템 커널 파라미터와 리소스 한도를 조정해야 합니다. UDP 스택 버퍼를 1Gbps 네트워크에 맞게 늘리고, 스푸핑된 UDP 패킷을 차단하는 설정을 /etc/sysctl.conf에 반영합니다. 파일 디스크립터, 프로세스 수, 메모리 잠금 한도를 무제한으로 설정하여 노드가 충분한 리소스를 사용할 수 있게 합니다. systemd 서비스 파일인 amadeusd.service를 생성하면 부팅 시 자동으로 노드가 시작되고 중단 시 재시작됩니다. AUTOUPDATE=true 환경 변수를 설정하면 노드가 자동으로 업데이트되며, COMPUTOR 변수를 통해 검증자 노드로 전환할 수도 있습니다.
실행 환경과 주의할 점
이 가이드는 Linux Kernel 6.8과 Ubuntu 24.04 환경에서 테스트되었습니다. 다른 배포판이나 운영체제에서는 호환성 문제가 발생할 수 있으므로 해당 환경에서 실행하는 것을 권장합니다. 로컬 테스트넷 실행 시에는 브라우저의 인증서 검증과 CORS 정책을 비활성화해야 하므로, 이 설정이 적용된 브라우저 인스턴스를 별도로 사용하는 것이 안전합니다. 시스템 설정 변경에 sudo 권한이 필요하므로 개인용 개발 머신에서 실험하는 용도로만 사용하는 것이 좋습니다.