如何向合约中质押bnb

Posted weixin_38532278

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何向合约中质押bnb相关的知识,希望对你有一定的参考价值。

在普遍智能合约中,质押的币一般是代币,这个非常容易处理。偶尔也会有质押bnb的情况,这种是如何处理的呢,下面我给个例子。
function invest(address fromad,address irefer, uint256 amount) public payable
require(fromad==msg.sender);
require(msg.value>=amount);
//添加amount必须是1,2,5
//…
//
addrefer(fromad,irefer,amount.mul(15000).div(10));
addalluser(fromad);
addmyson(fromad,irefer);

	users storage user = Users[fromad];
    user.amountbnb=user.amountbnb.add(amount);
    require(user.amountbnb+amount<=20*decimals,"must less than 20BNB");
	user.deposits.push(Deposit(block.timestamp,amount,amount.mul(15000)));

比如,正常的质押代币,用ERC20直接调用转帐就可以了,但是,如果是转bnb,ERC20就失效了。
首先对函数做一下介绍。
1、函数要写成payable类型的。
2.msg.value,是用户在调用invest方法的时候,向合约发了多少个bnb.
这两个是必须的。那么前端如何拉起小狐狸钱包,调用呢,可以用以下方式:
  let params=[
  
    from: fromad,
    to: toad,
    gas: '0x9cc3e', // 30400
    gasPrice: '0x2540be400', // 10000000000000
    value: this.$web3.utils.toHex(val), // 2441406250
    data:
      '0x000000000000000000000000,
  ,
];

其中data前面为方法,后面是要调用方法的参数,转换成16进制,如果不够64位,补满64位
let res1=await ethereum
.request(
method: ‘eth_sendTransaction’,
params,
)
补充说明:
value是调用方法的时候,向合约中转入的bnb数量,也就是msg.value取得的值。
data是调用方法格式化出来的数据,只要把data补充上,就可以实现完美调用了。
第一次折腾,费了我好大的功夫,所以放这里,给大家分享。喜欢交流的朋友,加V:54516204,一起沟通交流。

智能合约实战 solidity 语法学习 10 [ BNB合约解读 ] 附代码

目录

1. ether官网搜索BNB

2.获取BNB合约源码

3. BNB合约源码解读

1. ether官网搜索BNB

https://etherscan.io/address/0xB8c77482e45F1F44dE1745F52C74426C631bDD52

2.获取BNB合约源码

以上是关于如何向合约中质押bnb的主要内容,如果未能解决你的问题,请参考以下文章

区块链项目实战 - 使用以太坊/智能合约solidity,全栈开发区块链借贷记账小应用,含完整源码

区块链学习笔记之以太坊

Python Flask如何开发以太坊智能合约

区块链 之 部署和调用以太坊智能合约

区块链开发编写调试第一个以太坊智能合约

北京大学肖臻老师《区块链技术与应用》公开课笔记:以太坊原理:智能合约