---
# System prepended metadata

title: Bscscan api & Web3 筆記

---

[TOC]
# Bscscan api & Web3 筆記

## [Bscscan api](https://bscscan.com/apis)

### 1. 獲取熱錢包中的 Bnb(幣安幣) 數量
- Bscscan api/account/Get BNB Balance for a single Address
- https://api.bscscan.com/api?module=account&action=balance&address=0xD05Ebe8E7BB56450d34784996Db6D22909E035Af&tag=latest&apikey=apikey
    ```
    {
        "status": "1",
        "message": "OK",
        "result": "25335050000000000"
    }
    ```
    ![](https://i.imgur.com/ViLkcR9.png)
    
### 2. 獲取熱錢包中的 Cake(幣安幣) 數量
- Bscscan api/tokens/Get BEP20-Token Account Balance for TokenContractAddress
- https://api.bscscan.com/api?module=account&action=tokenbalance&contractaddress=0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82&address=0xD05Ebe8E7BB56450d34784996Db6D22909E035Af&tag=latest&apikey=YourApiKeyToken
    ```
    {
        "status": "1",
        "message": "OK",
        "result": "50000000000000"
    }
    ```
    
    
## [Web3](https://web3js.readthedocs.io/en/v1.3.4/)
Version: 1.3.3

### 1. 獲取熱錢包中的 Bnb(幣安幣) 數量

- [Bsc JSON-RPC Endpoint](https://docs.binance.org/smart-chain/developer/rpc.html)
![](https://i.imgur.com/GWSzeZ1.png)


```=javascript
import Web3 from "web3";
var web3 = new Web3('https://bsc-dataseed.binance.org/'); // 輸入 RPC 地址

// 取得 Bnb 餘額
const getBnbBalance = async () => {
    let bnbBalance = await web3.eth.getBalance('0xd05ebe8e7bb56450d34784996db6d22909e035af');
    console.log("bnbBalance: ", bnbBalance);
    bnbBalance = web3.utils.fromWei(bnbBalance, "ether");
    console.log("bnbBalance_convert: ", bnbBalance);
  };
```

log:
bnbBalance:  25335050000000000
bnbBalance_convert:  0.02533505

### 2. 獲取熱錢包中的 Cake(幣安幣) 數量

- [cake contract abi](https://bscscan.com/address/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82#code)
- 所謂的 abi 就是合約中提供了哪些方法

```=javascript
import Web3 from "web3";
import cake from "./../config/abi/cake.json";

var cakeContractAddress = '0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82'

// 調用 Cake 合約
const cakeContract = new web3.eth.Contract(cake, cakeContractAddress);
// 合約中的方法
console.log(cakeContract.methods);
```

log:
DELEGATION_TYPEHASH: ƒ ()
DELEGATION_TYPEHASH(): ƒ ()
DOMAIN_TYPEHASH: ƒ ()
DOMAIN_TYPEHASH(): ƒ ()
allowance: ƒ ()
allowance(address,address): ƒ ()
approve: ƒ ()
approve(address,uint256): ƒ ()
balanceOf: ƒ ()
balanceOf(address): ƒ ()
checkpoints: ƒ ()
checkpoints(address,uint32): ƒ ()
decimals: ƒ ()
decimals(): ƒ ()
decreaseAllowance: ƒ ()
decreaseAllowance(address,uint256): ƒ ()
delegate: ƒ ()
delegate(address): ƒ ()
delegateBySig: ƒ ()
delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32): ƒ ()
delegates: ƒ ()
delegates(address): ƒ ()
getCurrentVotes: ƒ ()
getCurrentVotes(address): ƒ ()
getPriorVotes: ƒ ()
getPriorVotes(address,uint256): ƒ ()
increaseAllowance: ƒ ()
increaseAllowance(address,uint256): ƒ ()
mint: ƒ ()
mint(address,uint256): ƒ ()
name: ƒ ()
name(): ƒ ()
nonces: ƒ ()
nonces(address): ƒ ()
numCheckpoints: ƒ ()
numCheckpoints(address): ƒ ()
owner: ƒ ()
owner(): ƒ ()
renounceOwnership: ƒ ()
renounceOwnership(): ƒ ()
symbol: ƒ ()
symbol(): ƒ ()
totalSupply: ƒ ()
totalSupply(): ƒ ()
transfer: ƒ ()
transfer(address,uint256): ƒ ()
transferFrom: ƒ ()
transferFrom(address,address,uint256): ƒ ()
transferOwnership: ƒ ()
transferOwnership(address): ƒ ()


















