آموزش Web3.eth

Open Zeppelin چیست؟

Open Zeppelin چیست؟

مبتدی
3 دقیقه
28 اسفند
سالیدیتی چیست؟

سالیدیتی چیست؟

مبتدی
10 دقیقه
23 اسفند
نحوه ایجاد NFT با سالیدیتی

نحوه ایجاد NFT با سالیدیتی

مبتدی
7 دقیقه
21 اسفند
وب3 و سالیدیتی

وب3 و سالیدیتی

متوسط
7 دقیقه
23 بهمن
نقش یک طراح سالیدیتی چیست؟

نقش یک طراح سالیدیتی چیست؟

مبتدی
4 دقیقه
19 بهمن
استانداردهای توکن

استانداردهای توکن چیست؟

متوسط
5 دقیقه
8 بهمن
ساخت توکن

ساخت توکن

متوسط
4 دقیقه
5 بهمن
زبان سالیدیتی برای اتریوم

زبان سالیدیتی برای اتریوم

متوسط
7 دقیقه
2 بهمن
توکن استیک

اجرای استیکینگ در سالیدیتی

متوسط
6 دقیقه
25 دی

web3.eth

بسته Web3-eth به شما امکان تعامل با بلاک چین اتریوم و قراردادهای هوشمند اتریوم را می دهد.

var Eth = require('web3-eth');

// "Eth.providers.givenProvider" will be set if in an Ethereum supported browser.
var eth = new Eth(Eth.givenProvider || 'ws://some.local-or-remote.node:8546');


// or using the web3 umbrella package

var Web3 = require('web3');
var web3 = new Web3(Web3.givenProvider || 'ws://some.local-or-remote.node:8546');

// -> web3.eth

Note on checksum addresses

تمام آدرس‌های اتریوم توسط توابع این بسته به عنوان آدرس checksum بازگردانده می‌شوند . این به این معنی است که برخی حروف بزرگ هستند و برخی از حروف کوچک هستند . براساس آن , مجموع checksum برای این آدرس را محاسبه کرده و درستی آن را اثبات می‌کند . آدرس‌های نادرست checksum در هنگام عبور به توابع خطایی را نشان خواهند داد . اگر می‌خواهید مجموع checksum را کنترل کنید , می‌توانید یک آدرس را با حروف کوچک یا بزرگ در نظر بگیرید .

مثال

web3.eth.getAccounts(console.log);
> ["0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe" ,"0x85F43D8a49eeB85d32Cf465507DD71d507100C1d"]

subscribe

برای web3.eth.subscribe به مستندات مرجع subscribe مراجعه کنید.

Contract

برای web3.eth.Contract به مستندات مرجع Contract مراجعه کنید.

Iban

برای web3.eth.Iban به مستندات مرجع Iban مراجعه کنید.

personal

برای web3.eth.personal به مستندات مرجع personal مراجعه کنید.

accounts

برای web3.eth.accounts به مستندات مرجع accounts مراجعه کنید.

ens

برای web3.eth.ens به مستندات مرجع ENS مراجعه کنید.

abi

برای web3.eth.abi به مستندات مرجع ABI مراجعه کنید.

net

برای web3.eth.net به مستندات مرجع net مراجعه کنید.

setProvider

web3.setProvider(myProvider)
web3.eth.setProvider(myProvider)
...

ارائه دهنده ماژول خود را تغییر خواهد داد.

توجه

زمانی که بسته چتری web۳ فراخوانی می شود، ارائه دهنده را برای تمام ماژول های فرعی نیز تنظیم می کند.

Parameters

  1. Object
    myProvider
    : یک ارائه دهنده معتبر.

Returns

Boolean

مثال: نود Geth محلی

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");

providers

web3.providers
web3.eth.providers
...

ارائه دهندگان فعلی را در بر می گیرد.

Value

شی با ارائه دهندگان زیر:

  • Object
    HttpProvider
    : ارائه‌دهنده HTTP منسوخ شده است، زیرا برای اشتراک‌ها کار نمی‌کند.
  • Object
    WebsocketProvider
    : ارائه دهنده Websocket استانداردی برای استفاده در مرورگرهای قدیمی است.
  • Object
    IpcProvider
    : ارائه دهنده IPC هنگام اجرای یک گره محلی از node.js dapps استفاده می کند. امن ترین اتصال را ارائه می دهد.

Example

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"

Configuration

// ====
// 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 را می توانید در اینجا مشاهده کنید:

  • HttpProvider
  • WebsocketProvider

givenProvider

web3.givenProvider
web3.eth.givenProvider
...

هنگام استفاده از web۳.js در یک مرورگر سازگار با اتریوم ، با ارائه دهنده بومی فعلی توسط آن مرورگر تنظیم خواهد شد. ارائه دهنده داده را توسط مرورگر برمی گرداند، در غیر این صورت null است.

Returns

Object: ارائه دهنده تنظیم شده است یا null است.

currentProvider

web3.currentProvider
web3.eth.currentProvider
...

ارائه دهنده فعلی را برمی گرداند، در غیر این صورت null است.

Returns

Object: ارائه دهنده فعلی تنظیم شده است یا null است.

BatchRequest

new web3.BatchRequest()
new web3.eth.BatchRequest()

کلاسی برای ایجاد و اجرای درخواست های دسته ای.

Parameters

none

Returns

Object: با روش های زیر:

  • add(request)
    : اضافه کردن یک شی درخواستی به فراخوانی دسته ای.
  • execute()
    : اجرای درخواست دسته ای.

Example

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();

extend

web3.extend(methods)
web3.eth.extend(methods)
...

امکان گسترش ماژول های وب۳.

توجه

همچنین *.extend.formatters به عنوان توابع قالب بندی اضافی برای قالب بندی ورودی و خروجی استفاده می شوند.لطفا فایل منبع را برای جزئیات تابع ببینید.

Parameters

  1. methods
    Object
    : شیء پسوند با آرایه ای از متدها اشیاء را به صورت زیر شرح می دهد:
    • property
      String
      : (اختیاری) نام ویژگی که باید به ماژول اضافه شود.اگر هیچ ویژگی تنظیم نشده باشد، به صورت مستقیم به ماژول اضافه خواهد شد.
    • methods
      Array
      : آرایه توصیف روش:
      • name
        String
        : نام متدی که باید اضافه شود.
      • call
        String
        : نام متد RPC.
      • params
        Number
        : (اختیاری) تعداد پارامترهای آن تابع.پیش فرض 0 است.
      • inputFormatter
        Array
        : (اختیاری) آرایه توابع ایندکس شده. هر آیتم آرایه به یک پارامتر تابع پاسخ می دهد، بنابراین اگر می خواهید برخی پارامترها قالب بندی نشوند، به جای آن یک null اضافه کنید.
      • outputFormatter – “Function
        : (اختیاری) می‌تواند برای قالب‌بندی خروجی روش مورد استفاده قرار گیرد.

Returns

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 {...},
    ...
}

defaultAccount

web3.eth.defaultAccount

این آدرس پیش‌فرض به‌عنوان ویژگی پیش‌فرض «from» استفاده می‌شود، در صورتی که برای روش‌های زیر ویژگی «from» مشخص نشده باشد:

  • web3.eth.sendTransaction()
  • web3.eth.call()
  • new web3.eth.Contract() -> myContract.methods.myMethod().call()
  • new web3.eth.Contract() -> myContract.methods.myMethod().send()

Property

String – 20 Bytes: هرگونه آدرس اتریوم. شما باید کلید خصوصی مربوط به آن آدرس را در نود یا keystore کلید خود داشته باشید. (به صورت پیشقرض undefined)

مثال

web3.eth.defaultAccount;
> undefined

// set the default account
web3.eth.defaultAccount = '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe';

defaultBlock

web3.eth.defaultBlock

بلوک پیش فرض برای روش های خاصی استفاده می شود. شما می توانید با عبور از بلوک پیش فرض به عنوان آخرین پارامتر، آن را نادیده بگیرید. مقدار پیش فرض “latest” است.

  • web3.eth.getBalance()
  • web3.eth.getCode()
  • web3.eth.getTransactionCount()
  • web3.eth.getStorageAt()
  • web3.eth.call()
  • new web3.eth.Contract() -> myContract.methods.myMethod().call()

Property

پارامترهای بلوک پیش فرض می توانند یکی از موارد زیر باشند:

  • Number|BN|BigNumber
    : شماره بلوک
  • “earliest”
    String
    : بلوک اصلی
  • “latest”
    String
    : آخرین بلوک
  • “pending”
    String
    : بلوک استخراج شده فعلی (شامل تراکنش های در حال انجام)

بصورت پیشفرض “latest”

مثال

web3.eth.defaultBlock;
> "latest"

// set the default block
web3.eth.defaultBlock = 231;

defaultHardfork

web3.eth.defaultHardfork

ویژگی پیش فرض هاردفورک برای امضای محلی تراکنش ها استفاده می شود.

Property

ویژگی هاردفورک پیش فرض می تواند یکی از موارد زیر باشد:

  • “chainstart”
    String
  • “homestead”
    String
  • “dao”
    String
  • “tangerineWhistle”
    String
  • “spuriousDragon”
    String
  • “byzantium”
    String
  • “constantinople”
    String
  • “petersburg”
    String
  • “istanbul”
    String

به صورت پیشفرض "petersburg"

مثال

web3.eth.defaultHardfork;
> "petersburg"

// set the default block
web3.eth.defaultHardfork = 'istanbul';