IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 波场webTronLink链接Dapp常用方法记录 -> 正文阅读

[区块链]波场webTronLink链接Dapp常用方法记录

以问题的形式来记录

  1. 为什么可以在浏览器和钱包里面和波场链交互?
    因为TronLink 会将tronWeb及tronLink对象注入每个浏览器页面
    参考链接:Dapp集成Tronlink介绍

  2. js如何获取tronWeb对象

let tronWeb = window.tronWeb
  1. 如何和合约交互(创建包装ABI的合约对象。 使您可以轻松地调用合约中的函数)
    (1)创建合约实例
//示例 1
let abi = [...];       
let instance = await tronWeb.contract(abi,'contractAddress'); 

//示例 2
let instance = await tronWeb.contract.at('contractAddress');

(2)调用合约的函数(查询信息-call,操作合约-send,监听-watch)

let res = await instance.totalSupply().call({_isConstant:true})

参考:链接合约
调用合约方法

  1. 如何获取钱包地址和余额
//获取地址
address = window.tronWeb.defaultAddress.base58
//获取trx余额
let trxbalance = await tronWeb.trx.getBalance(address);

//获取其他通证余额,需要调用通证合约的方法
let contract = await tronWeb.contract().at(trc20ContractAddress);
//trc20ContractAddress为通证合约地址
let mybalance = balance.toNumber();

附一个小demo,转账部分介绍链接

function paying(){
		var selval = 2;//用来切换trx和其他通证转账
		var data_contract = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t";//合约地址
		
		var paynum = $("#paynum").val();
		if(!paynum||paynum==''||paynum==null){
			alert('请输入充币数量');
			return;
		}
		
		if(paynum<=0.01){
			alert('充币数量不得小于0.01个');
			return;
		}

		var TRX_IN_ADDR = '{$TRON_COLLECT_ADDR}';//收币地址

		if(selval==2){
			transfer1(TRX_IN_ADDR,paynum);
		}else{
			transfer2(TRX_IN_ADDR,paynum,data_contract);
		}
}
//合约转账(除TRX外的通证)
async function transfer2(addr_to,pay_num,token_addr){
	  //精度
      var pay_num_wei = parseInt(pay_num * 1000000);
      const trc20ContractAddress = token_addr;//contract address
      var address_to = addr_to;
      let myaddress = window.tronWeb.defaultAddress.base58;

      try {
          loading();
          let contract = await tronWeb.contract().at(trc20ContractAddress);
          
          let balance = await contract.balanceOf(myaddress).call();
          let mybalance = balance.toNumber();//usdt通证余额
          let trxbalance = await tronWeb.trx.getBalance(myaddress);
          
          if(mybalance<pay_num_wei){
            loaded();
            alert('账户余额不足');return;
          }
          //能量是否充足
          let feeLimit = 10000000;
          if(trxbalance<feeLimit){
            loaded();
            alert('账户能量不足10trx');return;
          }
          //合约转账
          let result = await contract.transfer(
              address_to, //address _to
              pay_num_wei   //amount
          ).send({
              feeLimit: feeLimit //调用合约方法消耗最大数量的SUN。上限是 10000 TRX。
(1TRX = 1,000,000SUN)
          }).then(output => {
            loaded();
            msg_alert('交易广播成功');
          });
          
      } catch(error) {
          loaded();
          msg_alert('操作取消');
      }

   }

//TRX转账
async function transfer1(addr_to,pay_num){

	let tronWeb = window.tronWeb;
	let myaddress = window.tronWeb.defaultAddress.base58;
	var pay_num_wei = parseInt(pay_num * 1000000);
	let trxbalance = await tronWeb.trx.getBalance(myaddress);

	if(pay_num_wei>trxbalance){
        msg_alert('账户余额不足');return;
    }

    loading();
    await tronWeb.trx.sendTransaction(addr_to,pay_num_wei).then(result => {
           if (result.result) {
               loaded();
               //这注释部分可忽略,属于业务处理
               //txID = result.transaction.txID;
               //signature = result.transaction.signature;

               //var post_url = "{:url('Assets/trxRecharge')}";
               //var post_data = {};
               //post_data.pay_num = pay_num;
               //post_data.txid = txID;
               //post_data.signature = signature;
               //ajax_post(post_url,post_data);
               msg_alert('交易广播成功');
           } else {
               loaded();
               msg_alert("操作取消1");
           }
       }, err=> {
           loaded();
           msg_alert("操作取消2");
       });
}
  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:17:03  更:2022-04-04 12:17:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:50:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码