این کلاس اصلی ( یا چتر ) کتابخانه web۳.js است .
var Web3 = require('web3');
> Web3.utils
> Web3.version
> Web3.givenProvider
> Web3.providers
> Web3.modules
Web3.modules
یک شی را با کلاس های همه زیر ماژول های اصلی برمی گرداند تا بتواند آن ها را به صورت دستی مرتب کند.
Object: فهرستی از سازنده های ماژول:
Web3.modules
> {
Eth: Eth(provider),
Net: Net(provider),
Personal: Personal(provider),
}
کلاس Web۳ یک بسته چتری برای قرار دادن تمام ماژول های مرتبط با اتریوم است.
var Web3 = require('web3');
// "Web3.providers.givenProvider" will be set if in an Ethereum supported browser.
var web3 = new Web3(Web3.givenProvider || 'ws://some.local-or-remote.node:8546');
> web3.eth
> web3.utils
> web3.version
ویژگی قابل دسترس استاتیک از کلاس Web3.
Web3.version
web3.version
این محصول شامل نسخه فعلی کتابخانه web3.js است.
String: نسخه فعلی.
web3.version;
> "1.2.3"
ویژگی قابل دسترس استاتیک از کلاس Web3.
Web3.utils
web3.utils
توابع کمکی نیز به طور مستقیم بر روی شی کلاس Web۳ نمایش داده می شوند.
برای اطلاعات بیشتر به web3.utils مراجعه کنید.
web3.setProvider(myProvider)
web3.eth.setProvider(myProvider)
...
ارائه دهنده ماژول خود را تغییر خواهد داد.
توجه
زمانی که بسته چتری web۳ فراخوانی می شود، ارائه دهنده را برای تمام ماژول های فرعی نیز تنظیم می کند.
Boolean
var Web3 = require('web3');
var web3 = new Web3('http://localhost:8545');
// or
var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
// change provider
web3.setProvider('ws://localhost:8546');
// or
web3.setProvider(new Web3.providers.WebsocketProvider('ws://localhost:8546'));
// Using the IPC provider in node.js
var net = require('net');
var web3 = new Web3('/Users/myuser/Library/Ethereum/geth.ipc', net); // mac os path
// or
var web3 = new Web3(new Web3.providers.IpcProvider('/Users/myuser/Library/Ethereum/geth.ipc', net)); // mac os path
// on windows the path is: "\\\\.\\pipe\\geth.ipc"
// on linux the path is: "/users/myuser/.ethereum/geth.ipc"
// Using a remote node provider, like Alchemy (https://www.alchemyapi.io/supernode), is simple.
var Web3 = require('web3');
var web3 = new Web3("https://eth-mainnet.alchemyapi.io/v2/your-api-key");
web3.providers
web3.eth.providers
...
این محصول شامل ارائه دهندگان موجودفعلیمیشود.
Object با ارائه کنندگان زیر :
var Web3 = require('web3');
// use the given Provider, e.g in Mist, or instantiate a new websocket provider
var web3 = new Web3(Web3.givenProvider || 'ws://remotenode.com:8546');
// or
var web3 = new Web3(Web3.givenProvider || new Web3.providers.WebsocketProvider('ws://remotenode.com:8546'));
// Using the IPC provider in node.js
var net = require('net');
var web3 = new Web3('/Users/myuser/Library/Ethereum/geth.ipc', net); // mac os path
// or
var web3 = new Web3(new Web3.providers.IpcProvider('/Users/myuser/Library/Ethereum/geth.ipc', net)); // mac os path
// on windows the path is: "\\\\.\\pipe\\geth.ipc"
// on linux the path is: "/users/myuser/.ethereum/geth.ipc"
// ====
// Http
// ====
var Web3HttpProvider = require('web3-providers-http');
var options = {
keepAlive: true,
withCredentials: false,
timeout: 20000, // ms
headers: [
{
name: 'Access-Control-Allow-Origin',
value: '*'
},
{
...
}
],
agent: {
http: http.Agent(...),
baseUrl: ''
}
};
var provider = new Web3HttpProvider('http://localhost:8545', options);
// ==========
// Websockets
// ==========
var Web3WsProvider = require('web3-providers-ws');
var options = {
timeout: 30000, // ms
// Useful for credentialed urls, e.g: ws://username:password@localhost:8546
headers: {
authorization: 'Basic username:password'
},
clientConfig: {
// Useful if requests are large
maxReceivedFrameSize: 100000000, // bytes - default: 1MiB
maxReceivedMessageSize: 100000000, // bytes - default: 8MiB
// Useful to keep a connection alive
keepalive: true,
keepaliveInterval: 60000 // ms
},
// Enable auto reconnection
reconnect: {
auto: true,
delay: 5000, // ms
maxAttempts: 5,
onTimeout: false
}
};
var ws = new Web3WsProvider('ws://localhost:8546', options);
اطلاعات بیشتر در مورد ماژول های ارائه دهنده Http و Websocket را می توانید در اینجا مشاهده کنید:
web3.givenProvider
web3.eth.givenProvider
...
هنگام استفاده از web3.js در یک مرورگر سازگار با اتریوم، با ارائه دهنده فعلی بومی توسط آن مرورگر تنظیم می شود. ارائهدهنده دادهشده را توسط محیط (مرورگر) برمیگرداند، در غیر این صورت تهی یا null است.
Object: ارائه دهنده داده شده مجموعه یا تهی است.
web3.currentProvider
web3.eth.currentProvider
...
ارائه دهنده فعلی را برمی گرداند، در غیر این صورت صفر است.
Object: ارائه دهنده فعلی مجموعه یا تهی است.
new web3.BatchRequest()
new web3.eth.BatchRequest()
کلاس برای ایجاد و اجرای درخواستهای گروهی.
none
Object: با روش های زیر:
var contract = new web3.eth.Contract(abi, address);
var batch = new web3.BatchRequest();
batch.add(web3.eth.getBalance.request('0x0000000000000000000000000000000000000000', 'latest', callback));
batch.add(contract.methods.balance(address).call.request({from: '0x0000000000000000000000000000000000000000'}, callback2));
batch.execute();
web3.extend(methods)
web3.eth.extend(methods)
...
امکان گسترش ماژول های web3 را فراهم میکند.
توجه
شما همچنین از *.extend.formatters به عنوان توابع formatter اضافی برای استفاده برای قالببندی ورودی و خروجی استفاده میکنید. لطفاً فایل منبع را برای جزییات تابع ببینید.
Object: ماژول توسعه یافته.
web3.extend({
property: 'myModule',
methods: [{
name: 'getBalance',
call: 'eth_getBalance',
params: 2,
inputFormatter: [web3.extend.formatters.inputAddressFormatter, web3.extend.formatters.inputDefaultBlockNumberFormatter],
outputFormatter: web3.utils.hexToNumberString
},{
name: 'getGasPriceSuperFunction',
call: 'eth_gasPriceSuper',
params: 2,
inputFormatter: [null, web3.utils.numberToHex]
}]
});
web3.extend({
methods: [{
name: 'directCall',
call: 'eth_callForFun',
}]
});
console.log(web3);
> Web3 {
myModule: {
getBalance: function(){},
getGasPriceSuperFunction: function(){}
},
directCall: function(){},
eth: Eth {...},
...
}