กำหนดสแต็ก web3

บทความสำรวจการประยุกต์ใช้และพัฒนา Web3 ในบล็อกเชน

ในส่วนถัดไปของการสร้างบน web3 พัฒนาการสัมพันธ์ของนักพัฒนา Edge & Node Nader Dabit ขยายขอบเขตของ web3 stack และวิธีที่นักพัฒนาสามารถสร้างแบบความคิดเกี่ยวกับด้านต่าง ๆ ของการสร้างบน web3


ฉันเข้าสู่ web3 เมื่อเมษายน 2021 หลังจากเป็นนักพัฒนา full-stack แบบดั้งเดิมเป็นเวลาประมาณ 10 ปี ขณะที่ศึกษาเรื่องเทคโนโลยีและไอเดียใหม่ ๆ ทั้งหมด สิ่งแรกที่ฉันอยากทราบคือ "web3 stack คืออะไร"

เมื่อกำลังสร้างแอปพลิเคชันเว็บหรือมือถือแบบดั้งเดิม ฉันมักจะพึ่งตัวบ่งบางเพื่อทำงาน

  1. เซิร์ฟเวอร์ API / แอปพลิเคชัน (REST หรือ GraphQL)
  2. เลเยอร์การรับรองความถูกต้อง (ที่จัดการหรือทำเอง)
  3. ฐานข้อมูล
  4. Frameworks, platforms, และ libraries บนฝั่งลูกค้า
  5. การจัดเก็บไฟล์

การใช้ส่วนประกอบหลักเหล่านี้ ฉันสามารถสร้างแอปพลิเคชันประเภทต่าง ๆ ได้มากที่สุดที่ฉันต้องการ หรืออย่างน้อยก็ได้มากที่สุดที่ฉันต้องการ ดังนั้นสิ่งนี้ดูเหมือนอย่างไรใน web3 ล่ะ?

มันกลับออกมาว่า คำตอบสำหรับสิ่งนี้ไม่ได้ง่ายขนาดนั้นเพราะ

  1. รูปแบบแตกต่างอย่างสิ้นเชิงในหลายด้าน
  2. เครื่องมือ web3, เทคโนโลยี และระบบนิเวศน์ยังไม่สมบูรณ์เท่ากับ web2

มันยังยากสำหรับฉันที่จะเข้าใจว่าจะเริ่มต้นและทำงานกับแอปพลิเคชัน web3 ได้อย่างไร โดยที่ฉันพยาApproaching แก้ปัญหาในลักษณะเดียวกับที่ฉันทำในโลก web2

หลังจากการทำงาน การศึกษา การทดลอง และการสร้างสิ่งต่าง ๆ ในช่วง 8 เดือนที่ผ่านมา ฉันอยากจะแบ่งปันสิ่งที่ฉันได้เรียนรู้

web3 คืออะไร?

ก่อนที่เราจะกำหนดเหล็กของ web3 stack ลองพยายามกำหนด web3 ก่อน มีความหมายจำนวนมากขึ้นอยู่กับคนที่คุณถาม แต่สำหรับฉันฉันเห็นว่านี้ definition spot on:

Web3 เป็นชุดของโปรโตคอลที่ทำให้แอปพลิเคชันที่เป็นนามธรรมแบบเต็มที่แยกออกมา

ด้วยเทคโนโลยีสแต็กที่ไม่มีการกำหนดที่นี่ เราสามารถเริ่มต้นการสร้างแอปพลิเคชันที่ไม่มีการกำหนดที่มีผลกระทบและลักษณะของตัวเอง

บางคุณสมบัติที่เปิดใช้งานโดย web3 คือ:

  • โครงสร้างพื้นฐานของเว็บที่ไม่มีการจัดกลุ่ม
  • เจ้าของ (ข้อมูล, เนื้อหา, และแพลตฟอร์ม)
  • การชำระเงินดิจิทัลธรรมชาติ
  • Self-sovereign identity
  • โครงสร้างที่กระจาย ไม่มีความไว้วางใจ และทนทาน
  • เปิดเผยสาธารณะ, สามารถประกอบได้ท้ายหลัง

ในขณะที่บางส่วนของแอปพลิเคชันที่สร้างขึ้นบนเทคโนโลยีระบบอนุกรมจะสามารถแทนที่ตัวอย่างก่อนหน้านี้ แอปพลิเคชันรูปแบบใหม่ก็ได้ถูกสร้างขึ้นด้วยโอกาสใหม่ที่เปิดใช้งานโดยบล็อกเชน

การชำระเงินดิจิทัลแบบภาษาถิ่นและโครงสร้างหลังบ้านสาธารณะ - เช่น การเรียนรู้ของเครื่อง, อุปกรณ์เคลื่อนที่, ความเป็นจริงเสมือน, และบล็อกเทคโนโลยีอื่น ๆ - ทำให้สามารถสร้างประเภทของแอปพลิเคชันใหม่ๆ ได้ บางอย่างที่ยังไม่เคยคิดถึง

นี่หมายความว่าว่าทุกอย่างจะถูกแทนที่ด้วย web3 หรือไม่ ไม่จริง. ในขณะที่ฉันคิดว่าการสร้างบนเทคโนโลยีที่มีลักษณะที่กระจายเป็นทางเลือกที่ดีกว่าสำหรับบางประเภทของแอปพลิเคชัน - เช่นเดียวกับการตัดสินใจทางเทคนิคใดๆ มันขึ้นอยู่กับสิ่งที่คุณกำลังสร้าง

มาเริ่มต้นดำน้ำในเว็บ 3 สแต็คตอนนี้ ที่แบ่งออกเป็นชุดหมวดหมู่นี้

  • บล็อกเชน
  • สภาพแวดล้อมในการพัฒนาบล็อกเชน
  • การจัดเก็บไฟล์
  • โปรโตคอลข้อมูลออฟเชน
  • API (การจัดทำดัชนีและคิวรี)
  • ตัวตน
  • ไคลเอ็นต์ (เฟรมเวิร์กและไลบรารี)
  • Oracles
  • โปรโตคอลอื่น ๆ

บล็อกเชน

มีบล็อกเชนมากมายที่คุณสามารถเลือกที่จะสร้างบน ไม่มีตัวไหนที่เป็น "ที่ดีที่สุด" แทนที่คุณควรพิจารณาการแลกเปลี่ยนต่าง ๆ ระหว่างพวกเขา

หนึ่งสิ่งที่สำคัญอยู่เสมอสำหรับฉันเมื่อฉันเรียนรู้สิ่งใหม่ คือความคิดเกี่ยวกับการประยุกต์ใช้หลัก Paretoตามที่ฉันกำลังเรียนรู้ นั่นคือว่าวิธีที่มีประสิทธิภาพที่สุดในการใช้เวลาและความพยายามมากที่สุด ตามความคิดนี้ฉันสามารถได้รับผลต่อเนื่องและเคลื่อนไหวมากที่สุดขณะเรียนรู้สิ่งใหม่ในเวลาที่สั้นที่สุด

ในโลกบล็อกเชน การเรียนรู้ Solidity และ EVM(หรือ Ethereum Virtual Machine) อาจเป็นทายาทที่ดีที่สุดเมื่อเริ่มต้นเป็นนักพัฒนาบล็อกเชน โดยใช้ทักษะนี้ (และเทคสแต็ก) คุณสามารถสร้างไม่เพียงเฉพาะสำหรับ Ethereum เท่านั้น แต่ยังสามารถสร้างสำหรับ Ethereum Layer 2s, sidechains และบล็อกเชนอื่นๆ เช่น Avalanche, Fantom และ Celo

กล่าวถึงนั้น Rust กำลังเริ่มกลายเป็นยิ่งกว่าและยิ่งไปในโลกบล็อกเชน กับ Solana, NEAR, Polkadot และอื่นๆ ที่มีการสนับสนุนภาษา Rust ระดับหนึ่ง คุณอาจจะไม่ผิดหรือพลาดเมื่อเรียนรู้ทั้งสอง แต่สำหรับผู้เริ่มต้น ฉันจะบอกว่า Solidity ยังคงเป็นทางเลือกที่ดีกว่าหากใครบางคนถามฉันว่าวันนี้

นอกจากคำแนะนำนั้น นี่คือตัวอย่างที่ไม่สมบูรณ์ของบล็อกเชนที่มีการผสมผสานที่แข็งแกร่งของเทคโนโลยี ประโยชน์ ชุมชน การเคลื่อนไหว และความเป็นไปได้ในอนาคต:

  • Ethereum- แพลตฟอร์มสมาร์ทคอนแทรคต้นฉบับ
  • ZK rollups: ZKSync, Starknet, Hermez - High throughput Ethereum layer 2s, แต่ไม่สามารถใช้งานร่วมกับ EVM ได้เป็นธรรมชาติ
  • Optimistic rollups: Arbitrum&Optimism - Ethereum layer 2s, EVM compatible (learn more about the differences between optimistic and ZK rollups ที่นี่)
  • พอลีกอน - Ethereum sidechain
  • Solana - ประสิทธิภาพสูง การทำธุรกรรมที่ไม่แพง เวลาบล็อกเร็ว แต่ยากที่จะเรียนรู้มากกว่า EVM (Rust)
  • NEAR - บล็อกเชนชั้นที่ 1 สามารถเขียนสมาร์ทคอนแทร็กใน Rust หรือ Assemblyscript
  • Cosmos - ระบบนิเวศของบล็อกเชนที่สามารถทำงานร่วมกัน
  • Polkadot - แพลตฟอร์มการคำนวณที่ใช้ blockchain ที่ทำให้ blockchains ที่สร้างขึ้นบนพื้นฐานของมันสามารถดำเนินธุรกรรมระหว่างตัวเอง ทำให้เกิดอินเทอร์เน็ตที่เชื่อมต่อของ blockchains
  • ออโรร่า- โซ่ที่เข้ากันได้กับ EVM ที่ทำงานบนโปรโตคอล NEAR
  • Fantom - ชั้นที่เข้ากันได้กับ EVM
  • Avalanche - EVM compatible Layer 1
  • Celo - EVM compatible layer 1, ออกแบบมาเพื่อทำให้สะดวกสบายสำหรับผู้ใดกับสมาร์ทโฟนที่จะส่ง รับ และเก็บเงินดิจิตอล
  • Tezos - ไม่รองรับ EVM ชั้นที่ 1, โครงการ NFT มากมายใช้มัน

เมื่อทำการติดต่อกับเครือข่าย คุณจะต้องใช้จุดสิ้นสุด RPC

มีวิธีหลายวิธีที่คุณสามารถทำได้

  1. เข้าถึงจุดสิ้นสุด RPC สาธารณะ
  2. การเรียกใช้โหนดของคุณเอง
  3. เข้าถึงผู้ให้บริการโหนดเป็นบริการ
  4. เข้าถึงผู้ให้บริการโหนดที่ไม่มีศูนย์กลางเป็นบริการ

จุดปลายทาง RPC สาธารณะมักจะถูกให้โดยเครือข่าย แต่สำหรับ dapps ในโหมดการผลิตสูงสุด คุณจะต้องใช้จุดปลายทางของคุณเองเนื่องจากพวกเขาไม่เสถียรหรือไม่แนะนำสำหรับการผลิต

มีผู้ให้บริการบริการ RPC ขนาดเล็กจำนวนมากอยู่ที่นั่น นี่คือบางคน:

มีโซลูชัน web3 / กระจาย อีกด้วย Pocket Network น่าจะเป็นสิ่งที่ได้รับความนิยม

ตัวเลือกเหล่านี้อาจเป็นทางเลือกที่ดีสำหรับการสื่อสารโดยตรงกับเครือข่ายของคุณ

สภาพแวดล้อมการพัฒนาบล็อกเชน

สำหรับการพัฒนา EVM มีสภาพแวดล้อมการพัฒนาที่ดีมีอยู่หลายรูปแบบ:

  • Hardhat (JavaScript) เป็นตัวเลือกที่ใหม่กว่า แต่กำลังได้รับความนิยมมากขึ้นเรื่อย ๆ คู่มือการใช้งานของพวกเขายอดเยี่ยม การทำเครื่องมือและประสบการณ์ในการพัฒนาได้รับการพัฒนาอย่างดีและนี่คือสิ่งที่ฉันใช้ส่วนตัวในการสร้าง dapps
  • Truffle (JavaScript) เป็นชุดเครื่องมือสำหรับการสร้างและพัฒนาแอปพลิเคชันบน EVM มีความสมบูรณ์และผ่านการทดสอบในสมรรถนะ มีเอกสารประกอบที่ดี เป็นระบบที่ใช้งานมานานและมีนักพัฒนามากมาย
  • Foundryเป็นสภาพแวดล้อมการพัฒนา Solidity ใหม่จาก Paradigm ที่แสดงให้เห็นถึงความสมัครใจมากมาย จุดเด่นสำคัญคือความสามารถในการเขียนทดสอบใน Solidity การสนับสนุนสำหรับ fuzzing และความเร็ว (เขียนด้วย Rust) ฉันเขียนบทนำที่แยกต่างหากเกี่ยวกับมันที่นี่.
  • Brownie เป็นโครงสร้างและกรอบการพัฒนาและทดสอบที่ใช้ Python สำหรับการพัฒนาสัญญาฉลาดสำหรับการพัฒนา Solidity / EVM

สำหรับการพัฒนา Solana Anchorเร็ว ๆ นี้กำลังเป็นจุดเริ่มต้นสำหรับนักพัฒนาใหม่ ๆ มันมี CLI สำหรับการสร้างโครง, สร้าง, และทดสอบโปรแกรม Solana และไลบรารีลูกค้าที่คุณสามารถใช้สร้างเว็บไซต์ด้านหน้า นอกจากนี้ยังรวมถึง DSL ที่ทำให้ซ่อนความซับซ้อนออกไปจากส่วนใหญ่ของความซับซ้อนที่นักพัฒนามักเจอเมื่อเริ่มต้นกับการพัฒนา Solana และ Rust

การจัดเก็บไฟล์

เราจะเก็บรูปภาพ วิดีโอ และไฟล์อื่น ๆ ใน web3 ที่ไหน? การเก็บข้อมูลขนาดใหญ่เช่นนั้นบนโซ่มักจะแพงมาก ดังนั้นเราคงไม่ต้องการเก็บข้อมูลในที่นั้น

แทนที่เราจะใช้หนึ่งในจำนวนเล็กน้อยของโปรโตคอลเก็บข้อมูล

  • IPFS - โปรโตคอลระบบไฟล์แบบ peer-to-peer
    • ข้อดี: มีความเชื่อถือได้ เอกสารที่เขียนอย่างดีพร้อมกับระบบนิเวศใหญ่
    • ข้อเสีย: หากข้อมูลไม่ได้ตรึงไว้ อาจจะสูญหาย
  • Arweave - ช่วยให้คุณเก็บข้อมูลไว้ถาวรโดยจ่ายค่าธุรกรรมเพียงครั้งเดียว ฉันเป็นแฟนของ Arweave และเขียนบล็อกเกอร์เกี่ยวกับมันที่นี่.
  • Filecoin - จาก Protocol Labs, ทีมเดียวกันกับที่สร้าง IPFS, เป็นโปรโตคอลที่ออกแบบมาเพื่อให้ระบบเก็บข้อมูลถาวร. a handful of waysสำหรับนักพัฒนาเพื่อสร้างบน Filecoin รวมถึง web3.storage ซึ่งดูดีมาก
  • Skynet - ฉันยังไม่ได้ใช้งานในการผลิต แต่ได้ลองใช้แล้ว และดูเหมือนจะทำงานได้ดีที่นี่ ดูดี ฉันมีคําถามเช่นข้อมูลยังคงอยู่นานแค่ไหนและการทํางานร่วมกันของ Skynet กับโปรโตคอลอื่น ๆ

โปรโตคอลข้อมูล Off chain

นอกจากการเก็บข้อมูลและการเก็บข้อมูลบนเชื่อมโยง คุณอาจต้องเก็บข้อมูลนอกเชื่อมโยงด้วย คุณอาจใช้ประเภทเหล่านี้ของคำตอบเช่นเดียวกับว่าคุณจะใช้ฐานข้อมูลในชุดเทคโนโลยีดั้งเดิม แต่แทนที่จะทำซ้ำกันที่ n จำนวนของโหนดบนเครือข่ายที่ไม่มีส่วนรวมและด้วยเหตุนี้เป็นไปได้ว่าจะเชื่อถือได้มากขึ้น (อย่างน้อยในทฤษฎี)

ตัวเลือกบางอย่างคือ:

  • เครื่องช่วยสารเครือง- เป็นแพลตฟอร์มแบบซอร์สโค้ดและไม่มีการกำหนดค่าสำหรับการสร้าง โฮสต์ และแบ่งปันข้อมูล Ceramic ยังมีโปรโตคอลเรื่องเครื่องหมายสำคัญที่ฉันจะพูดถึงในภายหลัง แน่นอนว่ามันเป็นทางเลือกของฉันสำหรับการเก็บข้อมูลแบบออฟเชนที่ดีที่สุดในขณะนี้Here’s การสาธิตที่ดีมาก
  • TextileThreadDB - ฐานข้อมูลแบบหลายฝ่ายที่สร้างขึ้นบน IPFS และ Libp2p ถ้าฉันเข้าใจถูก มันอาจกำลังผ่านการเปลี่ยนแปลง API ที่ใหญ่ในขณะนี้ ฉันได้ลองใช้แล้วและมันแสดงให้เห็นว่ามีความมั่นคง แต่เอกสารและ DX ต้องการปรับปรุงบางอย่าง
  • GunDB - ฐานข้อมูลแบบกระจาย มีการใช้ Gun มานานแล้วและ beberapa aplikasi yang cukup menarikได้สร้างด้วยมันแล้ว

จากด้านความสมบูรณ์ ฉันคิดว่า ระบบนิเวศของโซลูชันการจัดเก็บข้อมูลนอกเส้นยังไม่ได้อยู่ในสถานะที่จำเป็นต้องพัฒนาออกไปสู่กรณีการใช้ที่ขั้นสูงมากขึ้นที่บางนักพัฒนาซอฟต์แวร์อาจต้องการ บางที่นี่มีความท้าทาย เช่น ข้อมูลแบบเรียลไทม์ การตรวจจับข้อขัดแย้งและการแก้ข้อขัดแย้ง การอนุญาตให้เขียน การจัดเตรียมเอกสาร และประสบการณ์ของนักพัฒนาทั่วไป

การผสานข้อมูลนอกเครือข่ายกับโปรโตคอลบล็อกเชนเป็นหนึ่งในอุปสรรคใหญ่สุดที่เราต้องเอาชนะก่อนที่เราจะมีสแต็กโปรโตคอลที่ไม่มีการกำหนดอย่างเต็มที่สามารถรองรับประเภทแอปพลิเคชันใดก็ได้

API (การจัดทำดัชนีและคิวรี)

มีความแตกต่างมากมายในวิธีที่เราติดต่อและสร้างบนบล็อกเชนเทียบกับฐานข้อมูลในชุดเทคโนโลยีแบบดั้งเดิม ด้วยบล็อกเชน ข้อมูลไม่ได้ถูกเก็บไว้ในรูปแบบที่สามารถบรรจุหรือใช้งานได้อย่างมีประสิทธิภาพหรือง่ายดายโดยตรงจากแอปพลิเคชันหรือโฟนต์เอ็นด์อื่น ๆ

บล็อกเชนถูกปรับแต่งให้เหมาะสมกับการดำเนินการเขียน เรามักได้ยินเกี่ยวกับนวัตกรรมที่เกิดขึ้นซึ่งเน้นไปที่การทำธุรกรรมต่อวินาที ระยะเวลาบล็อก และค่าใช้จ่ายในการทำธุรกรรม ข้อมูลบล็อกเชนถูกเขียนลงในบล็อกตลอดเวลา ทำให้การดำเนินการที่ไม่ใช่การอ่านข้อมูลพื้นฐานเป็นไปไม่ได้

ในแอปพลิเคชันส่วนใหญ่ คุณต้องการคุณสมบัติเช่นข้อมูลที่เกี่ยวข้อง การเรียงลำดับ การกรอง การค้นหาข้อความแบบเต็ม การแบ่งหน้า และอื่น ๆ ในการทำเช่นนั้น ข้อมูลจำเป็นต้องถูกจัดดัชนีและจัดองค์ให้สามารถเรียกข้อมูลได้อย่างมีประสิทธิภาพ

ตามที่เคยเป็น นั่นคืองานที่ฐานข้อมูลทำในชุดเทคโนโลยีที่ Centralized แต่ชั้นดัชนีนั้นขาดหายไปในชุดเทคโนโลยี web3

The Graph เป็นโปรโตคอลสําหรับการจัดทําดัชนีและการสืบค้นข้อมูลบล็อกเชนที่ทําให้กระบวนการนี้ง่ายขึ้นมากและนําเสนอโซลูชันแบบกระจายอํานาจสําหรับการทําเช่นนั้น ทุกคนสามารถสร้างและเผยแพร่ API GraphQL แบบเปิดที่เรียกว่ากราฟย่อยทําให้ข้อมูลบล็อกเชนง่ายต่อการสืบค้น

เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ The Graph โปรดตรวจสอบเอกสารที่นี่หรือคู่มือของฉันที่นี่.

Identity

Identity is a completely different paradigm in web3. In web2, authentication is almost always based on a user’s personal information. This information is usually gathered either via a form or an OAuth provider that asks the user to hand over in exchange for access to the application.

ใน web3 อัตลักษณ์หมุนรอบไปที่กระทรวงความคิดของกระเป๋าเงินและการเข้ารหัสด้วยกุญแจสาธารณะ.

ในขณะที่ชื่อ “wallet” บรรลุวัตถุประสงค์ของมัน ผมพบว่าผู้คนที่เพิ่งรู้จัก web3 มักพบคำศัพท์ที่เป็นปัญหาเมื่อเกี่ยวข้องกับการพิสูจน์ตัวตนและเอกลักษณ์ หวังว่าในอนาคตเราจะสามารถคิดค้นวิธีอื่น ๆ เพื่อสื่อสารว่า “wallet” คืออะไร โดยที่มันรวมด้านการเงินและตัวตนและเสียงชื่นชม

ในฐานะนักพัฒนา คุณจะต้องเข้าใจวิธีการเข้าถึงและปฏิสัมพันธ์กับวอลเล็ตและที่อยู่ของผู้ใช้ในรูปแบบต่าง ๆ

ในระดับพื้นฐานมาก (และความต้องการที่สามารถพบเห็นได้ง่าย) คุณอาจต้องการขอเข้าถึงกระเป๋าเงินของผู้ใช้ ในการทำเช่นนี้ โดยปกติคุณจะสามารถเข้าถึงกระเป๋าเงินของผู้ใช้ในบริบทของหน้าต่าง (เว็บเบราว์เซอร์) หรือโดยใช้บางสิ่งแบบWalletConnectหรืออะแดปเตอร์กระเป๋าเงินของ Solana.

เช่น เช่น หากพวกเขามีกระเป๋าเงิน Ethereum ที่ใช้ได้ คุณจะสามารถเข้าถึง window.ethereum โดยเดียวกันสำหรับ Solana (window.solana), Arweave (window.arweaveWallet) และอีกหลายอย่าง WalletConnect เหมาะสำหรับเว็บมือถือและ React Native เนื่องจากมันช่วยให้ผู้ใช้สามารถอนุญาตการใช้งานโดยตรงจากกระเป๋าเงินบนมือถือของพวกเขา

ถ้าคุณต้องการจัดการการตรวจสอบตนเอง คุณสามารถอนุญาตให้ผู้ใช้ลงนามสัญญาและถอดรหัสที่ใดก็ได้เพื่อตรวจสอบความถูกต้องของผู้ใช้ แต่สิ่งนี้มักต้องใช้เซิร์ฟเวอร์ที่นี่เป็นตัวอย่างที่แสดงให้เห็นว่ามันอาจจะดูอย่างไรเมื่อใช้งานกระเป๋าเงิน EVM และ ที่นี่เป็นตัวอย่างของวิธีการทำเช่นนี้ด้วย Solana / Phantom

การจัดการโปรไฟล์ผู้ใช้ในรูปแบบกระจายข้อมูลมีอย่างไรบ้างเครื่องหูฟังเซรามิก นําเสนอโปรโตคอลและชุดเครื่องมือที่แข็งแกร่งที่สุดสําหรับการจัดการเอกลักษณ์ที่กระจาย พวกเขาได้ปล่อยโพสต์บล็อกกำหนดขอบเขตบางส่วนของการอัปเดตล่าสุดของพวกเขาและให้คำแนะนำเกี่ยวกับวิธีการทำงานร่วมกันของเครื่องมือทั้งหมด ฉันจะเริ่มต้นที่นั่นแล้วจึงสำรวจเอกสารของพวกเขาเพื่อเข้าใจวิธีเริ่มต้นการสร้าง และพิจารณาการตรวจสอบโครงการตัวอย่างของฉันที่นี่ ที่ใช้เซรามิก self.id.

ถ้าคุณต้องการดึงข้อมูลผู้ใช้ENS text records, the ENSJS library offers a nice API for fetching user data:

const ens = new ENS({ provider, ensAddress: getEnsAddress(‘1’) })

const content = await ens.name(‘sha.eth’).getText(‘avatar’

SpruceID ยังเป็นสิ่งที่ดูมีแนวโน้ม แต่ฉันยังไม่ได้ลอง

เซรามิก และสปรูซทั้งคู่นำไปใช้W3C DIDspecificiation, ซึ่งเองก็เป็นสิ่งหนึ่งที่ฉันคิดว่าเป็นบล็อกสำคัญของ web3 ด้วยเช่นกัน กับความเข้าใจนั้น การประยุกต์ใช้ DIDs ในลักษณะที่มีการควบคุมจากศูนย์ทุกอย่างนั้นเป็นการล้มเลิกแนวคิดของสเปคตรอยที่พยายามทำให้ได้

Client

ตามที่เรื่อง JavaScript frameworks ไป คุณสามารถสร้างด้วยอะไรก็ได้จริง ๆ เนื่องจาก client-side blockchain SDKs เป็นโครงสร้างที่ไม่ขึ้นอยู่กับเฟรมเวิร์กส่วนใหญ่ ที่พูดไปคือ โครงการและตัวอย่างจำนวนมากถูกสร้างขึ้นใน React ยังมีหลายโรงบาลอีกเช่นนั้นSolana อะแดปเตอร์กระเป๋าเงินที่ให้บริการสิ่งประโยชน์เพิ่มเติมสำหรับ React ดังนั้นฉันคิดว่าการเรียนรู้หรือความรู้ความเชี่ยวชาญใน React จะเป็นการเคลื่อนไหวที่ฉลาด

สำหรับ SDK ด้าน client-side ใน Ethereum มีweb3.js และ ethers.js. สำหรับฉัน Ethers เป็นที่เข้าถึงง่ายกว่าและมีเอกสารที่ดีกว่า, แม้ว่า web3.js จะมีมานานแล้ว

ใน Solana, คุณจะเป็นไปหนึ่งที่น่าจะทำงานกับ @solana/web3.jsและ / หรือสมอ. ฉันพบว่าไลบรารีไคลเอ็นต์ Anchor เป็นของฉันในการสร้างโปรแกรม Solana เนื่องจากฉันใช้เฟรมเวิร์ก Anchor อยู่แล้วและฉันพบว่ามันง่ายกว่ามากที่จะเข้าใจแล้ว @solana/web3.js.

Oracles

Oracles allow developers access to read real-world data & external systems from within a smart contract.

ตัวอย่างเช่น แอปพลิเคชันทางการเงินส่วนใหญ่ต้องการความรู้เกี่ยวกับข้อมูลในโลกแห่งความเป็นจริงและเหตุการณ์ที่เกิดขึ้นนอกเครือข่าย ดังนั้น Oracles จึงมีความสําคัญอย่างยิ่งใน DeFi

Chainlinkเป็น Oracle ที่ทำให้สามารถเข้าถึงข้อมูลจริงและการคำนวณที่ไม่อยู่ในโซน พร้อมรักษาความมั่นคงและความเชื่อถือที่เป็นสิ่งที่เกิดขึ้นไปตามเทคโนโลยีบล็อกเชน

Flux เป็น Oracle แบบ cross-chain ที่ให้สัญญาอัจฉริยะพร้อมการเข้าถึงฟีดข้อมูลที่ปลอดภัยทางเศรษฐกิจ

โปรโตคอลอื่น ๆ

Radicleเป็นโปรโตคอลการทำงานร่วมกันของโค้ดแบบใน Git ที่มีลักษณะแบบกระจาย สามารถพิจารณาได้ว่าเป็นเวอร์ชันที่กระจายของ GitHub

Livepeerเป็นเครือข่ายสตรีมมิงวิดีโอที่ไม่มีศูนย์กลาง มีความสมบูรณ์และได้รับการใช้งานอย่างแพร่หลาย มีกว่า 70,000 GPU ที่ใช้งานอยู่บนเครือข่าย

การจัดห่อ

โพสต์นี้จะเป็นเอกสารที่มีชีวิตที่ฉันติดตามเมื่อฉันเรียนรู้ทดลองและรวบรวมข้อเสนอแนะจากนักพัฒนาที่สร้างใน web3

ถ้าคุณมีคำแนะนำหรือไอเดียใด ๆ เกี่ยวกับสิ่งที่ฉันพลาดไป โปรดติดต่อและแบ่งปันความคิดของคุณกับฉัน มันทำให้ตื่นเต้นที่จะเห็นกิจกรรมทั้งหมดที่เกิดขึ้นรอบ ๆ web3 เนื่องจากนักพัฒนากำลังเข้ามาและมีส่วนร่วม ในขณะที่ๅโครงสร้างพื้นฐานยังคงกำลังพัฒนาอยู่ วิสัยทัศน์ในการสร้างโปรโตคอลและแอปพลิเคชันที่แท้จริงที่อนุญาตให้คนสามารถประสานงานโดยไม่ต้องมอบอำนาจและควบคุมให้กับบริษัทใหญ่เป็นสิ่งสำคัญ และเรากำลังใกล้จะทำให้วิสัยทัศน์นี้เป็นความเป็นจริง

ข้อความปฏิเสธความรับผิดชอบ:

  1. บทความนี้ถูกคัดลอกจาก [Gateedgeandnode]. ลิขสิทธิ์ทั้งหมดเป็นของผู้เขียนต้นฉบับ [Nader Dabit]. If there are objections to this reprint, please contact the Gate ฝึกอบรมทีม และพวกเขาจะจัดการกับมันอย่างรวดเร็ว
  2. คำปฏิเสธความรับผิด: มุมมองและความคิดเห็นที่แสดงในบทความนี้เป็นเพียงของผู้เขียนเท่านั้น และไม่เป็นคำแนะนำในการลงทุนใด ๆ
  3. การแปลบทความเป็นภาษาอื่น ๆ ถูกดำเนินการโดยทีม Gate Learn นอกจากการกล่าวถึงแล้ว ห้ามคัดลอก แจกจ่าย หรือลอกเลียนบทความที่ถูกแปล

กำหนดสแต็ก web3

กลาง1/8/2024, 2:50:04 AM
บทความสำรวจการประยุกต์ใช้และพัฒนา Web3 ในบล็อกเชน

ในส่วนถัดไปของการสร้างบน web3 พัฒนาการสัมพันธ์ของนักพัฒนา Edge & Node Nader Dabit ขยายขอบเขตของ web3 stack และวิธีที่นักพัฒนาสามารถสร้างแบบความคิดเกี่ยวกับด้านต่าง ๆ ของการสร้างบน web3


ฉันเข้าสู่ web3 เมื่อเมษายน 2021 หลังจากเป็นนักพัฒนา full-stack แบบดั้งเดิมเป็นเวลาประมาณ 10 ปี ขณะที่ศึกษาเรื่องเทคโนโลยีและไอเดียใหม่ ๆ ทั้งหมด สิ่งแรกที่ฉันอยากทราบคือ "web3 stack คืออะไร"

เมื่อกำลังสร้างแอปพลิเคชันเว็บหรือมือถือแบบดั้งเดิม ฉันมักจะพึ่งตัวบ่งบางเพื่อทำงาน

  1. เซิร์ฟเวอร์ API / แอปพลิเคชัน (REST หรือ GraphQL)
  2. เลเยอร์การรับรองความถูกต้อง (ที่จัดการหรือทำเอง)
  3. ฐานข้อมูล
  4. Frameworks, platforms, และ libraries บนฝั่งลูกค้า
  5. การจัดเก็บไฟล์

การใช้ส่วนประกอบหลักเหล่านี้ ฉันสามารถสร้างแอปพลิเคชันประเภทต่าง ๆ ได้มากที่สุดที่ฉันต้องการ หรืออย่างน้อยก็ได้มากที่สุดที่ฉันต้องการ ดังนั้นสิ่งนี้ดูเหมือนอย่างไรใน web3 ล่ะ?

มันกลับออกมาว่า คำตอบสำหรับสิ่งนี้ไม่ได้ง่ายขนาดนั้นเพราะ

  1. รูปแบบแตกต่างอย่างสิ้นเชิงในหลายด้าน
  2. เครื่องมือ web3, เทคโนโลยี และระบบนิเวศน์ยังไม่สมบูรณ์เท่ากับ web2

มันยังยากสำหรับฉันที่จะเข้าใจว่าจะเริ่มต้นและทำงานกับแอปพลิเคชัน web3 ได้อย่างไร โดยที่ฉันพยาApproaching แก้ปัญหาในลักษณะเดียวกับที่ฉันทำในโลก web2

หลังจากการทำงาน การศึกษา การทดลอง และการสร้างสิ่งต่าง ๆ ในช่วง 8 เดือนที่ผ่านมา ฉันอยากจะแบ่งปันสิ่งที่ฉันได้เรียนรู้

web3 คืออะไร?

ก่อนที่เราจะกำหนดเหล็กของ web3 stack ลองพยายามกำหนด web3 ก่อน มีความหมายจำนวนมากขึ้นอยู่กับคนที่คุณถาม แต่สำหรับฉันฉันเห็นว่านี้ definition spot on:

Web3 เป็นชุดของโปรโตคอลที่ทำให้แอปพลิเคชันที่เป็นนามธรรมแบบเต็มที่แยกออกมา

ด้วยเทคโนโลยีสแต็กที่ไม่มีการกำหนดที่นี่ เราสามารถเริ่มต้นการสร้างแอปพลิเคชันที่ไม่มีการกำหนดที่มีผลกระทบและลักษณะของตัวเอง

บางคุณสมบัติที่เปิดใช้งานโดย web3 คือ:

  • โครงสร้างพื้นฐานของเว็บที่ไม่มีการจัดกลุ่ม
  • เจ้าของ (ข้อมูล, เนื้อหา, และแพลตฟอร์ม)
  • การชำระเงินดิจิทัลธรรมชาติ
  • Self-sovereign identity
  • โครงสร้างที่กระจาย ไม่มีความไว้วางใจ และทนทาน
  • เปิดเผยสาธารณะ, สามารถประกอบได้ท้ายหลัง

ในขณะที่บางส่วนของแอปพลิเคชันที่สร้างขึ้นบนเทคโนโลยีระบบอนุกรมจะสามารถแทนที่ตัวอย่างก่อนหน้านี้ แอปพลิเคชันรูปแบบใหม่ก็ได้ถูกสร้างขึ้นด้วยโอกาสใหม่ที่เปิดใช้งานโดยบล็อกเชน

การชำระเงินดิจิทัลแบบภาษาถิ่นและโครงสร้างหลังบ้านสาธารณะ - เช่น การเรียนรู้ของเครื่อง, อุปกรณ์เคลื่อนที่, ความเป็นจริงเสมือน, และบล็อกเทคโนโลยีอื่น ๆ - ทำให้สามารถสร้างประเภทของแอปพลิเคชันใหม่ๆ ได้ บางอย่างที่ยังไม่เคยคิดถึง

นี่หมายความว่าว่าทุกอย่างจะถูกแทนที่ด้วย web3 หรือไม่ ไม่จริง. ในขณะที่ฉันคิดว่าการสร้างบนเทคโนโลยีที่มีลักษณะที่กระจายเป็นทางเลือกที่ดีกว่าสำหรับบางประเภทของแอปพลิเคชัน - เช่นเดียวกับการตัดสินใจทางเทคนิคใดๆ มันขึ้นอยู่กับสิ่งที่คุณกำลังสร้าง

มาเริ่มต้นดำน้ำในเว็บ 3 สแต็คตอนนี้ ที่แบ่งออกเป็นชุดหมวดหมู่นี้

  • บล็อกเชน
  • สภาพแวดล้อมในการพัฒนาบล็อกเชน
  • การจัดเก็บไฟล์
  • โปรโตคอลข้อมูลออฟเชน
  • API (การจัดทำดัชนีและคิวรี)
  • ตัวตน
  • ไคลเอ็นต์ (เฟรมเวิร์กและไลบรารี)
  • Oracles
  • โปรโตคอลอื่น ๆ

บล็อกเชน

มีบล็อกเชนมากมายที่คุณสามารถเลือกที่จะสร้างบน ไม่มีตัวไหนที่เป็น "ที่ดีที่สุด" แทนที่คุณควรพิจารณาการแลกเปลี่ยนต่าง ๆ ระหว่างพวกเขา

หนึ่งสิ่งที่สำคัญอยู่เสมอสำหรับฉันเมื่อฉันเรียนรู้สิ่งใหม่ คือความคิดเกี่ยวกับการประยุกต์ใช้หลัก Paretoตามที่ฉันกำลังเรียนรู้ นั่นคือว่าวิธีที่มีประสิทธิภาพที่สุดในการใช้เวลาและความพยายามมากที่สุด ตามความคิดนี้ฉันสามารถได้รับผลต่อเนื่องและเคลื่อนไหวมากที่สุดขณะเรียนรู้สิ่งใหม่ในเวลาที่สั้นที่สุด

ในโลกบล็อกเชน การเรียนรู้ Solidity และ EVM(หรือ Ethereum Virtual Machine) อาจเป็นทายาทที่ดีที่สุดเมื่อเริ่มต้นเป็นนักพัฒนาบล็อกเชน โดยใช้ทักษะนี้ (และเทคสแต็ก) คุณสามารถสร้างไม่เพียงเฉพาะสำหรับ Ethereum เท่านั้น แต่ยังสามารถสร้างสำหรับ Ethereum Layer 2s, sidechains และบล็อกเชนอื่นๆ เช่น Avalanche, Fantom และ Celo

กล่าวถึงนั้น Rust กำลังเริ่มกลายเป็นยิ่งกว่าและยิ่งไปในโลกบล็อกเชน กับ Solana, NEAR, Polkadot และอื่นๆ ที่มีการสนับสนุนภาษา Rust ระดับหนึ่ง คุณอาจจะไม่ผิดหรือพลาดเมื่อเรียนรู้ทั้งสอง แต่สำหรับผู้เริ่มต้น ฉันจะบอกว่า Solidity ยังคงเป็นทางเลือกที่ดีกว่าหากใครบางคนถามฉันว่าวันนี้

นอกจากคำแนะนำนั้น นี่คือตัวอย่างที่ไม่สมบูรณ์ของบล็อกเชนที่มีการผสมผสานที่แข็งแกร่งของเทคโนโลยี ประโยชน์ ชุมชน การเคลื่อนไหว และความเป็นไปได้ในอนาคต:

  • Ethereum- แพลตฟอร์มสมาร์ทคอนแทรคต้นฉบับ
  • ZK rollups: ZKSync, Starknet, Hermez - High throughput Ethereum layer 2s, แต่ไม่สามารถใช้งานร่วมกับ EVM ได้เป็นธรรมชาติ
  • Optimistic rollups: Arbitrum&Optimism - Ethereum layer 2s, EVM compatible (learn more about the differences between optimistic and ZK rollups ที่นี่)
  • พอลีกอน - Ethereum sidechain
  • Solana - ประสิทธิภาพสูง การทำธุรกรรมที่ไม่แพง เวลาบล็อกเร็ว แต่ยากที่จะเรียนรู้มากกว่า EVM (Rust)
  • NEAR - บล็อกเชนชั้นที่ 1 สามารถเขียนสมาร์ทคอนแทร็กใน Rust หรือ Assemblyscript
  • Cosmos - ระบบนิเวศของบล็อกเชนที่สามารถทำงานร่วมกัน
  • Polkadot - แพลตฟอร์มการคำนวณที่ใช้ blockchain ที่ทำให้ blockchains ที่สร้างขึ้นบนพื้นฐานของมันสามารถดำเนินธุรกรรมระหว่างตัวเอง ทำให้เกิดอินเทอร์เน็ตที่เชื่อมต่อของ blockchains
  • ออโรร่า- โซ่ที่เข้ากันได้กับ EVM ที่ทำงานบนโปรโตคอล NEAR
  • Fantom - ชั้นที่เข้ากันได้กับ EVM
  • Avalanche - EVM compatible Layer 1
  • Celo - EVM compatible layer 1, ออกแบบมาเพื่อทำให้สะดวกสบายสำหรับผู้ใดกับสมาร์ทโฟนที่จะส่ง รับ และเก็บเงินดิจิตอล
  • Tezos - ไม่รองรับ EVM ชั้นที่ 1, โครงการ NFT มากมายใช้มัน

เมื่อทำการติดต่อกับเครือข่าย คุณจะต้องใช้จุดสิ้นสุด RPC

มีวิธีหลายวิธีที่คุณสามารถทำได้

  1. เข้าถึงจุดสิ้นสุด RPC สาธารณะ
  2. การเรียกใช้โหนดของคุณเอง
  3. เข้าถึงผู้ให้บริการโหนดเป็นบริการ
  4. เข้าถึงผู้ให้บริการโหนดที่ไม่มีศูนย์กลางเป็นบริการ

จุดปลายทาง RPC สาธารณะมักจะถูกให้โดยเครือข่าย แต่สำหรับ dapps ในโหมดการผลิตสูงสุด คุณจะต้องใช้จุดปลายทางของคุณเองเนื่องจากพวกเขาไม่เสถียรหรือไม่แนะนำสำหรับการผลิต

มีผู้ให้บริการบริการ RPC ขนาดเล็กจำนวนมากอยู่ที่นั่น นี่คือบางคน:

มีโซลูชัน web3 / กระจาย อีกด้วย Pocket Network น่าจะเป็นสิ่งที่ได้รับความนิยม

ตัวเลือกเหล่านี้อาจเป็นทางเลือกที่ดีสำหรับการสื่อสารโดยตรงกับเครือข่ายของคุณ

สภาพแวดล้อมการพัฒนาบล็อกเชน

สำหรับการพัฒนา EVM มีสภาพแวดล้อมการพัฒนาที่ดีมีอยู่หลายรูปแบบ:

  • Hardhat (JavaScript) เป็นตัวเลือกที่ใหม่กว่า แต่กำลังได้รับความนิยมมากขึ้นเรื่อย ๆ คู่มือการใช้งานของพวกเขายอดเยี่ยม การทำเครื่องมือและประสบการณ์ในการพัฒนาได้รับการพัฒนาอย่างดีและนี่คือสิ่งที่ฉันใช้ส่วนตัวในการสร้าง dapps
  • Truffle (JavaScript) เป็นชุดเครื่องมือสำหรับการสร้างและพัฒนาแอปพลิเคชันบน EVM มีความสมบูรณ์และผ่านการทดสอบในสมรรถนะ มีเอกสารประกอบที่ดี เป็นระบบที่ใช้งานมานานและมีนักพัฒนามากมาย
  • Foundryเป็นสภาพแวดล้อมการพัฒนา Solidity ใหม่จาก Paradigm ที่แสดงให้เห็นถึงความสมัครใจมากมาย จุดเด่นสำคัญคือความสามารถในการเขียนทดสอบใน Solidity การสนับสนุนสำหรับ fuzzing และความเร็ว (เขียนด้วย Rust) ฉันเขียนบทนำที่แยกต่างหากเกี่ยวกับมันที่นี่.
  • Brownie เป็นโครงสร้างและกรอบการพัฒนาและทดสอบที่ใช้ Python สำหรับการพัฒนาสัญญาฉลาดสำหรับการพัฒนา Solidity / EVM

สำหรับการพัฒนา Solana Anchorเร็ว ๆ นี้กำลังเป็นจุดเริ่มต้นสำหรับนักพัฒนาใหม่ ๆ มันมี CLI สำหรับการสร้างโครง, สร้าง, และทดสอบโปรแกรม Solana และไลบรารีลูกค้าที่คุณสามารถใช้สร้างเว็บไซต์ด้านหน้า นอกจากนี้ยังรวมถึง DSL ที่ทำให้ซ่อนความซับซ้อนออกไปจากส่วนใหญ่ของความซับซ้อนที่นักพัฒนามักเจอเมื่อเริ่มต้นกับการพัฒนา Solana และ Rust

การจัดเก็บไฟล์

เราจะเก็บรูปภาพ วิดีโอ และไฟล์อื่น ๆ ใน web3 ที่ไหน? การเก็บข้อมูลขนาดใหญ่เช่นนั้นบนโซ่มักจะแพงมาก ดังนั้นเราคงไม่ต้องการเก็บข้อมูลในที่นั้น

แทนที่เราจะใช้หนึ่งในจำนวนเล็กน้อยของโปรโตคอลเก็บข้อมูล

  • IPFS - โปรโตคอลระบบไฟล์แบบ peer-to-peer
    • ข้อดี: มีความเชื่อถือได้ เอกสารที่เขียนอย่างดีพร้อมกับระบบนิเวศใหญ่
    • ข้อเสีย: หากข้อมูลไม่ได้ตรึงไว้ อาจจะสูญหาย
  • Arweave - ช่วยให้คุณเก็บข้อมูลไว้ถาวรโดยจ่ายค่าธุรกรรมเพียงครั้งเดียว ฉันเป็นแฟนของ Arweave และเขียนบล็อกเกอร์เกี่ยวกับมันที่นี่.
  • Filecoin - จาก Protocol Labs, ทีมเดียวกันกับที่สร้าง IPFS, เป็นโปรโตคอลที่ออกแบบมาเพื่อให้ระบบเก็บข้อมูลถาวร. a handful of waysสำหรับนักพัฒนาเพื่อสร้างบน Filecoin รวมถึง web3.storage ซึ่งดูดีมาก
  • Skynet - ฉันยังไม่ได้ใช้งานในการผลิต แต่ได้ลองใช้แล้ว และดูเหมือนจะทำงานได้ดีที่นี่ ดูดี ฉันมีคําถามเช่นข้อมูลยังคงอยู่นานแค่ไหนและการทํางานร่วมกันของ Skynet กับโปรโตคอลอื่น ๆ

โปรโตคอลข้อมูล Off chain

นอกจากการเก็บข้อมูลและการเก็บข้อมูลบนเชื่อมโยง คุณอาจต้องเก็บข้อมูลนอกเชื่อมโยงด้วย คุณอาจใช้ประเภทเหล่านี้ของคำตอบเช่นเดียวกับว่าคุณจะใช้ฐานข้อมูลในชุดเทคโนโลยีดั้งเดิม แต่แทนที่จะทำซ้ำกันที่ n จำนวนของโหนดบนเครือข่ายที่ไม่มีส่วนรวมและด้วยเหตุนี้เป็นไปได้ว่าจะเชื่อถือได้มากขึ้น (อย่างน้อยในทฤษฎี)

ตัวเลือกบางอย่างคือ:

  • เครื่องช่วยสารเครือง- เป็นแพลตฟอร์มแบบซอร์สโค้ดและไม่มีการกำหนดค่าสำหรับการสร้าง โฮสต์ และแบ่งปันข้อมูล Ceramic ยังมีโปรโตคอลเรื่องเครื่องหมายสำคัญที่ฉันจะพูดถึงในภายหลัง แน่นอนว่ามันเป็นทางเลือกของฉันสำหรับการเก็บข้อมูลแบบออฟเชนที่ดีที่สุดในขณะนี้Here’s การสาธิตที่ดีมาก
  • TextileThreadDB - ฐานข้อมูลแบบหลายฝ่ายที่สร้างขึ้นบน IPFS และ Libp2p ถ้าฉันเข้าใจถูก มันอาจกำลังผ่านการเปลี่ยนแปลง API ที่ใหญ่ในขณะนี้ ฉันได้ลองใช้แล้วและมันแสดงให้เห็นว่ามีความมั่นคง แต่เอกสารและ DX ต้องการปรับปรุงบางอย่าง
  • GunDB - ฐานข้อมูลแบบกระจาย มีการใช้ Gun มานานแล้วและ beberapa aplikasi yang cukup menarikได้สร้างด้วยมันแล้ว

จากด้านความสมบูรณ์ ฉันคิดว่า ระบบนิเวศของโซลูชันการจัดเก็บข้อมูลนอกเส้นยังไม่ได้อยู่ในสถานะที่จำเป็นต้องพัฒนาออกไปสู่กรณีการใช้ที่ขั้นสูงมากขึ้นที่บางนักพัฒนาซอฟต์แวร์อาจต้องการ บางที่นี่มีความท้าทาย เช่น ข้อมูลแบบเรียลไทม์ การตรวจจับข้อขัดแย้งและการแก้ข้อขัดแย้ง การอนุญาตให้เขียน การจัดเตรียมเอกสาร และประสบการณ์ของนักพัฒนาทั่วไป

การผสานข้อมูลนอกเครือข่ายกับโปรโตคอลบล็อกเชนเป็นหนึ่งในอุปสรรคใหญ่สุดที่เราต้องเอาชนะก่อนที่เราจะมีสแต็กโปรโตคอลที่ไม่มีการกำหนดอย่างเต็มที่สามารถรองรับประเภทแอปพลิเคชันใดก็ได้

API (การจัดทำดัชนีและคิวรี)

มีความแตกต่างมากมายในวิธีที่เราติดต่อและสร้างบนบล็อกเชนเทียบกับฐานข้อมูลในชุดเทคโนโลยีแบบดั้งเดิม ด้วยบล็อกเชน ข้อมูลไม่ได้ถูกเก็บไว้ในรูปแบบที่สามารถบรรจุหรือใช้งานได้อย่างมีประสิทธิภาพหรือง่ายดายโดยตรงจากแอปพลิเคชันหรือโฟนต์เอ็นด์อื่น ๆ

บล็อกเชนถูกปรับแต่งให้เหมาะสมกับการดำเนินการเขียน เรามักได้ยินเกี่ยวกับนวัตกรรมที่เกิดขึ้นซึ่งเน้นไปที่การทำธุรกรรมต่อวินาที ระยะเวลาบล็อก และค่าใช้จ่ายในการทำธุรกรรม ข้อมูลบล็อกเชนถูกเขียนลงในบล็อกตลอดเวลา ทำให้การดำเนินการที่ไม่ใช่การอ่านข้อมูลพื้นฐานเป็นไปไม่ได้

ในแอปพลิเคชันส่วนใหญ่ คุณต้องการคุณสมบัติเช่นข้อมูลที่เกี่ยวข้อง การเรียงลำดับ การกรอง การค้นหาข้อความแบบเต็ม การแบ่งหน้า และอื่น ๆ ในการทำเช่นนั้น ข้อมูลจำเป็นต้องถูกจัดดัชนีและจัดองค์ให้สามารถเรียกข้อมูลได้อย่างมีประสิทธิภาพ

ตามที่เคยเป็น นั่นคืองานที่ฐานข้อมูลทำในชุดเทคโนโลยีที่ Centralized แต่ชั้นดัชนีนั้นขาดหายไปในชุดเทคโนโลยี web3

The Graph เป็นโปรโตคอลสําหรับการจัดทําดัชนีและการสืบค้นข้อมูลบล็อกเชนที่ทําให้กระบวนการนี้ง่ายขึ้นมากและนําเสนอโซลูชันแบบกระจายอํานาจสําหรับการทําเช่นนั้น ทุกคนสามารถสร้างและเผยแพร่ API GraphQL แบบเปิดที่เรียกว่ากราฟย่อยทําให้ข้อมูลบล็อกเชนง่ายต่อการสืบค้น

เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ The Graph โปรดตรวจสอบเอกสารที่นี่หรือคู่มือของฉันที่นี่.

Identity

Identity is a completely different paradigm in web3. In web2, authentication is almost always based on a user’s personal information. This information is usually gathered either via a form or an OAuth provider that asks the user to hand over in exchange for access to the application.

ใน web3 อัตลักษณ์หมุนรอบไปที่กระทรวงความคิดของกระเป๋าเงินและการเข้ารหัสด้วยกุญแจสาธารณะ.

ในขณะที่ชื่อ “wallet” บรรลุวัตถุประสงค์ของมัน ผมพบว่าผู้คนที่เพิ่งรู้จัก web3 มักพบคำศัพท์ที่เป็นปัญหาเมื่อเกี่ยวข้องกับการพิสูจน์ตัวตนและเอกลักษณ์ หวังว่าในอนาคตเราจะสามารถคิดค้นวิธีอื่น ๆ เพื่อสื่อสารว่า “wallet” คืออะไร โดยที่มันรวมด้านการเงินและตัวตนและเสียงชื่นชม

ในฐานะนักพัฒนา คุณจะต้องเข้าใจวิธีการเข้าถึงและปฏิสัมพันธ์กับวอลเล็ตและที่อยู่ของผู้ใช้ในรูปแบบต่าง ๆ

ในระดับพื้นฐานมาก (และความต้องการที่สามารถพบเห็นได้ง่าย) คุณอาจต้องการขอเข้าถึงกระเป๋าเงินของผู้ใช้ ในการทำเช่นนี้ โดยปกติคุณจะสามารถเข้าถึงกระเป๋าเงินของผู้ใช้ในบริบทของหน้าต่าง (เว็บเบราว์เซอร์) หรือโดยใช้บางสิ่งแบบWalletConnectหรืออะแดปเตอร์กระเป๋าเงินของ Solana.

เช่น เช่น หากพวกเขามีกระเป๋าเงิน Ethereum ที่ใช้ได้ คุณจะสามารถเข้าถึง window.ethereum โดยเดียวกันสำหรับ Solana (window.solana), Arweave (window.arweaveWallet) และอีกหลายอย่าง WalletConnect เหมาะสำหรับเว็บมือถือและ React Native เนื่องจากมันช่วยให้ผู้ใช้สามารถอนุญาตการใช้งานโดยตรงจากกระเป๋าเงินบนมือถือของพวกเขา

ถ้าคุณต้องการจัดการการตรวจสอบตนเอง คุณสามารถอนุญาตให้ผู้ใช้ลงนามสัญญาและถอดรหัสที่ใดก็ได้เพื่อตรวจสอบความถูกต้องของผู้ใช้ แต่สิ่งนี้มักต้องใช้เซิร์ฟเวอร์ที่นี่เป็นตัวอย่างที่แสดงให้เห็นว่ามันอาจจะดูอย่างไรเมื่อใช้งานกระเป๋าเงิน EVM และ ที่นี่เป็นตัวอย่างของวิธีการทำเช่นนี้ด้วย Solana / Phantom

การจัดการโปรไฟล์ผู้ใช้ในรูปแบบกระจายข้อมูลมีอย่างไรบ้างเครื่องหูฟังเซรามิก นําเสนอโปรโตคอลและชุดเครื่องมือที่แข็งแกร่งที่สุดสําหรับการจัดการเอกลักษณ์ที่กระจาย พวกเขาได้ปล่อยโพสต์บล็อกกำหนดขอบเขตบางส่วนของการอัปเดตล่าสุดของพวกเขาและให้คำแนะนำเกี่ยวกับวิธีการทำงานร่วมกันของเครื่องมือทั้งหมด ฉันจะเริ่มต้นที่นั่นแล้วจึงสำรวจเอกสารของพวกเขาเพื่อเข้าใจวิธีเริ่มต้นการสร้าง และพิจารณาการตรวจสอบโครงการตัวอย่างของฉันที่นี่ ที่ใช้เซรามิก self.id.

ถ้าคุณต้องการดึงข้อมูลผู้ใช้ENS text records, the ENSJS library offers a nice API for fetching user data:

const ens = new ENS({ provider, ensAddress: getEnsAddress(‘1’) })

const content = await ens.name(‘sha.eth’).getText(‘avatar’

SpruceID ยังเป็นสิ่งที่ดูมีแนวโน้ม แต่ฉันยังไม่ได้ลอง

เซรามิก และสปรูซทั้งคู่นำไปใช้W3C DIDspecificiation, ซึ่งเองก็เป็นสิ่งหนึ่งที่ฉันคิดว่าเป็นบล็อกสำคัญของ web3 ด้วยเช่นกัน กับความเข้าใจนั้น การประยุกต์ใช้ DIDs ในลักษณะที่มีการควบคุมจากศูนย์ทุกอย่างนั้นเป็นการล้มเลิกแนวคิดของสเปคตรอยที่พยายามทำให้ได้

Client

ตามที่เรื่อง JavaScript frameworks ไป คุณสามารถสร้างด้วยอะไรก็ได้จริง ๆ เนื่องจาก client-side blockchain SDKs เป็นโครงสร้างที่ไม่ขึ้นอยู่กับเฟรมเวิร์กส่วนใหญ่ ที่พูดไปคือ โครงการและตัวอย่างจำนวนมากถูกสร้างขึ้นใน React ยังมีหลายโรงบาลอีกเช่นนั้นSolana อะแดปเตอร์กระเป๋าเงินที่ให้บริการสิ่งประโยชน์เพิ่มเติมสำหรับ React ดังนั้นฉันคิดว่าการเรียนรู้หรือความรู้ความเชี่ยวชาญใน React จะเป็นการเคลื่อนไหวที่ฉลาด

สำหรับ SDK ด้าน client-side ใน Ethereum มีweb3.js และ ethers.js. สำหรับฉัน Ethers เป็นที่เข้าถึงง่ายกว่าและมีเอกสารที่ดีกว่า, แม้ว่า web3.js จะมีมานานแล้ว

ใน Solana, คุณจะเป็นไปหนึ่งที่น่าจะทำงานกับ @solana/web3.jsและ / หรือสมอ. ฉันพบว่าไลบรารีไคลเอ็นต์ Anchor เป็นของฉันในการสร้างโปรแกรม Solana เนื่องจากฉันใช้เฟรมเวิร์ก Anchor อยู่แล้วและฉันพบว่ามันง่ายกว่ามากที่จะเข้าใจแล้ว @solana/web3.js.

Oracles

Oracles allow developers access to read real-world data & external systems from within a smart contract.

ตัวอย่างเช่น แอปพลิเคชันทางการเงินส่วนใหญ่ต้องการความรู้เกี่ยวกับข้อมูลในโลกแห่งความเป็นจริงและเหตุการณ์ที่เกิดขึ้นนอกเครือข่าย ดังนั้น Oracles จึงมีความสําคัญอย่างยิ่งใน DeFi

Chainlinkเป็น Oracle ที่ทำให้สามารถเข้าถึงข้อมูลจริงและการคำนวณที่ไม่อยู่ในโซน พร้อมรักษาความมั่นคงและความเชื่อถือที่เป็นสิ่งที่เกิดขึ้นไปตามเทคโนโลยีบล็อกเชน

Flux เป็น Oracle แบบ cross-chain ที่ให้สัญญาอัจฉริยะพร้อมการเข้าถึงฟีดข้อมูลที่ปลอดภัยทางเศรษฐกิจ

โปรโตคอลอื่น ๆ

Radicleเป็นโปรโตคอลการทำงานร่วมกันของโค้ดแบบใน Git ที่มีลักษณะแบบกระจาย สามารถพิจารณาได้ว่าเป็นเวอร์ชันที่กระจายของ GitHub

Livepeerเป็นเครือข่ายสตรีมมิงวิดีโอที่ไม่มีศูนย์กลาง มีความสมบูรณ์และได้รับการใช้งานอย่างแพร่หลาย มีกว่า 70,000 GPU ที่ใช้งานอยู่บนเครือข่าย

การจัดห่อ

โพสต์นี้จะเป็นเอกสารที่มีชีวิตที่ฉันติดตามเมื่อฉันเรียนรู้ทดลองและรวบรวมข้อเสนอแนะจากนักพัฒนาที่สร้างใน web3

ถ้าคุณมีคำแนะนำหรือไอเดียใด ๆ เกี่ยวกับสิ่งที่ฉันพลาดไป โปรดติดต่อและแบ่งปันความคิดของคุณกับฉัน มันทำให้ตื่นเต้นที่จะเห็นกิจกรรมทั้งหมดที่เกิดขึ้นรอบ ๆ web3 เนื่องจากนักพัฒนากำลังเข้ามาและมีส่วนร่วม ในขณะที่ๅโครงสร้างพื้นฐานยังคงกำลังพัฒนาอยู่ วิสัยทัศน์ในการสร้างโปรโตคอลและแอปพลิเคชันที่แท้จริงที่อนุญาตให้คนสามารถประสานงานโดยไม่ต้องมอบอำนาจและควบคุมให้กับบริษัทใหญ่เป็นสิ่งสำคัญ และเรากำลังใกล้จะทำให้วิสัยทัศน์นี้เป็นความเป็นจริง

ข้อความปฏิเสธความรับผิดชอบ:

  1. บทความนี้ถูกคัดลอกจาก [Gateedgeandnode]. ลิขสิทธิ์ทั้งหมดเป็นของผู้เขียนต้นฉบับ [Nader Dabit]. If there are objections to this reprint, please contact the Gate ฝึกอบรมทีม และพวกเขาจะจัดการกับมันอย่างรวดเร็ว
  2. คำปฏิเสธความรับผิด: มุมมองและความคิดเห็นที่แสดงในบทความนี้เป็นเพียงของผู้เขียนเท่านั้น และไม่เป็นคำแนะนำในการลงทุนใด ๆ
  3. การแปลบทความเป็นภาษาอื่น ๆ ถูกดำเนินการโดยทีม Gate Learn นอกจากการกล่าวถึงแล้ว ห้ามคัดลอก แจกจ่าย หรือลอกเลียนบทความที่ถูกแปล
เริ่มตอนนี้
สมัครและรับรางวัล
$100