کتابخانه web3.js مجموعهای از ماژولهایی است که دارای عملکردی برای اکوسیستم اتریوم است.
web3-eth برای بلاک چین اتریوم و قراردادهای هوشمند است.
web3-shh برای پروتکل whisper برای برقراری ارتباط p2p و پخش است.
web3-bzz برای پروتکل swarm، ذخیره سازی غیرمتمرکز فایل است.
web3-utils شامل توابع کمکی مفیدی برای توسعه دهندگان Dapp است.
پیشنهاد ویژه: برنامه نویسی بلاکچین
Table of contents [Show]
ابتدا باید web3.js را وارد پروژه خود کنید. این را می توان با استفاده از روش های زیر انجام داد:
npm: npm install web3
yarn: yarn add web3
dist/web3.min.js
را وارد پروژه کنید.
پس از آن باید یک نمونه web3 ایجاد کنید و یک ارائه دهنده تنظیم کنید.
اکثر مرورگرهای پشتیبانی شده از اتریوم مانند MetaMask دارای ارائه دهنده سازگار با EIP-1193 در window.ethereum هستند.
با دستور Web3.givenProvider میتوانید به web3 متصل شوید.
اگر این ویژگی خالی است، باید به یک گره راه دور/محلی متصل شوید.
اکنون می توانید از آبجکت web3 استفاده کنید.
برای کمک به وب 3 برای ادغام در انواع پروژهها با استانداردهای مختلف، راههای متعددی برای عمل بر روی توابع ناهمزمان ارائه میکنیم. اکثر اشیاء web3.js به عنوان آخرین پارامتر و همچنین بازگرداندن promise به توابع زنجیرهای اجازه callback را میدهند. اتریوم به عنوان یک بلاک چین سطوح مختلفی از نهایی بودن دارد و بنابراین باید چندین «مرحله» از یک اقدام را برگرداند. برای مقابله با این نیاز، یک “promiEvent” را برای توابعی مانند web3.eth.sendTransaction یا روش های قرارداد برمی گردانیم. این «promiEvent» تابعی است که با یک انتشار دهنده رویداد ترکیب شده است تا امکان اقدام در مراحل مختلف عملکرد در بلاک چین، مانند یک تراکنش را فراهم کند. PromiEvents مانند یک وعده معمولی با توابع اضافه شده، یکبار و خاموش کار می کند. به این ترتیب توسعه دهندگان می توانند رویدادهای اضافی مانند “دریافت” یا “transactionHash” را ببینند.
رابط json یک شی json است که رابط باینری برنامه (ABI) را برای یک قرارداد هوشمند اتریوم توصیف می کند.
با استفاده از این رابط json web3.js قادر به ایجاد شی جاوا اسکریپت هستیم که نشان دهنده قرارداد هوشمند و روش ها و رویدادهای آن با استفاده از شی web3.eth.Contract است.
type : "function" , "constructor" (can be omitted, defaulting to "function" ; "fallback" also possible but not relevant in web3.js);
name : the name of the function (only present for function types);
constant : true if function is specified to not modify the blockchain state;
payable : true if function accepts ether, defaults to false ;
stateMutability : a string with one of the following values: pure (specified to not read blockchain state), view (same as constant above), nonpayable and payable (same as payable above);
inputs : an array of objects, each of which contains:
name : the name of the parameter;
type : the canonical type of the parameter.
outputs : an array of objects same as inputs , can be omitted if no outputs exist.
type : always "event"
name : the name of the event;
inputs : an array of objects, each of which contains:
name : the name of the parameter;
type : the canonical type of the parameter.
indexed : true if the field is part of the log’s topics, false if it one of the log’s data segment.
anonymous : true if the event was declared as anonymous .
یک شی را با کلاسهای همه ماژولهای فرعی اصلی برمیگرداند تا بتوان آنها را به صورت دستی نمونهسازی کرد.
Eth – Constructor : The Eth module for interacting with the Ethereum network (web3.eth ).
Net – Constructor : The Net module for interacting with network properties (web3.eth.net ).
Personal – Constructor : The Personal module for interacting with the Ethereum accounts (web3.eth.personal ).
Shh – Constructor : The Shh module for interacting with the whisper protocol (web3.shh ).
Bzz – Constructor : The Bzz module for interacting with the swarm network (web3.bzz ).
Web3 Instance
کلاس Web3 یک بسته است که همه ماژول های مرتبط با اتریوم را در خود جای می دهد.
ویژگی قابل دسترسی استاتیک کلاس Web3 و ویژگی نمونه.شامل نسخه بسته فعلی کتابخانه web3.js است. خروچی آن string است که ورژن کنونی را برمیگرداند