Helios는 Rust로 작성된 신뢰할 수 없고 효율적이며 휴대 가능한 멀티체인 라이트 클라이언트입니다.
Helios는 신뢰할 수 없는 중앙 집중식 RPC 엔드포인트를 사용자를 위해 안전하고 조작할 수 없는 로컬 RPC로 변환합니다. 몇 초 만에 동기화되고 저장 공간이 필요하지 않으며 모바일 장치에서 실행할 수 있을 만큼 가볍습니다.
Helios는 작은 바이너리 크기를 가지며 WebAssembly로 컴파일됩니다. 이는 지갑과 dapp 내부에 직접 삽입하기 위한 완벽한 타겟이 됩니다.
먼저 Helios의 설치 프로그램인 heliosup
설치하십시오.
curl https://raw.githubusercontent.com/a16z/helios/master/heliosup/install | bash
Helios를 설치하려면 heliosup
실행하세요.
Ethereum에서 Helios를 실행하려면 아래 명령을 실행하고 $ETH_RPC_URL
Alchemy와 같은 RPC 공급자 URL로 바꾸십시오.
helios ethereum --execution-rpc $ETH_RPC_URL
$ETH_RPC_URL
eth_getProof
엔드포인트를 제공하는 지원되는 Ethereum 실행 API 공급자여야 합니다. Infura는 현재 이를 지원하지 않습니다. 연금술을 사용하는 것이 좋습니다.
Helios는 이제 http://127.0.0.1:8545
에서 로컬 RPC 서버를 실행합니다.
Helios는 또한 rpc.md 파일에서 지원되는 RPC 방법에 대한 문서를 제공합니다.
OP Stack 체인에서 Helios를 실행하려면 아래 명령을 실행하여 $ETH_RPC_URL
Alchemy와 같은 RPC 공급자 URL로 바꾸고 $NETWORK
지원되는 OP Stack 네트워크로 바꿉니다.
helios opstack --network $NETWORK --execution-rpc $ETH_RPC_URL
현재 지원되는 네트워크 값은 op-mainnet
및 base
이며, 곧 더 많은 네트워크 값이 제공될 예정입니다.
--consensus-rpc
또는 -c
사용하여 사용자 정의 합의 계층 rpc 엔드포인트를 설정할 수 있습니다. 이는 라이트 클라이언트 비콘체인 API를 지원하는 합의 노드여야 합니다. 이를 위해 Nimbus를 사용하는 것이 좋습니다. 합의 rpc가 제공되지 않으면 기본값은 당사에서 실행하는 https://www.lightclientdata.org
입니다.
--checkpoint
또는 -w
사용하여 사용자 정의 약한 주관성 체크포인트를 설정할 수 있습니다. 이는 해당 시대의 첫 번째 비콘 블록 해시와 동일해야 합니다. 약한 주관성 체크포인트는 시스템 신뢰의 근원입니다. 이 값이 악의적인 값으로 설정되면 공격자는 클라이언트가 잘못된 체인에 동기화되도록 할 수 있습니다. Helios는 처음에 기본값을 설정한 다음 나중에 사용할 수 있도록 가장 최근에 완료된 블록을 캐시합니다.
--network
또는 -n
동기화할 네트워크를 설정합니다. 현재 유효한 옵션은 mainnet
, sepolia
및 holesky
이지만 사용자는 구성 파일에 사용자 정의 네트워크를 추가할 수 있습니다.
--rpc-port
또는 -p
로컬 RPC가 실행되어야 하는 포트를 설정합니다. 기본값은 8545
입니다.
--rpc-bind-ip
또는 -b
JSON-RPC 서버에 바인딩하는 IP를 설정합니다. 기본적으로 Helios는 127.0.0.1
사용합니다. 원격 액세스를 허용하려면 0.0.0.0
사용하세요.
--data-dir
또는 -d
Helios가 캐시된 약한 주관성 체크포인트를 저장하는 데 사용해야 하는 디렉토리를 설정합니다. 각 네트워크는 32바이트에 불과한 최신 체크포인트만 저장합니다.
--fallback
또는 -f
체크포인트 대체 URL(문자열)을 설정합니다. 이는 --checkpoint
플래그가 제공하는 체크포인트가 너무 오래되어 Helios가 동기화에 사용할 수 없는 경우에만 사용됩니다. 아무 것도 제공되지 않고 --load-external-fallback
플래그가 설정되지 않으면 Helios에서 오류가 발생합니다. 예를 들어 다음과 같이 폴백을 지정할 수 있습니다. helios --fallback "https://sync-mainnet.beaconcha.in"
(또는 다음과 같이 약식 사용: helios -f "https://sync-mainnet.beaconcha.in"
)
--load-external-fallback
또는 -l
약한 주관성 체크포인트 폴백을 활성화합니다(값이 필요하지 않음). 예를 들어 너무 오래된 체크포인트 값을 설정했는데 Helios가 해당 값과 동기화할 수 없다고 가정해 보겠습니다. 이 플래그가 설정되면 Helios는 최신 슬롯에 대해 ethpandaops/checkpoint-sync-health-checks의 커뮤니티 유지 목록에 있는 모든 네트워크 API를 쿼리합니다. 슬롯 목록은 정상 API에 대해 필터링되며 최신 에포크에서 가장 자주 발생하는 체크포인트가 반환됩니다. 참고: 이는 커뮤니티에서 관리하는 목록이므로 보안이 보장되지 않습니다. --checkpoint
에 전달된 체크포인트가 실패할 경우 최후의 수단으로 이를 사용하십시오. 악성 체크포인트가 정상 으로 간주되더라도 나열된 API에서 반환될 수 있으므로 이는 권장되지 않습니다. 다음과 같이 실행할 수 있습니다: helios --load-external-fallback
(또는 단축형 helios -l
).
--strict-checkpoint-age
또는 -s
엄격한 체크포인트 수명 확인을 활성화합니다. 체크포인트가 2주 이상 지났고 이 플래그가 활성화되어 있으면 Helios에서 오류가 발생합니다. 이 플래그가 없으면 Helios는 대신 사용자에게 경고를 표시하고 계속 진행합니다. 체크포인트가 2주 이상 지난 경우 Helios 및 라이트 클라이언트가 잘못 동기화될 수 있는 이론적 공격이 있습니다. 이러한 공격은 복잡하고 비용이 많이 들기 때문에 Helios는 기본적으로 이를 비활성화합니다.
--help
또는 -h
도움말 메시지를 인쇄합니다.
모든 구성 옵션은 ~/.helios/helios.toml
에서 네트워크별 수준으로 설정할 수 있습니다. 다음은 구성 파일의 예입니다.
[mainnet]consensus_rpc = "https://ethereum.erationsolarstorm.org"execution_rpc = "https://eth-mainnet.g.alchemy.com/v2/XXXXX"checkpoint = "0x85e6151a246e8fdba36db27a0c7678a575346272fe978c9281e13a8b26cdfa68"[op-mainnet]consensus_rpc = "https://op-mainnet.Operationsolarstorm.org"execution_rpc = "https://opt-mainnet.g.alchemy.com/v2/XXXXX"[base]consensus_rpc = "https://base.Operationsolarstorm.org"execution_rpc = "https://base-mainnet.g.alchemy. com/v2/XXXXX"
구성 옵션에 대한 포괄적인 분석은 config.md 파일에서 확인할 수 있습니다.
Helios를 Rust 라이브러리로 실행하는 예는 예제 디렉토리에서 볼 수 있습니다.
체크포인트는 실행 계층 블록 해시가 아닌 비콘 체인 합의 계층 블록 해시입니다. Holesky에 대한 실행 계층 블록 해시의 예는 https://holesky.etherscan.io/blocks에 나와 있습니다.
체크포인트는 다음 링크에서 얻을 수 있습니다:
이더리움 메인넷 https://beaconcha.in
홀스키 테스트넷 https://holesky.beaconcha.in
블록 해시를 2주 미만의 체크포인트로 사용하는 것이 좋지만 실제로는 이전 체크포인트를 사용할 수도 있으며 여전히 작동하지만 경고가 표시됩니다. 2주 미만의 체크포인트를 사용하면 실행하기 매우 어려운 몇 가지 공격을 방지할 수 있습니다.
예를 들어, Holesky Testnet에 대한 최근 체크포인트를 얻으려면 https://holesky.beaconcha.in/으로 이동하여 최종화된 시대의 첫 번째 블록의 블록 해시를 얻으십시오. 작성 당시 에포크 78425의 첫 번째 블록 해시는 블록 루트가 0x60409a013161b33c8c68c6183c7753e779ec6c24be2c50c6036c30e13b34a6인 가장 오래된 슬롯 2509600이며 사용할 최신 체크포인트 값입니다.
이 최신 체크포인트는 Ethereum Holesky Testnet에서 Helios Light Client 노드를 실행하기 위해 명령줄에서 추가 CLI 옵션으로 제공될 수 있습니다.
헬리오스 이더리움 --네트워크 홀스키 --consensus-rpc http://testing.holesky.beacon-api.nimbus.team --execution-rpc https://ethereum-holesky.g.allthatnode.com --체크포인트 0x60409a013161b33c8c68c6183c7753e779ec6c24be2f3c50c6036c30e13b34a6
예를 들어, 이더리움 메인넷에 대한 최근 체크포인트를 얻으려면 https://beaconcha.in으로 이동하여 최종화된 시대의 첫 번째 블록의 블록 해시를 얻으십시오. 에포크 222705의 첫 번째 블록 해시를 작성할 당시 가장 오래된 슬롯 7126560은 블록 루트가 0xe1912ca8ca3b45dac497cae7825bab055b0f60285533721b046e8fefb5b076f2이고 사용할 최신 체크포인트 값입니다.
이 최신 체크포인트는 Ethereum Mainnet에서 Helios Light Client 노드를 실행하기 위해 명령줄에서 추가 CLI 옵션으로 제공될 수 있습니다.
헬리오스 이더리움 --네트워크 메인넷 --consensus-rpc https://www.lightclientdata.org --execution-rpc https://ethereum-mainnet.g.allthatnode.com --체크포인트 0xe1912ca8ca3b45dac497cae7825bab055b0f60285533721b046e8fefb5b076f2
CLI 인수 대신 구성 파일을 사용하려면 구성 파일의 예제 체크포인트를 위에서 얻은 최신 체크포인트로 바꿔야 합니다.
Helios가 예상대로 작동하는지 확인하기 위해 실행할 수 있는 포괄적인 테스트 제품군이 있습니다. 테스트를 실행하기 전에 프로젝트 디렉터리의 루트에 .env
파일을 만들어야 합니다. .env.example
파일의 내용을 복사하고 자신만의 비밀을 입력할 수 있습니다.
cp .env.예제 .env
모든 테스트를 실행하려면 다음 명령을 사용하십시오.
화물 테스트-전부
개별 패키지에 대해 테스트를 실행하려면 다음 명령을 사용하여 테스트하려는 패키지로 바꿉니다.
화물 테스트 -p <패키지 이름>
Helios에 대한 모든 기여를 환영합니다. PR을 시작하기 전에 버그나 기능을 자세히 설명하는 문제를 제출하세요. PR을 열 때 기여가 빌드되었는지, cargo fmt
로 린트되었는지, 해당하는 경우 테스트가 포함되었는지 확인하세요.
Helios에 문제가 있거나 기여를 고려하고 계시다면 여기에서 자유롭게 전보에 참여해 주세요.
이 코드는 있는 그대로 제공됩니다. 코드의 안전성이나 정확성에 대해 명시적이든 묵시적이든 어떠한 보장, 진술 또는 보증도 하지 않습니다. 감사를 받지 않았기 때문에 의도한 대로 작동할 것이라는 보장이 없으며 사용자는 전송된 정보의 지연, 실패, 오류, 누락 또는 손실을 경험할 수 있습니다. 본 레포의 어떠한 내용도 특정 사실이나 상황에 대한 투자 조언이나 법적 조언으로 해석되어서는 안 되며, 유능한 변호사를 대체할 의도도 없습니다. 이와 관련된 질문이나 우려 사항이 있는 경우 해당 관할권의 평판이 좋은 변호사에게 문의하는 것이 좋습니다. a16z는 전술한 내용의 사용에 대해 책임을 지지 않으며, 사용자는 주의해서 사용하고 위험은 각자의 책임 하에 이루어져야 합니다. 자세한 내용은 a16z.com/disclosures를 참조하세요.