<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های abolfazl rastegar</title>
        <link>https://virgool.io/feed/@abolfazlrastegar1996</link>
        <description>من ابوالفضل رستگار هستم  هفت سال برنامه نویسی میکنم  با زبان های php,js  فریم ورک  laravel , vuejs و علاقمند به تکنولوزی بلاک چین</description>
        <language>fa</language>
        <pubDate>2026-06-10 13:13:41</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/118207/avatar/svqfu3.jpg?height=120&amp;width=120</url>
            <title>abolfazl rastegar</title>
            <link>https://virgool.io/@abolfazlrastegar1996</link>
        </image>

                    <item>
                <title>کار با کتابخانه tronweb برای تعامل با بلاک‌چین ترون</title>
                <link>https://virgool.io/@abolfazlrastegar1996/tronwb-yx9gwbxmt6jm</link>
                <description>Tronwebدر دنیای وب‌۳ (Web3) و بلاک‌چین، ترون (Tron) یکی از پلتفرم‌های محبوب و قدرتمند برای توسعه اپلیکیشن‌های غیرمتمرکز (DApps) و انجام تراکنش‌های دیجیتال است. برای ارتباط با این بلاک‌چین از کتابخانه‌ای به‌نام TronWeb استفاده می‌شود.در این مطلب با TronWeb آشنا می‌شویم، نحوه نصب آن را بررسی می‌کنیم و برخی از قابلیت‌های مهم آن را مرور خواهیم کرد. اگر توسعه‌دهنده‌ی جاوااسکریپت هستید یا به دنیای بلاک‌چین علاقه دارید، این راهنما می‌تواند نقطه شروع خوبی باشد.                                                                                         چیست ؟ Tronترون یک پلتفرم بلاک‌چین با عملکرد بالا و کارمزد کم است که از توکن بومی TRX استفاده می‌کند. این شبکه امکان توسعه قراردادهای هوشمند و برنامه‌های غیرمتمرکز را فراهم کرده و از زبان Solidity نیز پشتیبانی می‌کند.برای اطلاعات بیشتر می‌توانید به سایت رسمی ترون مراجعه کنید:🔗 https://tron.networkTronWeb چیست؟TronWeb یک کتابخانه جاوااسکریپت است که برای تعامل با بلاک‌چین ترون طراحی شده. اگر قبلاً با Web3.js یا Ethers.js در اتریوم کار کرده‌اید، با TronWeb نیز به‌راحتی کنار خواهید آمد. این کتابخانه شامل چهار بخش اصلی است:transactionBuilder: ساخت و آماده‌سازی تراکنش‌هاtrx: ارسال درخواست‌ها و دریافت اطلاعات از نودهاتعامل با قراردادهای هوشمندابزارهای کمکی برای مدیریت آدرس‌ها و تبدیل‌هااگر درباره Web3 نمیدانید میتوانید به مقالعه های زیر مراجعه کنیدمقاله حسین بیگیمقاله صالح راهپیماکتابخانه Tronweb همانند Web3js است، با این تفاوت که از 4 بخش تشکیل شده است:برای ایجاد تراکنش ها transactionBuilderبخش trx؛ برای درخواست به نودهای بلاک‌چین ترون تعامل با قرارداد هوشمند ترونتعامل با ابزار های مفید مانند web3.js , ethers.jsاستفاده از تکنولوژی بلاک‌چین ما را به سمت دنیای Web3 سوق میدهد.نصب کتابخانه tronwebدستور npmnpm install tronwebدستور yarnyarn add tronwebبرای استفاده از کتابخانه Tronweb باید یک نمونه (Object) از کلاس TronWeb بسازیم.  ابتدا کتابخانه Tronweb را فراخوانی میکنیمconst TronWeb = require(&#039;tronweb&#039;) از کلاس Tronweb یک نمونه میسازیمconst tronWeb = new TronWeb({
fullHost: &#039;https://api.trongrid.io&#039;,
headers: { &amp;quotTRON-PRO-API-KEY&amp;quot: &#039;your api key&#039; },
 privateKey: &#039;your private key&#039;
})کلاس tronweb  یک object  دریافت میکند که سه تا از key های مهم این object به صورت زیر است: fullHost:  آدرس کامل یک سرویس دهنده بلاک‌چین ترون Headers: برای مشخص کردن هدر های سرویس دهند  privateKey: کلید خصوصی یک کیف‌پول را دریافت کنید برخی از قابلیت های کتابخانه Tronweb1. Address2. createAccount()3. fromSun()4. isAddress()5. toSun() شیء Address:برای تبدیل آدرس کیف پول از Base58  به Hex و برعکس، از Address استفاده میکنیم که دو تابع به نام های ()toHex و ()fromHex دارد. تابع ()toHex: برای تبدیل یک رشته متنی یا یک عدد به فرمت Hex استفاده می‌شود. این تابع به شما این امکان را می‌دهد که مقادیر مختلفی را به فرمت Hex تبدیل کنید.مثال:tronWeb.address.toHex(&amp;quotTNPeeaaFB7K9cmo4uQpcU32zGK8G1NYqeL&amp;quot)خروجی Hex:418840E6C55B9ADA326D211D818C34A994AECED808تابع ()fromHex: برای تبدیل یک رشته‌ی متنی به آدرس کیف پول بلاک‌چین ترون (با فرمتBase58) مورد استفاده قرار میگیرد. که مقدار ورودی آن به فرمت هگزادسیمال (hexadecimal) است. tronWeb.address.fromHex(&amp;quot418840E6C55B9ADA326D211D818C34A994AECED808&amp;quot)خروجی Base58:TNPeeaaFB7K9cmo4uQpcU32zGK8G1NYqeLتابع ()createAccount: با فراخوانی تابع می توان در شبکه ترون یک حساب ایجاد کرد که دارای کلید خصوصی و آدرس کیف پول باشد. مثال:tronWeb.createAccount()خروجی یک Object هست:address: {
base58: &amp;quotTPbBpRXnt6ztse8XkCLiJstZyqQZvxW2sx&amp;quot,
hex: &amp;quot4195679F3AAF5211991781D49B30525DDDFE9A18DE&amp;quot
}
privateKey: 
   08089C24EC3BAEB34254DDF5297CF8FBB8E031496FF67B4EFACA738FF9EBD455
publicKey: 
04EE63599802B5D31A29C95CC7DF04F427E8F0A124BED9333F3A80404ACFC3127659C540D0162DEDB81AC5F74B2DEB4962656EFE112B252E54AC3BA1207CD1FB10__proto__: Objectتابع ()toSun: برای تبدیل یک مقدار Trx به Sun ( Sun کوچکترین واحد کوین trx است) از تابع ()toSun استفاده میکنیم مثال 1Sun = 0.000001Trxمثال:tronWeb.toSun(10)خروجی:10000000تابع ()fromSun: برای تبدیل یک مقدار Sun  به Trx از تابع ()fromSun استفاده میکنیم مثال  1trx = 1000000 sunمثال:tronWeb.fromSun(&amp;quot10000000&amp;quot)خروجی:10تابع ()isAddress:برای این که بررسی کنیم که آدرس وارد شده یک آدرس کیف پول معتبر می باشد از تابع ()isAddress استفاده میکنیم که خروجی تابع True  یا False است.مثال:tronWeb.isAddress(&amp;quotTHEGR4Aor5pCDVktbbbwgHAE6PQWRfejBf&amp;quot)خروجی:trueبرخی از تابع های tronweb.trx  1. getAccount()2. getBalance()3. getTransaction()4. sendTransaction()تابع ()getAccount: برای دریافت اطلاعات یک حساب (آدرس کیف پول) بر روی بلاک‌چین ترون به کار می‌رود. این تابع اطلاعاتی از یک حساب شامل آدرس، میزان موجودی (به واحد Sun) و دیگر اطلاعات مرتبط را به ما نمایش میدهد.مثال:tronWeb.trx.getAccount(&#039;TTSFjEG3Lu9WkHdp4JrWYhbGP6K1REqnGQ&#039;).then(result =&gt; console.log(result))خروجی یک Object هست:{
 address: &#039;41bf97a54f4b829c4e9253b26024b1829e1a3b1120&#039;, balance: 29887074430, frozen: [ { frozen_balance: 12000000, expire_time: 1577615814000 } ], create_time: 1575710031000, latest_opration_time: 1577356614000, latest_consume_free_time: 1577356614000, account_resource: { frozen_balance_for_energy: { frozen_balance: 12000000, expire_time: 1577588400000 }, latest_consume_time_for_energy: 1577342304000 }, owner_permission: { permission_name: &#039;owner&#039;, threshold: 1, keys: [ [Object] ] }, active_permission: [ { type: &#039;Active&#039;, id: 2, permission_name: &#039;active&#039;, threshold: 1, operations: &#039;7fff1fc0033e0100000000000000000000000000000000000000000000000000&#039;, keys: [Array] } ], assetV2: [ { key: &#039;1000001&#039;, value: 0 } ], free_asset_net_usageV2: [ { key: &#039;1000001&#039;, value: 0 } ] } تابع ()getBalance: برای دریافت موجودی (به واحد Sun) یک حساب بر روی بلاک‌چین ترون استفاده می‌شود. این تابع به ما اجازه می‌دهد تا بدون نیاز به دریافت تراکنش‌ها، موجودی فعلی یک حساب را بررسی کنیدمثال:tronWeb.trx.getBalance(&#039;TTSFjEG3Lu9WkHdp4JrWYhbGP6K1REqnGQ&#039;).then(result =&gt; console.log(result))خروجی:29887074430 تابع ()getTransaction: برای دریافت جزئیات یک تراکنش بر اساس شناسه تراکنش (transaction ID) استفاده می‌شود. این تابع اطلاعاتی مانند مبدا، مقصد، میزان انتقال و سایر جزئیات تراکنش را به ما نمایش میدهد.مثال:tronWeb.trx.getTransaction(0daa9f2507c4e79e39391ea165bb76ed018c4cd69d7da129edf9e95f0dae99e2).then(result =&gt; {console.log(result)});خروجی یک Object هست:{
ret: [ { contractRet: &#039;SUCCESS&#039; } ],
signature: [&#039;220307de6341f7b59ff9563f50db3ab23ae53df0548aacdc6b569b094463cddd81a0a1e3e06b19bf344f94e25e8e5625374e81232ce8fb404db447666562661600&#039;],
txID: &#039;0daa9f2507c4e79e39391ea165bb76ed018c4cd69d7da129edf9e95f0dae99e2&#039;,
raw_data: {
contract: [ [Object] ],
ref_block_bytes: &#039;cfbe&#039;,
ref_block_hash: &#039;071499db194adbc4&#039;,
expiration: 1551102345000,
fee_limit: 10000000,
timestamp: 1551102288525
},
raw_data_hex: &#039;0a02cfbe2208071499db194adbc440a8fe9da7922d5af001081f12eb010a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412b5010a1541880e4776dfcf38dfe00d399d31738abc773634e8121541eb8f23b15acbc0245a4dbbd820b9bde368b02d6122840149774683000000000000000000000000ce3747fa895a899209c10ef1b4a41141b51b8a48e7636a372dc6d1fa95122bc282de912888dace410099e5c28d9a86ec9421be5800000000000000000000000000000000000000000000000000000000005029840000000000000000000000000000000000000000000000000000000000989680708dc59aa7922d900180ade204&#039;
}تابع ()sendTransaction: برای ارسال تراکنش به بلاک‌چین ترون استفاده می‌شود. این تابع یک تراکنش را ارسال می‌کند و اطلاعات مربوط به تراکنش از جمله هش تراکنش (transaction hash) را باز می‌گرداند.مثال:tronWeb.trx.sendTransaction(TVDGpn4hCSzJ5nkHPLetk8KQBtwaTppnkr, 1000,’from_address_private’);خروجی یک Object هست:{
 result: true,
transaction:{ visible: false,
txID:&#039;f8f70731df59b4d7d8159df705f0f7289cd2a037187dda043e28c77287b12e11&#039;,
raw_data:{ contract: [Array],ref_block_bytes: &#039;b3e2&#039;,ref_block_hash: &#039;3778f8d30f91eb00&#039;,expiration: 1579075530000,
timestamp: 1579075470470 },
raw_data_hex:&#039;0a02b3e222083778f8d30f91eb004090daf1c1fa2d5a66080112620a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412310a15417946f66d0fc67924da0ac9936183ab3b07c81126121541d3136787e667d1e055d2cd5db4b5f6c88056304918e807708689eec1fa2d&#039;,
signature:[ &#039;d0839fd236016149da98ddd3dcd2f1dfcfd11aabee8a27ffae50b1323ed4ad6a259c2d48c983c7d0c786e373d2a90c48adc91f33b82be07efffaa7d57e4d3f6000&#039;
 ] } }برخی از تابع های tronweb.contracttronweb.contract()call()send()تابع ()tronweb.contract:اگر بخواهیم با یک قرارداد هوشمند در شبکه ترون تعامل داشته باشیم باید از آن با تابع ()tronweb.contract یک نمونه بسازیم که ورودی آن دو پارامتر است. اولین پارامتر abi (Application Binary Interface)، دومین پارامتر آدرس قرارداد هوشمند (Contract Address) است. مثال:let abi = [{inputs:[{internalType:string,name:initMessage,type:string}],stateMutability:nonpayable,type:constructor},{inputs:[],name:message,outputs:[{internalType:string,name:,type:string}],stateMutability:view,type:function},{inputs:[{internalType:string,name:newMessage,type:string}],name:update,outputs:[],stateMutability:nonpayable,type:function}]; 
 async function getContract(){ 
    let res = await tronWeb.contract(abi,416A2383E04DF36C74A7EA415E554147C3EE0AF4C7);     
    console.log(res);
 }
 getContract();تابع ()call: به ما این امکان را میدهد تا بتوانیم تابع های یک قرارداد هوشمند در بلاک‌چین ترون صدا بزنیم.استفاده از تابع ()call برای تراکنش ها هیچ هزینه‌ای به وجود نمی‌آورد و در شبکه بلاک‌چین انتشار نمی‌یابد.مثال:let abi = [...];
let contract = await tronWeb.contract(abi, &#039;USDT_ADDRESS&#039;); 
let result = await contract.balanceOf(&#039;ACCOUNT_ADDRESS&#039;).call();
console.log(result.toString(10));تابع ()send: به ما این امکان را میدهد که مانند تابع ()call به تابع های قردارداد هوشمند دسترسی داشته باشیم با این تفاوت که هزینه‌‌ای را برای تراکنش به وجود می‌آورد و در شبکه بلاک‌چین نیز انتشار می‌یابد.مثال:let abi = [...];
let contract = await tronWeb.contract(abi, &#039;TQQg4EL8o1BSeKJY4MJ8TB8XK7xufxFBvK&#039;); 
let txID = await contract.transfer(&#039;TWbcHNCYzqAGbrQteKnseKJdxfzBHyTfuh&#039;, 100).send();
let result = await tronWeb.trx.getTransaction(txID); یک مثال ساده از ارسال یک مقدار Trx از یک کیف پول به کیف پول دیگهconst TronWeb = require(&#039;tronweb&#039;)
const HttpProvider       = TronWeb.providers.HttpProvider;
const fullNode              = new HttpProvider(&amp;quothttps://api.trongrid.io&amp;quot)
const solidityNode       = new HttpProvider(&amp;quothttps://api.trongrid.io&amp;quot)
const eventServer        = new HttpProvider(&amp;quothttps://api.trongrid.io&amp;quot)
const privateKey          =  &amp;quotyour private key&amp;quot
const tronWeb              = new TronWeb(fullNode,solidityNode,eventServer,privateKey)
const from_wallet        = tronWeb.address.fromPrivateKey(&amp;quotyour private key&amp;quot)
const transaction         = await tronWeb.transactionBuilder.sendTrx(to_wallet, tronWeb.toSun(10), from_wallet)
const signedTransaction  = await tronWeb.trx.sign(transaction,  &amp;quotyour private key&amp;quot)
tronWeb.trx.sendRawTransaction(signedTransaction).then(receipt =&gt; {
console.log(receipt)
}با مطالعه این مقاله شما میتوانید به راحتی با بلاک‌چین ترون، برنامه های غیر متمرکز (Dapps) و قراردادهای هوشمند شبکه بلاک‌چین تعامل داشته باشید.منبع https://developers.tron.network/reference/tronweb-objecthttps://tronweb.network/docu/docs/quickstart/</description>
                <category>abolfazl rastegar</category>
                <author>abolfazl rastegar</author>
                <pubDate>Mon, 30 Oct 2023 18:00:54 +0330</pubDate>
            </item>
            </channel>
</rss>