Helios adalah klien ringan multichain yang tidak dapat dipercaya, efisien, dan portabel yang ditulis dalam Rust.
Helios mengubah titik akhir RPC terpusat yang tidak tepercaya menjadi RPC lokal yang aman dan tidak dapat dimanipulasi bagi penggunanya. Ini disinkronkan dalam hitungan detik, tidak memerlukan penyimpanan, dan cukup ringan untuk dijalankan di perangkat seluler.
Helios memiliki ukuran biner kecil dan dikompilasi ke dalam WebAssembly. Ini menjadikannya target sempurna untuk ditanamkan langsung ke dalam dompet dan dapps.
Instal pertama heliosup
, penginstal Helios:
curl https://raw.githubusercontent.com/a16z/helios/master/heliosup/install | bash
Untuk menginstal Helios, jalankan heliosup
.
Untuk menjalankan Helios di Ethereum, jalankan perintah di bawah ini, ganti $ETH_RPC_URL
dengan URL penyedia RPC seperti Alchemy:
helios ethereum --execution-rpc $ETH_RPC_URL
$ETH_RPC_URL
harus merupakan Penyedia API Eksekusi Ethereum yang didukung dan menyediakan titik akhir eth_getProof
. Infura saat ini tidak mendukung hal ini. Kami merekomendasikan menggunakan Alkimia.
Helios sekarang akan menjalankan server RPC lokal di http://127.0.0.1:8545
.
Helios juga menyediakan dokumentasi metode RPC yang didukungnya di file rpc.md.
Untuk menjalankan Helios pada rantai OP Stack, jalankan perintah di bawah ini, ganti $ETH_RPC_URL
dengan URL penyedia RPC seperti Alchemy dan $NETWORK
dengan jaringan OP Stack yang didukung:
helios opstack --network $NETWORK --execution-rpc $ETH_RPC_URL
Nilai jaringan yang didukung saat ini adalah op-mainnet
dan base
, dan nilai-nilai lainnya akan segera hadir.
--consensus-rpc
atau -c
dapat digunakan untuk menetapkan titik akhir rpc lapisan konsensus khusus. Ini harus berupa node konsensus yang mendukung api beaconchain klien ringan. Kami merekomendasikan penggunaan Nimbus untuk ini. Jika tidak ada konsensus rpc yang diberikan, maka defaultnya adalah https://www.lightclientdata.org
yang dijalankan oleh kami.
--checkpoint
atau -w
dapat digunakan untuk menyetel pos pemeriksaan subjektivitas lemah khusus. Ini harus sama dengan hash blok suar pertama pada suatu zaman. Lemahnya pos pemeriksaan subjektivitas adalah akar kepercayaan pada sistem. Jika ini disetel ke nilai berbahaya, penyerang dapat menyebabkan klien melakukan sinkronisasi ke rantai yang salah. Helios menetapkan nilai default pada awalnya, lalu menyimpan blok final terbaru yang dilihatnya untuk digunakan nanti.
--network
atau -n
mengatur jaringan yang akan disinkronkan. Opsi valid saat ini adalah mainnet
, sepolia
, dan holesky
namun pengguna dapat menambahkan jaringan khusus di file konfigurasi mereka.
--rpc-port
atau -p
menyetel port tempat RPC lokal harus dijalankan. Nilai defaultnya adalah 8545
.
--rpc-bind-ip
atau -b
menyetel ip yang mengikat ke server JSON-RPC. Secara default, Helios akan menggunakan 127.0.0.1
. Gunakan 0.0.0.0
untuk mengizinkan akses jarak jauh.
--data-dir
atau -d
menetapkan direktori yang harus digunakan Helios untuk menyimpan cache pos pemeriksaan subjektivitas lemah. Setiap jaringan hanya menyimpan pos pemeriksaan terbaru, yang hanya berukuran 32 byte.
--fallback
atau -f
menyetel url fallback pos pemeriksaan (string). Ini hanya digunakan jika pos pemeriksaan yang disediakan oleh tanda --checkpoint
terlalu usang untuk digunakan Helios untuk melakukan sinkronisasi. Jika tidak ada yang disediakan dan tanda --load-external-fallback
tidak disetel, Helios akan mengalami error. Misalnya, Anda dapat menentukan fallback seperti: helios --fallback "https://sync-mainnet.beaconcha.in"
(atau menggunakan singkatan seperti: helios -f "https://sync-mainnet.beaconcha.in"
)
--load-external-fallback
atau -l
memungkinkan fallback pos pemeriksaan subjektivitas yang lemah (tidak diperlukan nilai). Misalnya, Anda menetapkan nilai pos pemeriksaan yang terlalu usang dan Helios tidak dapat menyinkronkannya. Jika tanda ini disetel, Helios akan menanyakan semua api jaringan dalam daftar yang dikelola komunitas di ethpandaops/checkpoint-sync-health-checks untuk slot terbarunya. Daftar slot difilter untuk api yang sehat dan pos pemeriksaan yang paling sering terjadi pada zaman terakhir akan dikembalikan. Catatan: ini adalah daftar yang dikelola komunitas sehingga tidak ada jaminan keamanan yang diberikan. Gunakan ini sebagai upaya terakhir jika pos pemeriksaan Anda masuk ke --checkpoint
gagal. Hal ini tidak disarankan karena pos pemeriksaan berbahaya dapat dikembalikan dari api yang terdaftar, meskipun dianggap sehat . Ini dapat dijalankan seperti ini: helios --load-external-fallback
(atau helios -l
dengan singkatannya).
--strict-checkpoint-age
atau -s
memungkinkan pemeriksaan usia pos pemeriksaan yang ketat. Jika pos pemeriksaan berusia lebih dari dua minggu dan tanda ini diaktifkan, Helios akan mengalami kesalahan. Tanpa tanda ini, Helios malah akan memberikan peringatan kepada pengguna dan melanjutkan. Jika pos pemeriksaan lebih dari dua minggu, ada serangan teoretis yang dapat menyebabkan Helios dan klien yang terlalu ringan tidak melakukan sinkronisasi dengan benar. Serangan ini rumit dan mahal, jadi Helios menonaktifkannya secara default.
--help
atau -h
mencetak pesan bantuan.
Semua opsi konfigurasi dapat diatur pada tingkat per jaringan di ~/.helios/helios.toml
. Berikut ini contoh file konfigurasi:
[mainnet]consensus_rpc = "https://ethereum.operationsolarstorm.org"execution_rpc = "https://eth-mainnet.g.alchemy.com/v2/XXXXX"checkpoint = "0x85e6151a246e8fdba36db27a0c7678a575346272fe978c9281e13a8b26cdfa68"[op-mainnet]consensus_rpc = "https://op-mainnet.operationssolarstorm.org"execution_rpc = "https://opt-mainnet.g.alchemy.com/v2/XXXXX"[base]consensus_rpc = "https://base.operationssolarstorm.org"execution_rpc = "https://base-mainnet.g.alchemy. com/v2/XXXXX"
Perincian komprehensif opsi konfigurasi tersedia di file config.md.
Contoh menjalankan Helios sebagai perpustakaan karat dapat dilihat pada direktori contoh.
Pos pemeriksaan adalah hash blok Lapisan Konsensus Rantai Beacon, bukan hash blok Lapisan Eksekusi. Contoh hash blok Lapisan Eksekusi untuk Holesky ditampilkan di https://holesky.etherscan.io/blocks
Pos pemeriksaan dapat diperoleh dari tautan berikut:
Jaringan Utama Ethereum https://beaconcha.in
Holesky Testnet https://holesky.beaconcha.in
Dianjurkan untuk menggunakan hash blok sebagai pos pemeriksaan yang berumur kurang dari dua minggu, namun Anda sebenarnya dapat menggunakan pos pemeriksaan yang lebih lama dan itu akan tetap berfungsi tetapi akan memberi Anda peringatan. Menggunakan pos pemeriksaan yang berumur kurang dari dua minggu mencegah beberapa serangan yang cukup sulit dilakukan.
Misalnya, untuk mendapatkan pos pemeriksaan terbaru untuk Holesky Testnet, buka https://holesky.beaconcha.in/ dan dapatkan hash blok dari blok pertama dalam setiap periode akhir. Pada saat penulisan, hash blok pertama di epoch 78425 adalah slot tertua 2509600 yang memiliki Block Root 0x60409a013161b33c8c68c6183c7753e779ec6c24be2f3c50c6036c30e13b34a6 dan merupakan nilai checkpoint terbaru yang digunakan.
Pos pemeriksaan terbaru ini dapat disediakan sebagai Opsi CLI Tambahan pada baris perintah untuk menjalankan node Helios Light Client di Ethereum Holesky Testnet:
helios ethereum --jaringan berlubang --konsensus-rpc http://testing.holesky.beacon-api.nimbus.team --eksekusi-rpc https://ethereum-holesky.g.allthatnode.com --pos pemeriksaan 0x60409a013161b33c8c68c6183c7753e779ec6c24be2f3c50c6036c30e13b34a6
Misalnya, untuk mendapatkan pos pemeriksaan terbaru untuk Ethereum Mainnet, buka https://beaconcha.in dan dapatkan hash blok dari blok pertama dalam setiap periode akhir. Pada saat penulisan, hash blok pertama di epoch 222705 adalah slot tertua 7126560 yang memiliki Block Root 0xe1912ca8ca3b45dac497cae7825bab055b0f60285533721b046e8fefb5b076f2 dan merupakan nilai checkpoint terbaru yang digunakan.
Pos pemeriksaan terbaru ini mungkin disediakan sebagai Opsi CLI Tambahan pada baris perintah untuk menjalankan node Helios Light Client di Ethereum Mainnet:
helios ethereum --jaringan jaringan utama --konsensus-rpc https://www.lightclientdata.org --eksekusi-rpc https://ethereum-mainnet.g.allthatnode.com --pos pemeriksaan 0xe1912ca8ca3b45dac497cae7825bab055b0f60285533721b046e8fefb5b076f2
Jika Anda ingin menggunakan File Konfigurasi dan bukan argumen CLI maka Anda harus mengganti contoh checkpoint di file konfigurasi dengan checkpoint terbaru yang diperoleh di atas.
Untuk memastikan Helios berfungsi sesuai harapan, kami memiliki rangkaian pengujian komprehensif yang dapat Anda jalankan. Sebelum menjalankan pengujian, pastikan untuk membuat file .env
di root direktori proyek. Anda dapat menyalin isi file .env.example
dan mengisi rahasia Anda sendiri.
cp .env.contoh .env
Untuk menjalankan semua tes, gunakan perintah berikut:
uji kargo-semua
Untuk menjalankan pengujian pada masing-masing paket, gunakan perintah ini, ganti dengan paket yang ingin Anda uji:
tes kargo -p <nama-paket>
Semua kontribusi untuk Helios dipersilakan. Sebelum membuka PR, harap kirimkan masalah yang merinci bug atau fitur tersebut. Saat membuka PR, harap pastikan bahwa kontribusi Anda bersifat build-up, telah dilengkapi dengan cargo fmt
, dan berisi tes jika berlaku.
Jika Anda mengalami masalah dengan Helios atau sedang mempertimbangkan untuk berkontribusi, silakan bergabung dengan telegram kami di sini.
Kode ini disediakan apa adanya. Tidak ada jaminan, representasi atau garansi yang dibuat, tersurat maupun tersirat, mengenai keamanan atau kebenaran kode ini. Informasi tersebut belum diaudit sehingga tidak ada jaminan bahwa informasi tersebut akan berfungsi sebagaimana mestinya, dan pengguna mungkin mengalami penundaan, kegagalan, kesalahan, kelalaian, atau kehilangan informasi yang dikirimkan. Tidak ada ketentuan dalam laporan ini yang dapat ditafsirkan sebagai nasihat investasi atau nasihat hukum untuk fakta atau keadaan tertentu dan tidak dimaksudkan untuk menggantikan penasihat yang kompeten. Sangat disarankan bagi Anda untuk menghubungi pengacara terkemuka di yurisdiksi Anda jika ada pertanyaan atau permasalahan terkait hal tersebut. a16z tidak bertanggung jawab atas segala penggunaan hal tersebut di atas, dan pengguna harus melanjutkan dengan hati-hati dan menggunakan risiko mereka sendiri. Lihat a16z.com/disclosures untuk info lebih lanjut.