Helios เป็นไคลเอนต์ไลท์ multichain แบบพกพาที่น่าเชื่อถือ มีประสิทธิภาพ และพกพาได้ซึ่งเขียนด้วยภาษา Rust
Helios แปลงตำแหน่งข้อมูล RPC แบบรวมศูนย์ที่ไม่น่าเชื่อถือให้เป็น RPC ภายในที่ปลอดภัยซึ่งควบคุมไม่ได้สำหรับผู้ใช้ ซิงค์ได้ภายในไม่กี่วินาที ไม่ต้องใช้พื้นที่จัดเก็บข้อมูล และมีน้ำหนักเบาพอที่จะทำงานบนอุปกรณ์เคลื่อนที่ได้
Helios มีขนาดไบนารี่ที่เล็กและคอมไพล์ลงใน WebAssembly สิ่งนี้ทำให้เป็นเป้าหมายที่สมบูรณ์แบบในการฝังลงในกระเป๋าเงินและ dapps โดยตรง
ขั้นแรกให้ติดตั้ง heliosup
ตัวติดตั้งของ Helios:
curl https://raw.githubusercontent.com/a16z/helios/master/heliosup/install | bash
หากต้องการติดตั้ง Helios ให้รัน heliosup
หากต้องการรัน Helios บน Ethereum ให้รันคำสั่งด้านล่าง โดยแทนที่ $ETH_RPC_URL
ด้วย URL ของผู้ให้บริการ RPC เช่น Alchemy:
helios ethereum --execution-rpc $ETH_RPC_URL
$ETH_RPC_URL
ต้องเป็นผู้ให้บริการ Ethereum Execution API ที่รองรับซึ่งจัดเตรียมจุดสิ้นสุด eth_getProof
ขณะนี้ Infura ไม่สนับสนุนสิ่งนี้ เราแนะนำให้ใช้การเล่นแร่แปรธาตุ
ตอนนี้ Helios จะรันเซิร์ฟเวอร์ RPC ภายในที่ http://127.0.0.1:8545
นอกจากนี้ Helios ยังมีเอกสารเกี่ยวกับวิธีการ RPC ที่รองรับในไฟล์ rpc.md
หากต้องการรัน Helios บน OP Stack chain ให้รันคำสั่งด้านล่าง โดยแทนที่ $ETH_RPC_URL
ด้วย URL ของผู้ให้บริการ RPC เช่น Alchemy และ $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
ตั้งค่า IP ที่เชื่อมโยงกับเซิร์ฟเวอร์ JSON-RPC ตามค่าเริ่มต้น 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 จะค้นหา API เครือข่ายทั้งหมดในรายการที่ดูแลโดยชุมชนที่ ethpandaops/checkpoint-sync-health-checks เพื่อหาสล็อตล่าสุด รายการช่องจะถูกกรองเพื่อหา API ที่ดี และจุดตรวจสอบที่พบบ่อยที่สุดที่เกิดขึ้นในยุคล่าสุดจะถูกส่งกลับ หมายเหตุ: นี่คือรายการที่ดูแลรักษาโดยชุมชน ดังนั้นจึงไม่มีการรับประกันความปลอดภัย ใช้สิ่งนี้เป็นทางเลือกสุดท้ายหากจุดตรวจของคุณผ่านเข้าสู่ --checkpoint
ล้มเหลว ไม่แนะนำสิ่งนี้เนื่องจากจุดตรวจสอบที่เป็นอันตรายสามารถส่งคืนได้จาก API ที่อยู่ในรายการ แม้ว่าจะถือว่าจุดตรวจสอบนั้น มีประสิทธิภาพดี ก็ตาม สิ่งนี้สามารถทำงานได้ดังนี้: helios --load-external-fallback
(หรือ helios -l
พร้อมชวเลข)
--strict-checkpoint-age
หรือ -s
เปิดใช้งานการตรวจสอบอายุจุดตรวจที่เข้มงวด หากจุดตรวจสอบมีอายุเกินสองสัปดาห์และเปิดใช้งานธงนี้ Helios จะเกิดข้อผิดพลาด หากไม่มีแฟล็กนี้ Helios จะแสดงคำเตือนแก่ผู้ใช้แทนและดำเนินการต่อ หากจุดตรวจสอบมีอายุมากกว่าสองสัปดาห์ มีการโจมตีทางทฤษฎีที่อาจทำให้ Helios และไคลเอ็นต์ Over light ซิงค์ไม่ถูกต้อง การโจมตีเหล่านี้มีความซับซ้อนและมีราคาแพง ดังนั้น Helios จึงปิดใช้งานสิ่งนี้ตามค่าเริ่มต้น
--help
หรือ -h
พิมพ์ข้อความช่วยเหลือ
ตัวเลือกการกำหนดค่าทั้งหมดสามารถตั้งค่าในระดับต่อเครือข่ายใน ~/.helios/helios.toml
นี่คือตัวอย่างไฟล์ปรับแต่ง:
[mainnet]consensus_rpc = "https://ethereum.operationsolarstorm.org"execution_rpc = "https://eth-mainnet.g.alchemy.com/v2/XXXXX"จุดตรวจสอบ = "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/XXXX"
รายละเอียดตัวเลือกการกำหนดค่าที่ครอบคลุมมีอยู่ในไฟล์ config.md
สามารถดูตัวอย่างการใช้งาน Helios เป็นไลบรารี่สนิมได้ในไดเร็กทอรีตัวอย่าง
จุดตรวจสอบคือแฮชบล็อก Beacon Chain Consensus Layer แทนที่จะเป็นแฮชบล็อก Execution Layer ตัวอย่างของแฮชบล็อก Execution Layer สำหรับ Holesky แสดงอยู่ที่ https://holesky.etherscan.io/blocks
จุดตรวจสามารถรับได้จากลิงค์ต่อไปนี้:
Ethereum Mainnet https://beaconcha.in
Holesky Testnet https://holesky.beaconcha.in
ขอแนะนำให้ใช้ block hash เป็นจุดตรวจสอบที่มีอายุน้อยกว่าสองสัปดาห์ อย่างไรก็ตาม คุณสามารถใช้จุดตรวจสอบเก่าได้จริงและจะยังคงใช้งานได้ แต่จะแจ้งเตือนคุณ การใช้จุดตรวจที่มีอายุน้อยกว่าสองสัปดาห์จะป้องกันการโจมตีบางอย่างซึ่งยากจะสำเร็จ
ตัวอย่างเช่น หากต้องการรับจุดตรวจสอบล่าสุดสำหรับ Holesky Testnet ให้ไปที่ https://holesky.beaconcha.in/ และรับบล็อกแฮชของบล็อกแรกในยุคที่สรุปแล้ว ในขณะที่เขียน แฮชของบล็อกแรกในยุค 78425 คือสล็อตที่เก่าแก่ที่สุด 2509600 ซึ่งมี Block Root เป็น 0x60409a013161b33c8c68c6183c7753e779ec6c24be2f3c50c6036c30e13b34a6 และเป็นค่าจุดตรวจสอบล่าสุดที่จะใช้
จุดตรวจสอบล่าสุดนี้อาจจัดให้เป็นตัวเลือก CLI เพิ่มเติมที่บรรทัดคำสั่งเพื่อเรียกใช้โหนด Helios Light Client บน Ethereum Holesky Testnet:
เฮลิออส อีเธอเรียม --เครือข่ายโฮลสกาย --consensus-rpc http://testing.holesky.beacon-api.nimbus.team --execution-rpc https://ethereum-holesky.g.allthatnode.com --จุดตรวจ 0x60409a013161b33c8c68c6183c7753e779ec6c24be2f3c50c6036c30e13b34a6
ตัวอย่างเช่น หากต้องการรับจุดตรวจสอบล่าสุดสำหรับ Ethereum Mainnet ให้ไปที่ https://beaconcha.in และรับบล็อกแฮชของบล็อกแรกในยุคที่สรุปแล้ว ในขณะที่เขียนบล็อกแฮชแรกในยุค 222705 เป็นสล็อตที่เก่าแก่ที่สุด 7126560 ซึ่งมี Block Root เป็น 0xe1912ca8ca3b45dac497cae7825bab055b0f60285533721b046e8fefb5b076f2 และเป็นค่าจุดตรวจสอบล่าสุดที่จะใช้
จุดตรวจสอบล่าสุดนี้อาจจัดให้เป็นตัวเลือก CLI เพิ่มเติมที่บรรทัดคำสั่งเพื่อเรียกใช้โหนด Helios Light Client บน Ethereum Mainnet:
เฮลิออส อีเธอเรียม --เครือข่ายเมนเน็ต --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