比特派官网下载app苹果|erc20地址查询

作者: 比特派官网下载app苹果
2024-03-08 18:44:36

以太坊 / ERC-20浏览器 — Blockchair

以太坊 / ERC-20浏览器 — Blockchair

浏览器

区块链

Aptos

Arbitrum One

Avalanche

Base

Beacon Chain

比特币

比特币

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

第2层

Omni层

其他

价格

图表

节点浏览器

白皮書

广播交易

Testnet 浏览器

比特币现金

比特币现金

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

其他

价格

图表

节点浏览器

广播交易

BNB

BOB

Botanix

艾达币

达世币

达世币

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

其他

价格

图表

节点浏览器

广播交易

DigiByte

狗狗币

狗狗币

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

其他

价格

图表

节点浏览器

广播交易

电子现金

电子现金

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

其他

价格

图表

节点浏览器

广播交易

以太坊

以太坊

区块链

仪表盘

区块

叔块

交易

调用

内存池

交易

第2层

ERC-20

ERC-721 (NFT)

其他

价格

图表

广播交易

ENS Lookup

Ethereum Classic

Fantom

Gnosis Chain

闪电币

闪电币

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

其他

价格

图表

节点浏览器

广播交易

Handshake

KSM币

Linea

莱特币

莱特币

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

其他

价格

图表

节点浏览器

广播交易

门罗币

Moonbeam

opBNB

Optimism

Peercoin

波卡

Polygon

Polygon zkEVM

Rootstock

Sei EVM

Solana

恒星币

Telegram 开放网路

TRON

XRP Ledger

大零币

大零币

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

其他

价格

图表

节点浏览器

广播交易

稳定币

USDT

USDC

BUSD

Cross-chains explorers

Worldcoin

特色

数据

单一个API接口支持19个区块链

加入数以千计的加密公司、分析机构、学术机构的行列,他们正在使用 Blockchair 的 REST API 来获取数据并为他们的项目提供动力

数据库和全节点转储

将TSV文件放入您的数据库服务器即可开始您的分析。获取完整节点转储即可加快节点同步

图表

可视化区块链数据并比较跨区块链的趋势

ENS Lookup

Search Ethereum Name Service domain names

服务

匿名投资组合跟踪器

跟踪您的加密资产投资组合的表现 — 完全匿名

交易收据

为您或您的对手方获取PDF收据

Wallet statements

Get a report on your address holdings for any timeframe. Make your tax reporting and accounting less of a hassle.

Blockchair超棒

查找和比较超棒的区块链和加密产品和服务

新闻聚合器

了解60家最大的加密货币媒体的最新消息,11 种语言可用

Blockchair甜甜圈

捐赠超棒的非营利和开源项目,以帮助推广加密货币并减少纳税

比较区块链

按大小、手续费、每秒交易等来比较加密货币

更新监视器

跟踪即将到来的硬分叉和加密货币客户端的最新更新,例如 Bitcoin Core 和 Geth

广播交易

非公开地广播BTC、ETH、BCH、LTC、BSV、DOGE 和 GRS 的原始交易

减半倒计时

矿工、交易费和区块奖励

获取Blockchair拓展程序

Blockchair将17个区块链浏览器拓展到您的浏览器上

节点浏览器

了解节点可访问性、位置、共识等

CHIUSD

语言

CHI

语言

English

ENG

Español

SPA

Français

FRA

Italiano

ITA

Nederlands

DUT

Português

POR

Русский

RUS

中文

CHI

فارسی

PER

Вahasa Indonesia

IND

Türkçe

TUR

日本語

JPN

한국어

KOR

Deutsch

DEU

货币

USD

货币

Interface

日间模式

夜间模式

按系统偏好

Session

关闭3日广告

关闭JavaScript

本网站支持英语版,需要切换吗?

合作伙伴

伙伴关系

广告合作

开发人员使用

提交漏洞或请求

API说明

漏洞赏金计划

浏览器

特色

设置

其他

浏览器

以太坊

ERC-20浏览器

API

请求标识符

https://api.blockchair.com/ethereum/stats

复制请求标识符

在新标签页中打开标识符

文档

按 Ctrl 键在新标签页打开标识符

获得 7 个比特币

玩家和投注者在 1xBit.com 一起赢!

巨大的体育博彩

最佳赔率

快速付款

超过 40 种加密货币

轻松注册

多币种账户

特别持续的促销和奖金

7 比特币欢迎奖金

100% 投注保险

直播

使用促销代码 BLCHR1X 获得 125% 的首存红利!

准备好。 设置。打赌!

赞助商

Win 8.88 BTC

The best crypto casino with 3000+ slots, live casino games, and 300% deposit bonus. Get daily free spin up to 8.88 BTC

Welcome Bonus 300%

20% Rakeback

10% Cashback

Daily promo codes

Quick payments without restrictions

Huge sportsbook

Live streams

Simple and fast registration

Multi-currency account

Register now!

赞助商

Get $200 Daily

Hop in at Roobet and get 20% cashback for 7 Days.

Win your share of $100,000 with Roobet’s March Mayhem Giveaway. 4 - 31 March 2024.

Play the exclusive game Snoop’s Hot-Box or hop over to Roo's Lounge for Live games!

Deposits and withdrawals now available in USDT & XRP.

Lightning BTC deposits available.

Home to the top UFC Ambassadors!

Hop in on Roobet’s exclusive games, such as Crash, CoinFlip, and Mines.

4400+ games including slots, live casino, and more!

Hop In

赞助商

Claim 5 BTC

The Best Crypto Casino, up to 5BTC daily free bonus

Free tokens galore! 1000+ Games

1000%+ deposit bonus, withdraw anytime

Win big, withdraw fast

Spin & Claim Now

赞助商

200% Bonus

Join Drake at Stake - Provably Fair Casino & Sportsbook

Claim a 200% deposit bonus offer on signup!

Daily 100K Giveaways

Game shows, Slots, Live games & more

Proud sponsors of UFC, Alfa Romeo F1 team & Everton FC

Daily and Weekly Bonuses, Promos, Raffles and offers

Instant withdrawal options

Multiple Crypto options

Join Affiliate program

Unrivaled VIP Experience - dedicated manager

Your next big payout!

赞助商

赞助商

Advertise here

关闭广告

总代币

917,695

{{ Math.abs(change) }}%

24小时内新代币

468

{{ Math.abs(change) }}%

总交易

1,538,635,795

{{ Math.abs(change) }}%

24小时内新交易

1,168,087

{{ Math.abs(change) }}%

最近一个月内最常使用合约

代币名称

地址

交易计数

最新代币

代币名称

地址

创建于

创建区块ID

探索代币

{{ Number(totalRows).toLocaleString('en-US') }}

最近交易

交易哈希

创建于

代币名称

发送人

接收者

探索交易

{{ Number(totalRows).toLocaleString('en-US') }}

浏览器

Aptos

Arbitrum One

Avalanche

Base

Beacon Chain

比特币

比特币现金

BNB

BOB

Botanix

艾达币

达世币

DigiByte

狗狗币

电子现金

以太坊

Ethereum Classic

Fantom

Gnosis Chain

闪电币

USDT

USDC

BUSD

浏览器

Handshake

KSM币

Linea

莱特币

门罗币

Moonbeam

opBNB

Optimism

Peercoin

波卡

Polygon

Polygon zkEVM

Rootstock

Sei EVM

Solana

恒星币

Telegram 开放网路

TRON

XRP Ledger

大零币

数据

API

数据库转储

图表

ENS Lookup

服务

Blockchair新闻

Blockchair甜甜圈

Blockchair超棒

产品

交易收据

Wallet statements

投资组合跟踪

广播交易

隐私计量表

节点浏览器

更新监视器

减半倒计时

区块链对比

获取Blockchair拓展程序

更多信息

关于 Blockchair

常见问题

更新日志

加入我们

服务条款

隐私政策

Blockchair 洋葱v3链接

合作伙伴

伙伴关系

广告合作

Brand kit

开发人员使用

提交漏洞或请求

漏洞赏金计划

API说明

状态

社交平台

Twitter

Telegram

GitHub

LinkedIn

语言

English

Español

Français

Italiano

Nederlands

Português

Русский

中文

فارسی

Вahasa Indonesia

Türkçe

日本語

한국어

Deutsch

关于 Blockchair

常见问题

更新日志

加入我们

服务条款

© 2024 Blockchair

2.0.2-471-gc1825b068

[72]

Thu 29 Feb 2024 13:20:25 GMT –

泰达币USDT|U币|ERC20|TRC20浏览器官网查询-Tokenview

泰达币USDT|U币|ERC20|TRC20浏览器官网查询-Tokenview

返回

 APIs

关于我们 教程 中文 登录

Tether 浏览器

首页铸造/销毁巨鲸追踪冻结地址富豪榜OMNI 图表

Tether 浏览器

搜索 如何在Tron上查找列入黑名单的USDT地址 - 赶快围观 Tokenview APIs 上线 Web3 开发者 APIs 大合集 - 点击获取

USDT

Multiple

总发行量(USDT)

-

总流通量(USDT)

-

市值(USD)

-

24h交易量(USDT)

-

近30天铸造量(USDT)

-

近30天销毁量(USDT)

- 每日交易笔数 活跃地址数 巨鲸追踪 最新铸造/销毁 展开 更多区块链浏览器 BTCETHETCLTCXDAI 查看更多 相关推荐 钱包 市场 硬件钱包 其它 捐款 Ethereum: 0xb874b976ce9a3874f21a5edd044cd049d11e0506 Bitcoin: 12YHXHbhSBY7D32hz4iFgSohxcWNEvWqKF 区块链浏览器

比特币浏览器

以太坊浏览器

泰达币浏览器

KCC浏览器

波场浏览器

BSC浏览器

查看更多 开发者 区块链APIs 地址监控 NFT APIs NFT 订阅 稳定币APIs 节点服务 了解 做广告 教程 关于我们 服务条款 隐私政策 提交反馈 语言 English 中文 版权所有 © 2024 Tokenview.io 保留所有权利。

Ethereum Explorer — Blockchair

Ethereum Explorer — Blockchair

Explorers

Blockchains

Aptos

Arbitrum One

Avalanche

Base

Beacon Chain

Bitcoin

Bitcoin

Blockchain

Dashboard

Blocks

Transactions

Outputs

Addresses

Mempool

Transactions

Outputs

Layer 2

Omni Layer

Misc

Price

Charts

Node explorer

Whitepaper

Broadcast transaction

Testnet explorer

Bitcoin Cash

Bitcoin Cash

Blockchain

Dashboard

Blocks

Transactions

Outputs

Addresses

Mempool

Transactions

Outputs

Misc

Price

Charts

Node explorer

Broadcast transaction

BNB

BOB

Botanix

Cardano

Dash

Dash

Blockchain

Dashboard

Blocks

Transactions

Outputs

Addresses

Mempool

Transactions

Outputs

Misc

Price

Charts

Node explorer

Broadcast transaction

DigiByte

Dogecoin

Dogecoin

Blockchain

Dashboard

Blocks

Transactions

Outputs

Addresses

Mempool

Transactions

Outputs

Misc

Price

Charts

Node explorer

Broadcast transaction

eCash

eCash

Blockchain

Dashboard

Blocks

Transactions

Outputs

Addresses

Mempool

Transactions

Outputs

Misc

Price

Charts

Node explorer

Broadcast transaction

Ethereum

Ethereum

Blockchain

Dashboard

Blocks

Uncles

Transactions

Calls

Mempool

Transactions

Layer 2

ERC-20

ERC-721 (NFT)

Misc

Price

Charts

Broadcast transaction

ENS Lookup

Ethereum Classic

Fantom

Gnosis Chain

Groestlcoin

Groestlcoin

Blockchain

Dashboard

Blocks

Transactions

Outputs

Addresses

Mempool

Transactions

Outputs

Misc

Price

Charts

Node explorer

Broadcast transaction

Handshake

Kusama

Linea

Litecoin

Litecoin

Blockchain

Dashboard

Blocks

Transactions

Outputs

Addresses

Mempool

Transactions

Outputs

Misc

Price

Charts

Node explorer

Broadcast transaction

Monero

Moonbeam

opBNB

Optimism

Peercoin

Polkadot

Polygon

Polygon zkEVM

Rootstock

Sei EVM

Solana

Stellar

The Open Network

TRON

XRP Ledger

Zcash

Zcash

Blockchain

Dashboard

Blocks

Transactions

Outputs

Addresses

Mempool

Transactions

Outputs

Misc

Price

Charts

Node explorer

Broadcast transaction

Stablecoins

Tether USD

USD Coin

Binance USD

Cross-chains explorers

Worldcoin

Features

Data

1 API for 14 Blockchains

Join thousands of crypto companies, analysts, academics, and students which utilize Blockchair’s REST API to fetch data and power their projects

Datasets

Insert TSV-files into your database server and run your analysis

Charts

Visualize blockchain data and compare trends across blockchains

ENS Lookup

Search Ethereum Name Service domain names

Services

Anonymous portfolio tracker

Track the performance of your crypto assets portfolio — completely anonymously

Transaction receipts

Get a PDF receipt for either you or your counterpart`s purposes

Wallet statements

Get a report on your address holdings for any timeframe. Make your tax reporting and accounting less of a hassle.

Blockchair Awesome

Find and compare awesome blockchain and crypto products and services

News Aggregator

Catch up with the latest news from 60 biggest crypto outlets. Available in 11 languages

Blockchair Donut

Donate to amazing nonprofits and open-source projects. Help crypto adoption and reduce tax payments

Compare blockchains

Compare crypto by size, fees, transactions per second, and more

Release monitor

Track upcoming hard forks and latest updates to cryptocurrency clients, like Bitcoin Core and Geth

Broadcast transaction

Broadcast raw transactions for BTC, ETH, BCH, LTC, BSV, DOGE and GRS privately

Halving countdown

Miners, transaction fees and the block reward

Get Blockchair extension

Blockchair brings the search engine for 40 blockchains to your browser

Node explorer

Learn about node accessibility, locations, consensus and more

ENGUSD

Language

ENG

Language

English

ENG

Español

SPA

Français

FRA

Italiano

ITA

Nederlands

DUT

Português

POR

Русский

RUS

中文

CHI

فارسی

PER

Вahasa Indonesia

IND

Türkçe

TUR

日本語

JPN

한국어

KOR

Deutsch

DEU

Currency

USD

Currency

Interface

Day Mode

Night Mode

System Preferred

Session

Turn off ads for 3 days

Turn off JavaScript

This site is available in English, switch the language?

No

For partners

Partnerships

Advertise with us

For developers

Submit a bug or request

API documentation

Bug bounty program

Explorers

Features

Settings

Other

Get 7 BTC

Players and bettors win together on 1xBit.com!

huge sportsbook

best odds

fast payouts

40+ cryptocurrencies

easy registration

multi-currency account

special constant promotions & bonuses

7 BTC welcome bonus

100% bet insurance

live streams

Use the promo code BLCHR1X and get a 125% first deposit bonus!

Ready. Set. Bet!

Sponsored

Win 8.88 BTC

The best crypto casino with 3000+ slots, live casino games, and 300% deposit bonus. Get daily free spin up to 8.88 BTC

Welcome Bonus 300%

20% Rakeback

10% Cashback

Daily promo codes

Quick payments without restrictions

Huge sportsbook

Live streams

Simple and fast registration

Multi-currency account

Register now!

Sponsored

Get $200 Daily

Hop in at Roobet and get 20% cashback for 7 Days.

Win your share of $100,000 with Roobet’s March Mayhem Giveaway. 4 - 31 March 2024.

Play the exclusive game Snoop’s Hot-Box or hop over to Roo's Lounge for Live games!

Deposits and withdrawals now available in USDT & XRP.

Lightning BTC deposits available.

Home to the top UFC Ambassadors!

Hop in on Roobet’s exclusive games, such as Crash, CoinFlip, and Mines.

4400+ games including slots, live casino, and more!

Hop In

Sponsored

Claim 5 BTC

The Best Crypto Casino, up to 5BTC daily free bonus

Free tokens galore! 1000+ Games

1000%+ deposit bonus, withdraw anytime

Win big, withdraw fast

Spin & Claim Now

Sponsored

200% Bonus

Join Drake at Stake - Provably Fair Casino & Sportsbook

Claim a 200% deposit bonus offer on signup!

Daily 100K Giveaways

Game shows, Slots, Live games & more

Proud sponsors of UFC, Alfa Romeo F1 team & Everton FC

Daily and Weekly Bonuses, Promos, Raffles and offers

Instant withdrawal options

Multiple Crypto options

Join Affiliate program

Unrivaled VIP Experience - dedicated manager

Your next big payout!

Sponsored

Sponsored

Advertise here

Turn off ads

Explorers

Ethereum

API

Request URI

https://api.blockchair.com/ethereum/stats

Copy request URI

Open URI in new tab

Press Ctrl key to open the URI in a new tab

3,952.03

USD

4.41%

{{ Math.abs(change) }}%

67 Gwei

recommended gas price

Circulation

122,375,302

ETH

{{ Math.abs(change) }}%

Market cap

474.701 billion

USD

{{ Math.abs(change) }}%

Dominance

17.60

%

{{ Math.abs(change) }}%

Blocks

19,390,730

{{ Math.abs(change) }}%

Uncles

1,306,731

{{ Math.abs(change) }}%

Transactions

2,287,448,345

{{ Math.abs(change) }}%

Calls

8,857,703,878

{{ Math.abs(change) }}%

All time

Latest block

19,389,931

{{ Math.abs(change) }}%

11 seconds ago

{{ Math.abs(change) }}%

Blockchain size

967

GB

{{ Math.abs(change) }}%

Difficulty

0

{{ Math.abs(change) }}%

Burned

4,133,193.79

ETH

{{ Math.abs(change) }}%

Mempool

Transactions

5,161

{{ Math.abs(change) }}%

Transactions per second

5

{{ Math.abs(change) }}%

Value of pending transfers

1,787.41

ETH

{{ Math.abs(change) }}%

24h statistics

Transactions

1,225,879

{{ Math.abs(change) }}%

Blocks

7,153

{{ Math.abs(change) }}%

Transactions per second

14.19

{{ Math.abs(change) }}%

Avg. time between blocks

12.08

sec

{{ Math.abs(change) }}%

Median transaction fee

10.57

USD

{{ Math.abs(change) }}%

Volume

3,553,638

ETH

{{ Math.abs(change) }}%

Average transaction fee

24.14

USD

{{ Math.abs(change) }}%

Hashrate

(Ethash)

{{ Math.abs(change) }}%

Average simple transfer fee

5.73

USD

{{ Math.abs(change) }}%

Uncles

0

{{ Math.abs(change) }}%

Median simple transfer fee

5.06

USD

{{ Math.abs(change) }}%

Burned 24h

6,868.37

ETH

{{ Math.abs(change) }}%

Gas price tracker

Slow

65 Gwei

10% of the transactions confirmed in the last 10 min had the gas price 65 Gwei or lower

Normal

67 Gwei

25% of the transactions confirmed in the last 10 min had the gas price 67 Gwei or lower

Fast

69 Gwei

50% of the transactions confirmed in the last 10 min had the gas price 69 Gwei or lower

Uber

81 Gwei

95% of the transactions confirmed in the last 10 min had the gas price 81 Gwei or lower

ERC-20 tokens statistics

ERC-20 explorer

Explore ERC-20 tokens→

Tokens

917,695

{{ Math.abs(change) }}%

Transactions

1,538,635,795

{{ Math.abs(change) }}%

New tokens 24h

468

{{ Math.abs(change) }}%

New transactions 24h

1,168,087

{{ Math.abs(change) }}%

ERC-721 (NFT) tokens statistics

ERC-721 (NFT) explorer

Explore ERC-721 tokens (NFT)→

Tokens

233,177

{{ Math.abs(change) }}%

Transactions

238,116,147

{{ Math.abs(change) }}%

New tokens 24h

15

{{ Math.abs(change) }}%

New transactions 24h

49,738

{{ Math.abs(change) }}%

Price

Current ETH emission

Last 24h

-4.77 ETH/min

Awesome Ethereum services

Exchanges

Wallets

Crypto processors

Tax calculators

Market data

Savings accounts

Mining pools

Swap exchanges

Faucets

Entertainment

Get on this list

Daily Datasets for Ethereum

Explore Datasets

1 API for 14 Blockchains

Rest API with a high uptime, SQL-like queries, and packages for all

Discover API

BC.GAME - the best crypto casino. Up to 5 BTC daily bonus, 760% deposit bonus. Play now.

Sponsored

Advertise here

Turn off ads

Circulation

Median transaction fee

All Ethereum charts

Latest blocks

Height

Hash

Mined on

Total amount

(ETH)

Total amount

(USD)

Explore blocks

{{ Number(totalRows).toLocaleString('en-US') }}

The biggest transactions

Over the last 24 hours

Hash

Internal value

(ETH)

Internal value

(USD)

Time

Explore transactions

{{ Number(totalRows).toLocaleString('en-US') }}

Markets and Portfolio

Track the performance of your crypto assets portfolio — completely anonymously

Broadcast transaction

Broadcast raw transactions for BTC, ETH, BCH, LTC, BSV, DOGE and GRS privately

Compare blockchains

Compare crypto by size, fees, transactions per second, and more

Transaction receipts

Get a PDF receipt for either you or your counterpart`s purposes

ENS Lookup

Search Ethereum Name Service domain names

Useful links

Partners that already use Blockchair on their websites

Exchanges

365Stream

BitGlobal

Bitexen

BtcBit

Catex

ChangeAngel

Changee

CoinChange

CoinCraddle

Coinmate.io

Coinmerce

Crybex

CryptoChanger

Deribit

Easy Crypto

EasyBit

Eezy.cash

Excoino

Exmo

Exolix

FixedFloat

Good Crypto

Hamtapay Exchange

LetsExchange

LiteBit

MINE.exchange

Netcoins

Ok-ex

PagCripto

Paybis

Savl

SimpleFX

SimpleSwap

SouthXchange

StealthEX

SwapSpace

SwapSwop

Swapzone

Swapzone

Switchere

Timex

WOO X

WOOFi

WhiteBIT

eXch

eXeX cash

Wallets

BitKan Wallet

BitKeep

Bitpie

Coin Wallet

Coin.space

CoolWallet App

Greenery

Incognito Wallet

Lumi Wallet

Math Wallet

Payperless

Token Pocket

Unstoppable Wallet

Zumo

monedero

Crypto processors

CoinGate

CoinRemitter

CryptoCloud

CryptoWoo

Mercuryo

NowPayments

Plisio

Poof

Trastra

Tax calculators

CoinLedger

CoinTracker

Crypto.com Tax

CryptoTaxCalculator

Koinly

Syla

Market data

BitKan

CoinCarp

CoinCodex

CoinGecko

CoinMarketCap

CoinStats

Coinpaprika

Crypto.com Price

CryptoCompare

DropsTab

GeckoTerminal

LiveCoinWatch

Oraclus

Savings accounts

CoinRabbit

Crypto.com Earn

Youhodler.com

Mining pools

ViaPool

kryptex.org

Swap exchanges

365 Cash

AlfaBit Exchange

Barry24.com

Bchange.cc

Bitokk.biz

Changer.BIZ

Coinstart

Crypcie

Dualcoin

Epichange

Exline.pro

Ferma

IN-TO

InstantExchangers

Laslobit.cc

Lemonchik.Cash

Monease

OneMoment

Platov

RamonCash

SWOP

SecureShift

Sova

SwapEx

Swappix

Hardware wallets

BITHD

Coldlar

CoolWallet

SecuX

Faucets

Faucet Crypto

FreeEthereum.com

Entertainment

1xBit.com

Clank

CryptoNotify

DuckDice

Thunderpick

Wolf.bet

Explorers

Aptos

Arbitrum One

Avalanche

Base

Beacon Chain

Bitcoin

Bitcoin Cash

BNB

BOB

Botanix

Cardano

Dash

DigiByte

Dogecoin

eCash

Ethereum

Ethereum Classic

Fantom

Gnosis Chain

Groestlcoin

Tether USD

USD Coin

Binance USD

Explorers

Handshake

Kusama

Linea

Litecoin

Monero

Moonbeam

opBNB

Optimism

Peercoin

Polkadot

Polygon

Polygon zkEVM

Rootstock

Sei EVM

Solana

Stellar

The Open Network

TRON

XRP Ledger

Zcash

Data

API

Datasets

Charts

ENS Lookup

New

Services

Blockchair News

Blockchair Donut

Blockchair Awesome

Products

Transaction receipts

Wallet statements

Portfolio tracker

Broadcast transaction

Privacy-o-meter

Node explorers

Release monitor

Halving countdown

Compare blockchains

Get Blockchair extension

Useful links

About Blockchair

FAQ

Changelog

Careers

Terms of service

Privacy policy

Blockchair Onion v3 URL

For partners

Partnerships

Advertise with us

Brand kit

For developers

Submit a bug or request

Bug bounty program

API documentation

Status

Social

Twitter

Telegram

GitHub

LinkedIn

Languages

English

Español

Français

Italiano

Nederlands

Português

Русский

中文

فارسی

Вahasa Indonesia

Türkçe

日本語

한국어

Deutsch

About Blockchair

FAQ

Changelog

Careers

Terms of service

© 2024 Blockchair

2.0.2-471-gc1825b068

[72]

Thu 29 Feb 2024 13:20:25 GMT –

TRONSCAN | TRON BlockChain Explorer | 波场区块链浏览器

SCAN | TRON BlockChain Explorer | 波场区块链浏览器You need to enable JavaScript to run this app now no

ERC-20 代币标准 | ethereum.org

20 代币标准 | ethereum.org跳转至主要内容学习用法构建参与研究搜索​​​​语言 ZH帮助更新此页面本页面有新版本,但现在只有英文版。请帮助我们翻译最新版本。翻译页面没有错误!此页面未翻译,因此特意以英文显示。不再显示Change page概述基础主题以太坊简介以太币简介去中心化应用程序简介Web2 与 Web3 的对比帐户交易区块以太坊虚拟机 (EVM)操作码Gas费用节点和客户端运行节点客户端多样性节点即服务节点架构轻客户端归档节点引导节点网络共识机制工作量证明矿工挖矿算法Dagger-HashimotoEthash权益证明Gasper弱主观性认证权益证明机制的奖励和惩罚权益证明攻击与防御密钥权益证明与工作量证明提出区块权益正明常见问题以太坊堆栈堆栈简介智能合约智能合约语言智能合约结构智能合约库测试用智能合约编译智能合约部署智能合约验证智能合约升级智能合约智能合约安全性智能合约形式化验证可组合性开发网络开发框架以太坊客户端APIJavaScript API后端APIJSON-RPC数据和分析区块浏览器存储集成开发环境 (IDE)编程语言DartDelphi.NETGolangJavaJavaScriptPythonRubyRust语言高级链桥标准令牌标准ERC-20:同质化代币ERC-721:非同质化代币 (NFT)ERC-777ERC-1155ERC-4626最大可提取价值 (MEV)预言机缩放乐观卷叠零知识卷叠状态通道侧链以太坊 Plasma 扩容解决方案Validium数据可用性网络层网络地址门户网络数据结构与编码默克尔前缀树递归长度前缀编码 (RLP)简单序列化 (SSZ)Web3 密钥存储定义设计基础设计和用户体验简介ERC-20 代币标准p上次修改时间: @penglaishan.cn(opens in a new tab), Invalid DateTime查看贡献者在本页面介绍前提条件正文方法事件示例延伸阅读介绍什么叫做代币?代币可以在以太坊中表示任何东西:在线平台中的信誉积分游戏中一个角色的技能彩票卷金融资产类似于公司股份的资产像美元一样的法定货币一盎司黄金及更多...以太坊的这种强大特点必须以强有力的标准来处理,对吗? 这正是 ERC-20 发挥其作用的地方! 此标准允许开发者构建可与其他产品和服务互相操作的代币应用程序。什么是 ERC-20?ERC-20 提出了一个同质化代币的标准,换句话说,它们具有一种属性,使得每个代币都与另一个代币(在类型和价值上)完全相同。 例如,一个 ERC-20 代币就像以太币一样,意味着一个代币会并永远会与其他代币一样。前提条件帐户智能合约代币标准正文ERC-20(以太坊意见征求 20)由 Fabian Vogelsteller 提出于 2015 年 11 月。这是一个能实现智能合约中代币的应用程序接口标准。ERC-20 的功能示例包括:将代币从一个帐户转到另一个帐户获取帐户的当前代币余额获取网络上可用代币的总供应量批准一个帐户中一定的代币金额由第三方帐户使用如果智能合约实施了下列方法和事件,它可以被称为 ERC-20 代币合约,一旦部署,将负责跟踪以太坊上创建的代币。来自 EIP-20(opens in a new tab):方法1function name() public view returns (string)2function symbol() public view returns (string)3function decimals() public view returns (uint8)4function totalSupply() public view returns (uint256)5function balanceOf(address _owner) public view returns (uint256 balance)6function transfer(address _to, uint256 _value) public returns (bool success)7function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)8function approve(address _spender, uint256 _value) public returns (bool success)9function allowance(address _owner, address _spender) public view returns (uint256 remaining)显示全部 复制事件1event Transfer(address indexed _from, address indexed _to, uint256 _value)2event Approval(address indexed _owner, address indexed _spender, uint256 _value) 复制示例让我们看看如此重要的一个标准是如何使我们能够简单地检查以太坊上的任何 ERC-20 代币合约。 我们只需要合约的应用程序二进制接口 (ABI) 来创造一个 ERC-20 代币界面。 下面我们将使用一个简化的应用程序二进制接口,让例子变得更为简单。Web3.py 示例首先,请确保您已安装 Web3.py(opens in a new tab) Python 库:1pip install web31from web3 import Web3234w3 = Web3(Web3.HTTPProvider("https://cloudflare-eth.com"))56dai_token_addr = "0x6B175474E89094C44Da98b954EedeAC495271d0F" # DAI7weth_token_addr = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" # Wrapped ether (WETH)89acc_address = "0xA478c2975Ab1Ea89e8196811F51A7B7Ade33eB11" # Uniswap V2: DAI 21011# This is a simplified Contract Application Binary Interface (ABI) of an ERC-20 Token Contract.12# It will expose only the methods: balanceOf(address), decimals(), symbol() and totalSupply()13simplified_abi = [14 {15 'inputs': [{'internalType': 'address', 'name': 'account', 'type': 'address'}],16 'name': 'balanceOf',17 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],18 'stateMutability': 'view', 'type': 'function', 'constant': True19 },20 {21 'inputs': [],22 'name': 'decimals',23 'outputs': [{'internalType': 'uint8', 'name': '', 'type': 'uint8'}],24 'stateMutability': 'view', 'type': 'function', 'constant': True25 },26 {27 'inputs': [],28 'name': 'symbol',29 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}],30 'stateMutability': 'view', 'type': 'function', 'constant': True31 },32 {33 'inputs': [],34 'name': 'totalSupply',35 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],36 'stateMutability': 'view', 'type': 'function', 'constant': True37 }38]3940dai_contract = w3.eth.contract(address=w3.to_checksum_address(dai_token_addr), abi=simplified_abi)41symbol = dai_contract.functions.symbol().call()42decimals = dai_contract.functions.decimals().call()43totalSupply = dai_contract.functions.totalSupply().call() / 10**decimals44addr_balance = dai_contract.functions.balanceOf(acc_address).call() / 10**decimals4546# DAI47print("===== %s =====" % symbol)48print("Total Supply:", totalSupply)49print("Addr Balance:", addr_balance)5051weth_contract = w3.eth.contract(address=w3.to_checksum_address(weth_token_addr), abi=simplified_abi)52symbol = weth_contract.functions.symbol().call()53decimals = weth_contract.functions.decimals().call()54totalSupply = weth_contract.functions.totalSupply().call() / 10**decimals55addr_balance = weth_contract.functions.balanceOf(acc_address).call() / 10**decimals5657# WETH58print("===== %s =====" % symbol)59print("Total Supply:", totalSupply)60print("Addr Balance:", addr_balance)显示全部 复制延伸阅读EIP-20:ERC-20 代币标准(opens in a new tab)OpenZeppelin - 代币(opens in a new tab)OpenZeppelin - ERC-20 实施(opens in a new tab)back-to-top ↑本文对你有帮助吗?是否前一页令牌标准下一页ERC-721:非同质化代币 (NFT)编辑页面(opens in a new tab)在本页面介绍前提条件正文方法事件示例延伸阅读网站最后更新: 2024年2月16日(opens in a new tab)(opens in a new tab)(opens in a new tab)使用以太坊查找钱包获取以太币Dapps - 去中心化应用二层网络运行节点稳定币质押ETH学习学习中心什么是以太坊?什么是以太币 (ETH)?以太坊钱包Gas fees以太坊安全和预防欺诈措施什么是 Web3?智能合约以太坊能源消耗以太坊路线图以太坊改进提案 (Eip)以太坊的历史以太坊白皮书以太坊词汇表以太坊治理区块链桥零知识证明测试中心开发者开始体验相关文档教程通过编码来学习设置本地环境生态系统社区中心以太坊基金会以太坊基金会的博客(opens in a new tab)生态系统支持方案(opens in a new tab)以太坊漏洞悬赏计划生态系统资助计划以太坊品牌资产Devcon(opens in a new tab)企业级应用主网以太坊私密以太坊企业级应用关于ethereum.org关于我们工作机会参与贡献语言支持隐私政策使用条款缓存政策联系我们(opens in a new t

区块浏览器 | ethereum.org

器 | ethereum.org跳转至主要内容学习用法构建参与研究搜索​​​​语言 ZH帮助更新此页面本页面有新版本,但现在只有英文版。请帮助我们翻译最新版本。翻译页面没有错误!此页面未翻译,因此特意以英文显示。不再显示Change page概述基础主题以太坊简介以太币简介去中心化应用程序简介Web2 与 Web3 的对比帐户交易区块以太坊虚拟机 (EVM)操作码Gas费用节点和客户端运行节点客户端多样性节点即服务节点架构轻客户端归档节点引导节点网络共识机制工作量证明矿工挖矿算法Dagger-HashimotoEthash权益证明Gasper弱主观性认证权益证明机制的奖励和惩罚权益证明攻击与防御密钥权益证明与工作量证明提出区块权益正明常见问题以太坊堆栈堆栈简介智能合约智能合约语言智能合约结构智能合约库测试用智能合约编译智能合约部署智能合约验证智能合约升级智能合约智能合约安全性智能合约形式化验证可组合性开发网络开发框架以太坊客户端APIJavaScript API后端APIJSON-RPC数据和分析区块浏览器存储集成开发环境 (IDE)编程语言DartDelphi.NETGolangJavaJavaScriptPythonRubyRust语言高级链桥标准令牌标准ERC-20:同质化代币ERC-721:非同质化代币 (NFT)ERC-777ERC-1155ERC-4626最大可提取价值 (MEV)预言机缩放乐观卷叠零知识卷叠状态通道侧链以太坊 Plasma 扩容解决方案Validium数据可用性网络层网络地址门户网络数据结构与编码默克尔前缀树递归长度前缀编码 (RLP)简单序列化 (SSZ)Web3 密钥存储定义设计基础设计和用户体验简介区块浏览器a上次修改时间: @a8832021(opens in a new tab), Invalid DateTime查看贡献者在本页面前提条件服务数据执行数据燃料交易帐户代币网络共识层数据时段时隙区块验证者认证网络区块浏览器延伸阅读相关主题区块浏览器是你进入以太坊数据世界的大门。 你可以通过区块浏览器来查看实时的区块、交易、矿工、帐户以及其他的链上相关活动。前提条件你应该理解以太坊的基本概念,以便你能够理解区块浏览器向你展示的数据。 开始介绍以太坊。服务Etherscan(opens in a new tab) - 还支持中文、韩语、俄语和日语Beaconcha.in(opens in a new tab)Blockchair(opens in a new tab) - 还支持西班牙语、法语、意大利语、荷兰语、葡萄牙语、俄语、中文和波斯语Blockscout(opens in a new tab)Etherchain(opens in a new tab)Ethplorer(opens in a new tab) - 还支持中文、西班牙语、法语、土耳其语、俄语、韩语和越南语OKLink(opens in a new tab)Otterscan(opens in a new tab)Rantom(opens in a new tab)Sirato(opens in a new tab)EthVM(opens in a new tab)DexGuru 区块浏览器(opens in a new tab)数据以太坊从设计上是透明的,所有信息都可以验证。 区块浏览器为获取这些信息提供了一个界面。 这适用于以太坊的主网络和测试网,如果你需要这些数据的话。 数据被分为执行数据和共识数据。 执行数据指已在一个特定区块内执行的交易。 共识数据指区块本身以及提出它们的验证者们。以下是你可以从区块浏览器获得的数据类型概要。执行数据每隔 12 秒就会有新的区块被添加到以太坊(除非区块提议者错过了提议机会),因此有几近稳定的数据流被添加到区块浏览器中。 区块里面包含着许多你可能会觉得有用的重要数据:标准数据区块高度 – 区块编号以及创建当前区块时的区块链长度(以区块为单位)时间戳 - 区块提议的时间交易 – 区块中包含的交易数量交易费接收人 - 从交易中获取燃料费小费的地址区块奖励 - 奖励给提议该区块的验证者的以太币数额大小 - 区块内的数据大小(以字节为单位)消耗的燃料 – 区块中的交易消耗的燃料单位总数燃料限制 – 区块中的交易设置的总燃料限制燃料基础费 - 要将交易纳入区块所需的最小倍数燃烧的费用 - 在区块内被燃烧的以太币数量其它数据 – 任何由矿工加入区块的额外数据高级数据哈希 - 表示区块头的加密哈希(区块的唯一标识符)父哈希 - 当前区块的前一个区块的哈希状态根 – 存储整个系统状态的默克尔前缀树的根哈希。燃料区块浏览器不仅会为你提供有关交易和区块中的燃料使用量的数据,还会为你提供有关网络当前燃料价格的信息。 这将帮助你了解网络使用情况,提交安全的交易和避免燃料超支。 寻找可以帮助你将这些信息获取到你自己的产品界面的应用程序接口。 燃料特定的数据涵盖:安全但缓慢的交易所需的估计燃料单位数(以及估计的价格和持续时间)一般交易所需的估计燃料单位数(以及估计的价格和持续时间)快速交易所需的估计燃料单位数(以及估计的价格和持续时间)基于燃料价格的平均确认时间正在消耗燃料的合约 – 换句话说,正在网络上大量使用的流行产品正在消费燃料的帐户 – 换句话说,频繁使用网络的用户交易区块浏览器已成为人们跟踪交易进度的常用位置, 这是因为你可以获得的详细程度提供了额外的确定性。 交易数据包含:标准数据交易哈希 – 交易被提交时生成的哈希状态 – 指示交易是待处理、失败还是成功区块 – 包含该交易的区块时间戳 – 矿工开采交易的时间发送者 – 提交交易的帐户的地址接收者 – 与交易交互的接收者或智能合约的地址转移的代币 – 作为交易的一部分被转移的代币列表价值 – 被转移的全部以太币价值交易费用 – 支付给矿工处理交易的金额(根据燃料价格*使用的燃料计算)高级数据燃料限制 – 此交易可以消耗的最大燃料单位数消耗的燃料 – 交易消耗的实际燃料单位数量燃料价格 – 每燃料单位设定的价格随机数 – from 地址的交易号(请记住,它从 0 开始,所以随机数 100 实际上是该帐户提交的第 101 个交易输入数据 – 交易所需的任何额外信息帐户你可以访问关于帐户的很多数据。 这就是为什么建议使用多个帐户,这样你的资产和价值传输才不会轻易地被追踪。 还有一些解决方案正在开发之中,以使交易和帐户活动更加隐秘。 以下是帐户的可用数据:用户帐户帐户地址 - 你可以用来向其发送资金的公共地址以太币余额 - 与该帐户关联的以太币金额总以太币价值 - 以太币的价值代币 - 与帐户关联的代币及其价值交易历史 - 此帐户为发送者或接收者的所有交易的列表智能合约智能合约帐户拥有用户帐户将拥有的所有数据,但一些区块浏览器甚至还会显示一些代码信息。 示例包括:合约创建者 - 将合约部署到主网的地址创建交易 - 包括部署到主网的交易源代码 - 智能合约的 solidity 或 vyper 代码合约 ABI - 合约的应用程序二进制接口 — 合约发出的调用和接收到的数据合约创建代码 - 智能合约的编译字节码 — 在你编译使用 Solidity 或 Vyper 等编写的智能合约时创建合约事件 - 智能合约中调用的方法的历史 — 基本上是一种查看合约如何使用以及使用频率的方法代币代币是一种合约,因此它们将具有与智能合约相似的数据。 但是因为它们有价值并且可以交易,所以它们还有其他数据点:类型 - 遵循 ERC-20、ERC-721 还是其他代币标准价格 - 如果是 ERC-20 代币,则具有当前市场价值市值 - 如果是 ERC-20,则将有一个市值(根据价格*总供应量计算)总供应量 - 流通中的代币数量持有者 - 持有代币的地址数量转账 - 代币在帐户之间转移的次数交易历史 - 包括代币在内的所有交易的历史合约地址 - 部署到主网的代币的地址小数 - ERC-20 代币可分割并且有小数位网络一些区块数据更全面地关注以太坊的健康状况。总交易量 - 自以太坊创建以来的交易数量每秒交易数 - 每秒可处理的交易数以太币价格 - 1 个以太币的当前市场价以太币总供应量 - 流通中的以太币数量 — 请记住,新的以太币是随着每个区块的创建而以区块奖励的形式创建的市值 - 价格*供应量的计算结果共识层数据时段出于安全原因,在每个时段(每 6.4 分钟)结束时都会创建随机化验证者委员会。 时段数据包含:时段编号最终状态 - 时段是否已经完成(是/否)时间 - 时段结束的时间认证 - 时段中的认证数量(针对时隙内区块的投票)存款 - 时段内包含的以太币存款数量(验证者必须质押以太币才能成为验证者)罚没 - 对区块提议者或证明者的惩罚数量投票参与 - 用于证明区块的质押以太币数量验证者 - 该时段活跃的验证者数量平均验证者余额 - 活跃验证者的平均余额时隙 - 时段内包含的时隙数量(时隙包含一个有效区块)时隙时隙是创建区块的机会,每个时隙的可用数据包括:时段 - 时隙有效的时段时隙编号状态 - 时隙的状态(提议/缺失)时间 - 时隙的时间戳提议者 - 为该时隙提议区块的验证者区块根 - 信标区块的哈希树根父根 - 前一个区块的哈希状态根 - 信标状态的哈希树根签名Randao 揭示涂鸦 - 区块提议者可以在其区块提议中包含 32 个字节长的消息执行数据区块哈希存款计数存款根认证 – 该区块在此时隙中的认证数量存款 - 此时隙内的存款数量自愿退出 - 此时隙中退出的验证者数量罚没 - 对区块提议者或证明者的惩罚数量投票 - 在此时隙中为区块投票的验证者区块权益证明将时间划分为时隙和时段。 这意味着新的数据!提议者 - 经算法选择提议新区块的验证者。时段 - 提议区块的时段。时隙 - 提议区块的时隙。认证 - 时隙中包含的认证数量 — 认证同投票一样,表明区块已准备号进入信标链验证者验证者负责提议区块并在时隙中对区块进行证明。验证者编号 - 代表验证者的唯一编号当前余额 - 验证者包括奖励在内的余额有效余额 - 验证者用于质押的余额收入 - 验证者收到的奖励或惩罚状态 - 验证者当前是否在线和是否活跃认证有效性 - 将验证者的认证纳入链中的平均时间激活资格 - 验证者被激活用于验证的日期(和时段)活跃开始时间 - 验证者激活的日期(和时段)提议的区块 - 验证者提议的区块认证 - 验证者提供的认证存款 - 验证人质押存款的发送者地址、交易哈希、区块号、时间戳、金额和状态认证认证就像是投票“同意”将区块加入到链中。 它们的数据与认证记录和做证明的验证者有关。时隙 - 进行认证的时隙委员会索引 - 给定时隙的委员会索引聚合位 - 表示认证中所有参与验证者的聚合认证验证者 - 提供认证的验证者信标区块根 - 指向验证者正在证明的区块来源 - 指向最新的合理化时段目标 - 指向最新的时段边界签名网络共识层最高层数据包括以下内容:当前时段当前时隙活跃验证者 - 活跃验证者的数量待定验证者 - 等待激活的验证者数量质押的以太币 - 网络中质押的以太币金额平均余额 - 验证者的平均以太币余额区块浏览器Etherscan(opens in a new tab) - 可以用来获取以太坊主网和 Goerli 测试网数据的区块浏览器Beaconcha.in(opens in a new tab) - 用于以太坊主网和 Goerli 测试网的开源区块浏览器Blockchair(opens in a new tab) - 最具隐私保护性的以太坊浏览器。 也用于排序和过滤(内存池)数据Etherchain(opens in a new tab) - 以太坊主网的区块浏览器Ethplorer(opens in a new tab) - 专注于以太坊主网和 Kovan 测试网代币的区块浏览器Rantom(opens in a new tab) - 是一个好用的开源去中心化金融非同质化代币交易查看器,用于提供详细的交易信息。延伸阅读还有哪些社区资源对你有所帮助? 编辑本页面以添加!相关主题交易帐户网络back-to-top ↑本文对你有帮助吗?是否前一页数据和分析下一页存储编辑页面(opens in a new tab)在本页面前提条件服务数据执行数据燃料交易帐户代币网络共识层数据时段时隙区块验证者认证网络区块浏览器延伸阅读相关主题网站最后更新: 2024年2月16日(opens in a new tab)(opens in a new tab)(opens in a new tab)使用以太坊查找钱包获取以太币Dapps - 去中心化应用二层网络运行节点稳定币质押ETH学习学习中心什么是以太坊?什么是以太币 (ETH)?以太坊钱包Gas fees以太坊安全和预防欺诈措施什么是 Web3?智能合约以太坊能源消耗以太坊路线图以太坊改进提案 (Eip)以太坊的历史以太坊白皮书以太坊词汇表以太坊治理区块链桥零知识证明测试中心开发者开始体验相关文档教程通过编码来学习设置本地环境生态系统社区中心以太坊基金会以太坊基金会的博客(opens in a new tab)生态系统支持方案(opens in a new tab)以太坊漏洞悬赏计划生态系统资助计划以太坊品牌资产Devcon(opens in a new tab)企业级应用主网以太坊私密以太坊企业级应用关于ethereum.org关于我们工作机会参与贡献语言支持隐私政策使用条款缓存政策联系我们(opens in a new t

ERC20 - 廖雪峰的官方网站

ERC20 - 廖雪峰的官方网站

Index

廖雪峰的官方网站

Blog

Java教程

手写Spring

手写Tomcat

Makefile教程

Python教程

JavaScript教程

区块链教程

SQL教程

Git教程

文章

问答

More

Java教程

手写Spring

手写Tomcat

Makefile教程

Python教程

JavaScript教程

区块链教程

SQL教程

Git教程

文章

问答

Java教程

手写Spring

手写Tomcat

Makefile教程

Python教程

JavaScript教程

区块链教程

SQL教程

Git教程

文章

问答

 

Profile

Passkey

Sign Out

Sign In

English

简体中文

Index

区块链教程

比特币

区块链原理

P2P交易原理

私钥

公钥和地址

签名

挖矿原理

可编程支付原理

多重签名

UTXO模型

Segwit地址

HD钱包

钱包层级

助记词

地址监控

以太坊

账户

区块结构

交易

智能合约

编写合约

部署合约

调用合约

编写Dapp

常用合约

ERC20

Wrapped Ether

关注公众号不定期领红包:

加入知识星球社群:

关注微博获取实时动态:

ERC20

Last updated: ...

/

Reads: 56820

Edit

ERC20是以太坊定义的一个合约接口规范,符合该规范的合约被称为以太坊代币。

一个ERC20合约通过mapping(address => uint256)存储一个地址对应的余额:

contract MyERC20 {

mapping(address => uint256) public balanceOf;

}

如果要在两个地址间转账,实际上就是对balanceOf这个mapping的对应的kv进行加减操作:

contract MyERC20 {

mapping(address => uint256) public balanceOf;

function transfer(address recipient, uint256 amount) public returns (bool) {

// 不允许转账给0地址:

require(recipient != address(0), "ERC20: transfer to the zero address");

// sender的余额必须大于或等于转账额度:

require(balanceOf[msg.sender] >= amount, "ERC20: transfer amount exceeds balance");

// 更新sender转账后的额度:

balanceOf[msg.sender] -= amount;

// 更新recipient转账后的额度:

balanceOf[recipient] += amount;

// 写入日志:

emit Transfer(sender, recipient, amount);

return true;

}

}

安全性

早期ERC20转账最容易出现的安全漏洞是加减导致的溢出,即两个超大数相加溢出,或者减法得到了负数导致结果错误。从Solidity 0.8版本开始,编译器默认就会检查运算溢出,因此,不要使用早期的Solidity编译即可避免溢出问题。

没有正确实现transfer()函数会导致交易成功,却没有任何转账发生,此时外部程序容易误认为已成功,导致假充值:

function transfer(address recipient, uint256 amount) public returns (bool) {

if (balanceOf[msg.sender] >= amount) {

balanceOf[msg.sender] -= amount;

balanceOf[recipient] += amount;

emit Transfer(sender, recipient, amount);

return true;

} else {

return false;

}

}

实际上transfer()函数返回bool毫无意义,因为条件不满足必须抛出异常回滚交易,这是ERC20接口定义冗余导致部分开发者未能遵守规范导致的。

ERC20另一个严重的安全性问题来源于重入攻击:

function transfer(address recipient, uint256 amount) public returns (bool) {

require(recipient != address(0), "ERC20: transfer to the zero address");

uint256 senderBalance = balanceOf[msg.sender];

require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

// 此处调用另一个回调:

callback(msg.sender);

// 更新转账后的额度:

balanceOf[msg.sender] = senderBalance - amount;

balanceOf[recipient] += amount;

emit Transfer(sender, recipient, amount);

return true;

}

先回调再更新的方式会导致重入攻击,即如果callback()调用了外部合约,外部合约回调transfer(),会导致重复转账。防止重入攻击的方法是一定要在校验通过后立刻更新数据,不要在校验-更新中插入任何可能执行外部代码的逻辑。

Comments

Make a comment

Sign in to

make a comment

Index

区块链教程

比特币

区块链原理

P2P交易原理

私钥

公钥和地址

签名

挖矿原理

可编程支付原理

多重签名

UTXO模型

Segwit地址

HD钱包

钱包层级

助记词

地址监控

以太坊

账户

区块结构

交易

智能合约

编写合约

部署合约

调用合约

编写Dapp

常用合约

ERC20

Wrapped Ether

廖雪峰的官方网站

©Copyright 2019-2021

Powered by iTranswarp

Feedback

License

[block #32] 详解ERC20与ERC721 - 知乎

[block #32] 详解ERC20与ERC721 - 知乎首发于勤学苦链切换模式写文章登录/注册[block #32] 详解ERC20与ERC721猫本聪摘要数字加密货币大致可以分为原生币(coin)和代币(token)两大类。前者如BTC、ETH等,拥有自己的区块链。后者如Tether、TRON、ONT等,依附于现有的区块链。市场上流通的基于以太坊的代币大都遵从ERC20协议。最近几个月间还出现了一种被称为ERC721的数字加密资产,例如CryptoKitties(参阅[block #24])。所谓ERC20和ERC721究竟是什么呢?首先,ERC是Ethereum Request for Comments的缩写,代表以太坊开发者提交的协议提案。它相当于是以太坊版的RFC(https://www.ietf.org/standards/rfcs/)。ERC后面的数字是议案的编号。打算制定以太坊新标准的开发者可以在https://github.com/ethereum/EIPs/issues先创建一个EIP(Ethereum Improvement Proposal,以太坊改进提案),详细描述协议。经过公开审议之后,获得广泛认同的提案会被标准化,列入https://github.com/ethereum/EIPs。有些改动触及区块链共识,比如增加虚拟机操作符,属于核心层变更。而另一些提案则不涉及修改以太坊本身的代码,只是约定俗成的上层协议,它们通常被归类为ERC标准。ERC20可能是其中最广为人知的标准了。它诞生于2015年,到2017年9月被正式标准化。协议规定了具有可互换性(fungible)代币的一组基本接口,包括代币符号、发行量、转账、授权等。所谓可互换性(fungibility)指代币之间无差异,同等数量的两笔代币价值相等。交易所里流通的绝大部分代币都是可互换的,一单位的币无论在哪儿都价值一单位。与之相对的则是非互换性(non-fungible)资产。比如CryptoKitties中的宠物猫就是典型的非互换性资产,因为每只猫各有千秋,而且由于不同辈分的稀缺性不同,市场价格也差异巨大。这种非标准化资产很长时间内都没有标准协议,直到2017年9月才出现ERC721提案,定义了一组常用的接口。ERC721至今仍旧处于草案阶段,但已经被不少dApp采用,甚至出现了专门的交易所(Y Combinator孵化的http://opensea.io)。以下详细拆解ERC20和ERC721协议,技术性偏强,目标读者是以太坊智能合约开发者。ERC20ERC20定义了三个可选函数:// 代币名称。比如"Sleepism Token"。

function name() view returns (string name);

// 代币符号。按惯例一般用全大写字母,比如“SLPT”。

function symbol() view returns (string symbol);

// 小数位数。不少代币采用与ETH一样的设定,也就是18位。

// 这只影响用户界面中货币量的显示方式。代币本身都统一用uint256表示。

function decimal() view returns (uint8 decimals);由于这三个函数都是返回常量,在Solidity中也可以用以下简略形式定义。solc编译器会自动生成与以上接口等价的字节码。string public name = "Sleepism Token";

string public symbol = "SLPT";

uint8 public decimal = 18;ERC20定义了六个必须声明的函数:// 代币总量。

function totalSupply() view returns (uint256 totalSupply);

// 查询指定地址下的代币余额。

function balanceOf(address _owner) view returns (uint256 balance);

// 给指定地址转入指定量的代币,转账成功则返回true。

// 如果源地址没有足够量的代币,函数应该抛出异常。

// 即使转零个代币,也应该触发Transfer事件(下文中有解释)。

function transfer(address _to, uint256 _value) returns (bool success);

// 与transfer类似的转账函数。区别在于可以指定一个转出地址。

// 如果当前地址得到了转出地址的授权,则可以代理转账操作。

function transferFrom(address _from, address _to, uint256 _value)

returns (bool success);

// 授权指定地址特定的转账额度。

// 被授权的地址可以多次调用transferFrom函数代替源地址转账,总值不超过_value。

// 实际使用时,每次重设额度前应该先调用approve(_spender, 0),

// 等交易被确认后再调用approve(_spender, newAllowance)。

// 如果直接调用一次approve,被授权地址有机会转出高出指定额度的代币。

function approve(address _spender, uint256 _value) returns (bool success);

// 查询指定授权地址剩余的转账额度。

function allowance(address _owner, address _spender) view returns (uint256 remaining);ERC20还定义了两个事件:// 转账事件。必须在成功转账(哪怕是零个代币)时触发。

event Transfer(address indexed _from, address indexed _to, uint256 _value);

// 授权事件。必须在成功授权时触发。

event Approval(address indexed _owner, address indexed _spender, uint256 _value);官方文档参见https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md。ERC721ERC721与ERC20有些相似,但由于它管理的是非互换性资产(non-fungible token,简称NFT),所以函数语义并不一样。合约下每份ERC721资产都拥有一个uint256类型的独立编号(以下代码中的_tokenId)。ERC721事件:// 转账事件。从_from地址转移_tokenId对应资产的所有权到_to地址时触发。

event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);

// 授权转账事件。把_owner地址控制的_tokenId资产授权给_approved地址时触发。

// 发生转账事件时,对应资产的授权地址应被清空。

event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);

// 授权管理事件。_owner地址授权或取消授权_operator地址的管理权时触发。

event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);ERC721函数:// 查询_owner地址拥有的NFT总个数。

function balanceOf(address _owner) external view returns (uint256);

// 查询_tokenId资产的所属地址。

function ownerOf(uint256 _tokenId) external view returns (address);

// 将_from地址所拥有的_tokenId资产转移给_to地址。

// 调用方必须是资产主人或是已被授权的地址,否则会抛出异常。

function transferFrom(address _from, address _to, uint256 _tokenId) external payable;

// 与transferFrom类似的资产转移函数。

// 它会额外检查_to地址和_tokenId的有效性,另外如果_to是合约地址,

// 还会触发它的onERC721Received回调函数。

function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;

// 与上述接口类似的资产转移函数。

// 唯一不同点是可以传入额外的自定义参数。

function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;

// 把_tokenId资产授权给_approved地址。

function approve(address _approved, uint256 _tokenId) external payable;

// 查询_tokenId资产对应的授权地址。

function getApproved(uint256 _tokenId) external view returns (address);

// 指定或撤销_operator地址的管理权限。

function setApprovalForAll(address _operator, bool _approved) external;

// 查询_operator地址是否已经获得_owner地址的管理权。

function isApprovedForAll(address _owner, address _operator) external view returns (bool);ERC721元数据接口(可选项):// 资产名称。比如"Sleepism Collectible"。

function name() external pure returns (string _name);

// 资产符号。比如"SLPC"。

function symbol() external pure returns (string _symbol);

// 描述_tokenId资产的URI。指向一个符合ERC721元数据描述结构的JSON文件。

function tokenURI(uint256 _tokenId) external view returns (string);元数据描述结构如下所示:{

"title": "Sleepism Collectible Metadata",

"type": "object",

"properties": {

"name": {

"type": "string",

"description": "Sleep and his Half-brother Death",

},

"description": {

"type": "string",

"description": "A painting by John William Waterhouse",

},

"image": {

"type": "string",

"description": "https://i.imgur.com/sahhbd.png",

}

}

}ERC721枚举扩宽接口(可选项):// 合约管理的总NFT数量。

function totalSupply() external view returns (uint256);

// 查询第_index个资产的编码。

function tokenByIndex(uint256 _index) external view returns (uint256);

// 查询_owner地址拥有的第_index个资产的编码。

function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256);符合ERC721协议的合约还需要符合ERC165规范,实现以下函数:// 查询合约是否实现了interfaceID对应的接口。

function supportsInterface(bytes4 interfaceID) external view returns (bool);interfaceID由bytes4(keccak256(函数签名))计算得到。有多个函数时,将全部byte4异或(xor)得到最终结果。详见ERC165标准文档(https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md)。例如以下接受转账回调函数接口的interfaceID就是0xf0b9e5ba:interface ERC721TokenReceiver {

function onERC721Received(address _from, uint256 _tokenId, bytes data) external returns(bytes4);

}这是支持ERC721资产的钱包或交易平台需要实现的代码。发放ERC721资产的合约本身不需要处理。ERC721官方文档参见https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md。相关ERCERC223是对ERC20的小改进,增加了tokenFallback函数,更好地处理错误情况。详见https://github.com/ethereum/EIPs/issues/223。ERC621在ERC20的基础上添加了increaseSupply和decreaseSupply函数,控制代币总量的增减。详见https://github.com/ethereum/EIPs/pull/621。更近期提出的ERC827则是增强了函数回调功能。详见https://github.com/ethereum/EIPs/issues/827。以上这些ERC尚未标准化,普及率也不高。目前参考一下即可。编辑于 2018-03-28 18:17区块链(Blockchain)智能合约​赞同 46​​8 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录勤学苦链加密货币相关(新内容见公众号maobenco

ERC-20 合约概览 | ethereum.org

20 合约概览 | ethereum.org跳转至主要内容学习用法构建参与研究搜索​​​​语言 ZH帮助更新此页面本页面有新版本,但现在只有英文版。请帮助我们翻译最新版本。翻译页面没有错误!此页面未翻译,因此特意以英文显示。不再显示ERC-20 合约概览solidityerc-20初学者Ori Pomerantz 2021年3月9日35 分钟阅读 minute read在本页面简介接口实际合约导入声明合约定义变量的定义构造函数用户接口函数读取代币信息代币转账许可额度函数修改代币信息的函数修改小数点设置变量钩子简介以太坊最常见的用途之一是由一个团队来打造一种可以交易的代币,在某种意义上是他们自己的货币。 这些代币通常遵循一个标准, ERC-20。 此标准使得人们能够以此来开发可以用于所有 ERC-20 代币的工具,如流动资金池和钱包。 在这篇文章中,我们将带领大家分析 OpenZeppelin Solidity ERC20 实现(opens in a new tab)以及 ERC20 接口定义(opens in a new tab)。这里使用的是附加说明的源代码。 如果想要实现 ERC-20, 请阅读此教程(opens in a new tab)。接口像 ERC-20 这样的标准,其目的是允许符合标准的多种代币,都可以在应用程序之间进行互操作,例如钱包和分布式交易所。 为实现这个目的,我们要创建一个 接口(opens in a new tab)。 任何需要使用代币合约的代码 可以在接口中使用相同的定义,并且与使用它的所有代币合约兼容。无论是像 MetaMask 这样的钱包、 诸如 etherscan.io 之类的去中心化应用程序,或一种不同的合约,例如流动资金池。如果您是一位经验丰富的程序员,您可能记得在 Java(opens in a new tab) 中,甚至在 C 头文件(opens in a new tab) 中看到过类似的构造。这是来自 OpenZeppelin 的 ERC-20 接口(opens in a new tab) 的定义。 这是将人类可读标准(opens in a new tab)转换为 Solidity 代码。 当然, 接口本身并不定义如何做事。 这一点在下文合约的源代码中作了解释。1// SPDX-License-Identifier: MIT 复制Solidity 文件中一般需要标识软件许可证。 您可以在这里看到许可证列表(opens in a new tab)。 如果需要不同的 许可证,只需在注释中加以说明。1pragma solidity >=0.6.0 <0.8.0; 复制Solidity 语言仍在迅速地发展,新版本可能不适配旧的代码 (请点击此处查看(opens in a new tab))。 因此,最好不仅指定一个最低的 语言版本,也指定一个最高的版本,即测试过代码的最新版本。1/**2 * @dev Interface of the ERC20 standard as defined in EIP.3 */ 复制注释中的 @dev 是 NatSpec 格式(opens in a new tab)的一部分,用于 从源代码生成文档。1interface IERC20 { 复制根据惯例,接口名称以 I 开头。1 /**2 * @dev Returns the amount of tokens in existence.3 */4 function totalSupply() external view returns (uint256); 复制此函数标记为 external,表示它只能从合约之外调用(opens in a new tab)。 它返回的是合约中代币的总供应量 这个值按以太坊中最常见的类型返回,即无符号的 256 位(256 位是 以太坊虚拟机的原生字长宽度)。 此函数也是视图 view 类型,这意味着它不会改变合约状态,这样它可以在单个节点上执行,而不需要在区块链的每个节点上执行。 这类函数不会生成交易,也不会消耗燃料。注意:理论上讲,合约创建者可能会通过返回比实际数量少的总供应量来做骗局,让每个代币 比实际看起来更有价值。 然而,这种担忧忽视了区块链的真正内涵。 所有在区块链上发生的事情都要通过每个节点 进行验证。 为了实现这一点,每个合约的机器语言代码和存储都可以在每个节点上找到。 虽然无需发布您的合约代码,但这样其它人都不会认真对待您,除非您发布源代码和用于编译的 Solidity 版本,这样人们可以用它来验证您提供的机器语言代码。 例如,请查看此合约(opens in a new tab)。1 /**2 * @dev Returns the amount of tokens owned by `account`.3 */4 function balanceOf(address account) external view returns (uint256); 复制顾名思义,balanceOf 返回一个账户的余额。 以太坊帐户在 Solidity 中通过 address 类型识别,该类型有 160 位。 它也是 external 和 view 类型。1 /**2 * @dev Moves `amount` tokens from the caller's account to `recipient`.3 *4 * Returns a boolean value indicating whether the operation succeeded.5 *6 * Emits a {Transfer} event.7 */8 function transfer(address recipient, uint256 amount) external returns (bool); 复制transfer 函数将代币从调用者地址转移到另一个地址。 这涉及到状态的更改,所以它不是 view 类型。 当用户调用此函数时,它会创建交易并消耗燃料。 还会触发一个 Transfer 事件,以通知区块链上的所有人。该函数有两种输出,对应两种不同的调用:直接从用户接口调用函数的用户。 此类用户通常会提交一个交易 并且不会等待响应,因为响应可能需要无限期的时间。 用户可以查看交易收据 (通常通过交易哈希值识别)或者查看 Transfer 事件,以确定发生了什么。将函数作为整个交易一部分调用的其他合约 这些合约可立即获得结果, 由于它们在相同的交易里运行,因此可以使用函数返回值。更改合约状态的其他函数创建的同类型输出。限额允许帐户使用属于另一位所有者的代币。 比如,当合约作为卖方时,这个函数就很实用。 合约无法 监听事件,如果买方要将代币直接转给卖方合约, 该合约无法知道已经获得付款。 因此,买方允许 卖方合约支付一定的额度,而让卖方转账相应金额。 这通过卖方合约调用的函数完成,这样卖方合约 可以知道是否成功。1 /**2 * @dev Returns the remaining number of tokens that `spender` will be3 * allowed to spend on behalf of `owner` through {transferFrom}. This is4 * zero by default.5 *6 * This value changes when {approve} or {transferFrom} are called.7 */8 function allowance(address owner, address spender) external view returns (uint256); 复制allowance 函数允许任何人查询一个 地址 (owner) 给另一个地址 (spender) 的许可额度。1 /**2 * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.3 *4 * Returns a boolean value indicating whether the operation succeeded.5 *6 * IMPORTANT: Beware that changing an allowance with this method brings the risk7 * that someone may use both the old and the new allowance by unfortunate8 * transaction ordering. One possible solution to mitigate this race9 * condition is to first reduce the spender's allowance to 0 and set the10 * desired value afterwards:11 * https://github.com/ethereum/EIPs/issues/20#issuecomment-26352472912 *13 * Emits an {Approval} event.14 */15 function approve(address spender, uint256 amount) external returns (bool);显示全部 复制approve 函数创建了一个许可额度。 请务必阅读关于 如何避免函数被滥用的信息。 在以太坊中,您可以控制自己交易的顺序, 但无法控制其他方交易的执行顺序, 除非在看到其他方的交易发生之前 不提交您自己的交易。1 /**2 * @dev Moves `amount` tokens from `sender` to `recipient` using the3 * allowance mechanism. `amount` is then deducted from the caller's4 * allowance.5 *6 * Returns a boolean value indicating whether the operation succeeded.7 *8 * Emits a {Transfer} event.9 */10 function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);显示全部 复制最后,消费者使用 transferFrom 函数用来使用许可额度。12 /**3 * @dev Emitted when `value` tokens are moved from one account (`from`) to4 * another (`to`).5 *6 * Note that `value` may be zero.7 */8 event Transfer(address indexed from, address indexed to, uint256 value);910 /**11 * @dev Emitted when the allowance of a `spender` for an `owner` is set by12 * a call to {approve}. `value` is the new allowance.13 */14 event Approval(address indexed owner, address indexed spender, uint256 value);15}显示全部 复制在 ERC-20 合约状态发生变化时就会激发这些事件。实际合约这是实现 ERC-20 标准的实际合约, 摘自此处(opens in a new tab)。 不能照原样使用,但可以 通过继承(opens in a new tab)将其扩展,使之可用。1// SPDX-License-Identifier: MIT2pragma solidity >=0.6.0 <0.8.0; 复制导入声明除了上述接口定义外,合约定义还要导入两个其他文件:12import "../../GSN/Context.sol";3import "./IERC20.sol";4import "../../math/SafeMath.sol"; 复制GSN/Context.sol 是使用 OpenGSN(opens in a new tab) 所需的文件,该系统允许用户在没有以太币的情况下 使用区块链。 请注意,这里的文件是旧版本,如果需要集成 OpenGSN, 请使用此教程(opens in a new tab)。SafeMath 库(opens in a new tab),用于 完成没有溢出问题的加法和减法。 这非常必要,否则会出现,用户仅有一个代币,花掉 两个代币后,反而有了 2^256-1 个代币。这里的注释说明了合约的目的。1/**2 * @dev Implementation of the {IERC20} interface.3 *4 * This implementation is agnostic to the way tokens are created. This means5 * that a supply mechanism has to be added in a derived contract using {_mint}.6 * For a generic mechanism see {ERC20PresetMinterPauser}.7 *8 * TIP: For a detailed writeup see our guide9 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How10 * to implement supply mechanisms].11 *12 * We have followed general OpenZeppelin guidelines: functions revert instead13 * of returning `false` on failure. This behavior is nonetheless conventional14 * and does not conflict with the expectations of ERC20 applications.15 *16 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.17 * This allows applications to reconstruct the allowance for all accounts just18 * by listening to said events. Other implementations of the EIP may not emit19 * these events, as it isn't required by the specification.20 *21 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}22 * functions have been added to mitigate the well-known issues around setting23 * allowances. See {IERC20-approve}.24 */25显示全部 复制合约定义1contract ERC20 is Context, IERC20 { 复制此行为 OpenGSN 指定继承,在本例中来自上面的 IERC20 和 Context。12 using SafeMath for uint256;3 复制此行将 SafeMath 库附加到 uint256 类型。 您可以在 此处(opens in a new tab)找到此程序库。变量的定义这些定义具体指定了合约的状态变量。 虽然声明这些变量为 private,但 这只意味着区块链上的其他合约无法读取它们。 区块链上 没有秘密,所有节点上的软件在每个区块上 都有每个合约的状态。 根据惯例,状态变量名称为 _。前两个变量是映射(opens in a new tab), 表示它们的结果与关联数组(opens in a new tab)相同, 不同之处在于关键词为数值。 存储空间仅分配给数值不同于 默认值(零)的条目。1 mapping (address => uint256) private _balances; 复制第一个映射,_balances,是代币地址和对应的余额。 要查看 余额,请使用此语法:_balances[
]。1 映射 (address => mapping (address => uint256)) private _allowances; 复制此变量,_allowances 存储之前提到过的许可限额。 第一个索引是 代币的所有者,第二个索引是获得许可限额的合约。 要查询地址 A 可以 从地址 B 账户中支出的额度,请使用 _allowances[B][A]。1 uint256 private _totalSupply; 复制顾名思义,此变量记录代币供应总量。1 string private _name;2 string private _symbol;3 uint8 private _decimals; 复制这三个变量用于提高可读性。 前两项的含义不言自明,但 _decimals 并非如此。一方面,以太坊不具有浮点数或分数变量。 另一方面, 人们希望能够拆分代币。 人们选择将黄金做为货币的一个原因是 当有人想要购买一只牛的一小部分时,就很难找零。解决方案是保持整数值,但是计数时使用一个价值非常小的分数代币, 而不是真正的代币。 就以太币而言,分数代币称为 wei,10^18 个 wei 等于一个 以太币。 在撰写本文时,10,000,000,000,000 wei 约等于一美分或欧分。应用程序需要知道如何显示代币余额。 如果某位用户有 3,141,000,000,000,000,000 wei,那是否是 3.14 个以太币? 31.41 个以太币? 还是 3,141 个以太币? 对于以太币,10^18 个 wei 等于 1 个以太币,但对于您的 代币,您可以选择一个不同的值。 如果无法合理拆分代币,您可以将 _decimals 值设为零。 如果想要使用与以太币相同的标准,请使用 18。构造函数1 /**2 * @dev Sets the values for {name} and {symbol}, initializes {decimals} with3 * a default value of 18.4 *5 * To select a different value for {decimals}, use {_setupDecimals}.6 *7 * All three of these values are immutable: they can only be set once during8 * construction.9 */10 constructor (string memory name_, string memory symbol_) public {11 _name = name_;12 _symbol = symbol_;13 _decimals = 18;14 }显示全部 复制构造函数在首次创建合约时调用。 根据惯例,函数参数名为 _。用户接口函数1 /**2 * @dev Returns the name of the token.3 */4 function name() public view returns (string memory) {5 return _name;6 }78 /**9 * @dev Returns the symbol of the token, usually a shorter version of the10 * name.11 */12 function symbol() public view returns (string memory) {13 return _symbol;14 }1516 /**17 * @dev Returns the number of decimals used to get its user representation.18 * For example, if `decimals` equals `2`, a balance of `505` tokens should19 * be displayed to a user as `5,05` (`505 / 10 ** 2`).20 *21 * Tokens usually opt for a value of 18, imitating the relationship between22 * ether and wei. This is the value {ERC20} uses, unless {_setupDecimals} is23 * called.24 *25 * NOTE: This information is only used for _display_ purposes: it in26 * no way affects any of the arithmetic of the contract, including27 * {IERC20-balanceOf} and {IERC20-transfer}.28 */29 function decimals() public view returns (uint8) {30 return _decimals;31 }显示全部 复制这些函数,name、symbol 和 decimals 帮助用户界面了解合约,从而正常演示合约。返回类型为 string memory,意味着返回在内存中存储的字符串。 变量,如 字符串,可以存储在三个位置:有效时间合约访问燃料成本内存函数调用读/写几十到几百不等(距离越远费用越高)调用数据函数调用只读不可用作返回类型,只可用作函数参数存储直到被修改读/写高(读取需要 800,写入需要 2 万)在这种情况下,memory 是最好的选择。读取代币信息这些是提供代币信息的函数,不管是总量还是 账户余额。1 /**2 * @dev See {IERC20-totalSupply}.3 */4 function totalSupply() public view override returns (uint256) {5 return _totalSupply;6 } 复制totalSupply 函数返回代币的总量。1 /**2 * @dev See {IERC20-balanceOf}.3 */4 function balanceOf(address account) public view override returns (uint256) {5 return _balances[account];6 } 复制读取一个帐户的余额。 请注意,任何人都可以查看他人账户的余额。 试图隐藏此信息没有意义,因为它在每个节点上 都是可见的。 区块链上没有秘密代币转账1 /**2 * @dev See {IERC20-transfer}.3 *4 * Requirements:5 *6 * - `recipient` cannot be the zero address.7 * - the caller must have a balance of at least `amount`.8 */9 function transfer(address recipient, uint256 amount) public virtual override returns (bool) {显示全部 复制调用 transfer 函数以从发送人的帐户转移代币到另一个帐户。 注意 虽然函数返回的是布尔值,但那个值始终为真实值。 如果转账失败, 合约会撤销调用。1 _transfer(_msgSender(), recipient, amount);2 return true;3 } 复制_transfer 函数完成了实际工作。 这是一个私有函数,只能由 其他合约函数调用。 根据常规,私人函数名为 _,与状态 变量相同。在 Solidity 中,我们通常使用 msg.sender 代表信息发送人。 然而,这会破坏 OpenGSN(opens in a new tab) 的规则。 如果我们想使用代币进行交易而不用以太币,我们 需要使用 _msgSender()。 对于正常交易,它返回 msg.sender,但是对于没有以太币的交易, 则返回原始签名而不是传递信息的合约。许可额度函数这些是实现许可额度功能的函数:allowance、approve、transferFrom 和 _approve。 此外,除基本标准外,OpenZeppelin 实现还包含了一些能够提高 安全性的功能:increaseAllowance 和 decreaseAllowance。许可额度函数1 /**2 * @dev See {IERC20-allowance}.3 */4 function allowance(address owner, address spender) public view virtual override returns (uint256) {5 return _allowances[owner][spender];6 } 复制allowance 函数使每个人都能检查任何许可额度。审批函数1 /**2 * @dev See {IERC20-approve}.3 *4 * Requirements:5 *6 * - `spender` cannot be the zero address.7 */8 function approve(address spender, uint256 amount) public virtual override returns (bool) { 复制调用此函数以创建许可额度。 它与上述 transfer 函数相似:该函数仅调用一个完成真正工作的内部函数(本例中为 _approve)。函数要么返回 true(如果成功),要么撤销(如果失败)。1 _approve(_msgSender(), spender, amount);2 return true;3 } 复制我们使用内部函数尽量减少发生状态变化之处。 任何可以改变状态的 函数都是一种潜在的安全风险,需要对其安全性进行审核。 这样我们就能减少出错的机会。TransferFrom 函数这个函数被消费者用于使用许可额度。 这里需要两步操作:将消费的金额转账, 并在许可额度中减去这笔金额。1 /**2 * @dev See {IERC20-transferFrom}.3 *4 * Emits an {Approval} event indicating the updated allowance. This is not5 * required by the EIP. See the note at the beginning of {ERC20}.6 *7 * Requirements:8 *9 * - `sender` and `recipient` cannot be the zero address.10 * - `sender` must have a balance of at least `amount`.11 * - the caller must have allowance for ``sender``'s tokens of at least12 * `amount`.13 */14 function transferFrom(address sender, address recipient, uint256 amount) public virtual15 override returns (bool) {16 _transfer(sender, recipient, amount);显示全部 复制a.sub(b, "message") 函数调用做了两件事。 首先,它计算了 a-b,这是新的许可额度。 之后,它检查这一结果是否为负数。 如果结果为负,将撤销调用,并发出相应的信息。 请注意,撤销调用后,之前在调用中完成的任何处理都会被忽略,所以我们不需要 撤消 _transfer。1 _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount,2 "ERC20: transfer amount exceeds allowance"));3 return true;4 } 复制OpenZeppelin 安全加法将许可额度从一个非零值设定为另一个非零值是有危险的, 因为您只能控制自己的交易顺序,而无法控制其他人的交易顺序。 假设现在有两个用户,天真的 Alice 和不诚实的 Bill。 Alice 想要从 Bill 处获取一些服务, 她认为值五个代币,所以她给了 Bill 五个代币的许可额度。之后有了一些变化,Bill 的价格提高到了十个代币。 Alice 仍然想要购买服务,就发送了一笔交易,将 Bill 的许可额度设置为 10。 当 Bill 在交易池中看到这个新的交易时, 他就会发送一笔交易,以花费 Alice 的五个代币,并且设定高得多的 燃料价格,这样就会更快挖矿。 这样的话,Bill 可以先花五个代币,然后 当 Alice 的新许可额度放款后,他就可以再花费十个代币,这样总共花费了 15 个代币, 超过了 Alice 本欲授权的金额。 这种技术叫做 抢先交易(opens in a new tab)Alice 的交易Alice 的随机数Bill 的交易Bill 的随机数Bill 的许可额度Bill 从 Alice 处获得的总收入approve(Bill, 5)1050transferFrom(Alice, Bill, 5)10,12305approve(Bill, 10)11105transferFrom(Alice, Bill, 10)10,124015为了避免这个问题,有两个函数(increaseAllowance 和 decreaseAllowance)使您 能够修改指定数额的许可额度。 所以,如果 Bill 已经花费了五个代币, 他就只能再花五个代币。 根据时间的不同,有两种方法可以生效, 这两种方法都会使 Bill 最终只得到十个代币:A:Alice 的交易Alice 的随机数Bill 的交易Bill 的随机数Bill 的许可额度Bill 从 Alice 处获得的总收入approve(Bill, 5)1050transferFrom(Alice, Bill, 5)10,12305increaseAllowance(Bill, 5)110+5 = 55transferFrom(Alice, Bill, 5)10,124010B:Alice 的交易Alice 的随机数Bill 的交易Bill 的随机数Bill 的许可额度Bill 从 Alice 处获得的总收入approve(Bill, 5)1050increaseAllowance(Bill, 5)115+5 = 100transferFrom(Alice, Bill, 10)10,1240101 /**2 * @dev Atomically increases the allowance granted to `spender` by the caller.3 *4 * This is an alternative to {approve} that can be used as a mitigation for5 * problems described in {IERC20-approve}.6 *7 * Emits an {Approval} event indicating the updated allowance.8 *9 * Requirements:10 *11 * - `spender` cannot be the zero address.12 */13 function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {14 _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));15 return true;16 }显示全部 复制a.add(b) 函数是一个安全加法。 在罕见的情况下,a+b>=2^256,不会发生 普通加法会出现的溢出错误。12 /**3 * @dev Atomically decreases the allowance granted to `spender` by the caller.4 *5 * This is an alternative to {approve} that can be used as a mitigation for6 * problems described in {IERC20-approve}.7 *8 * Emits an {Approval} event indicating the updated allowance.9 *10 * Requirements:11 *12 * - `spender` cannot be the zero address.13 * - `spender` must have allowance for the caller of at least14 * `subtractedValue`.15 */16 function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {17 _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue,18 "ERC20: decreased allowance below zero"));19 return true;20 }显示全部 复制修改代币信息的函数这些是完成实际工作的四个函数:_transfer、_mint、_burn 和 _approve。_transfer 函数 {#_transfer}1 /**2 * @dev Moves tokens `amount` from `sender` to `recipient`.3 *4 * This is internal function is equivalent to {transfer}, and can be used to5 * e.g. implement automatic token fees, slashing mechanisms, etc.6 *7 * Emits a {Transfer} event.8 *9 * Requirements:10 *11 * - `sender` cannot be the zero address.12 * - `recipient` cannot be the zero address.13 * - `sender` must have a balance of at least `amount`.14 */15 function _transfer(address sender, address recipient, uint256 amount) internal virtual {显示全部 复制_transfer 这个函数将代币从一个账户转到另一个账户。 有两个函数调用它,分别是 transfer(从发送人本人账户发送)和 transferFrom(使用许可额度,从其他人的账户发送)。1 require(sender != address(0), "ERC20: transfer from the zero address");2 require(recipient != address(0), "ERC20: transfer to the zero address"); 复制实际上以太坊中没有人拥有零地址(即不存在对应公钥可以转换为零地址的私钥)。 有人使用该地址时,通常是一个软件漏洞,所以 如果将零地址用作发送人或接收人,交易将失败。1 _beforeTokenTransfer(sender, recipient, amount);2 复制使用该合约有两种方法:将其作为模板,编写自己的代码从它继承(opens in a new tab)一个合约,并且重写您需要修改的函数第二种方法要好得多,因为 OpenZeppelin ERC-20 代码已经过审核,其安全性也已得到证实。 当您的合约继承它时, 可以清楚地表明修改了哪些函数,只需要审核这些特定的函数,人们就会信任您的合约。代币每次易手时,通常都需要调用一个函数。 然而,_transfer 是一个非常重要的函数, 重新编写可能会不安全(见下文),所以最好不要重写。 解决方案是重写 _beforeTokenTransfer 函数,这是一个挂钩函数(opens in a new tab)。 您可以重写此函数,之后每次转账都会调用它。1 _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");2 _balances[recipient] = _balances[recipient].add(amount); 复制这些是实际实现转账的代码。 请注意,将转账金额从发送人帐户上扣除,然后加到接收人帐户之间, 不得有任何动作。 这很重要,因为如果 中间调用不同的合约,可能会被用来骗过这个合约。 目前转账为最小操作单元,即中间什么都不会发生。1 emit Transfer(sender, recipient, amount);2 } 复制最后,激发一个 Transfer 事件。 智能合约无法访问事件,但区块链外运行的代码 可以监听事件并对其作出反应。 例如,钱包可以跟踪所有者获得更多代币事件。_mint 和 _burn 函数 {#_mint-and-_burn}这两个函数(_mint 和 _burn)修改代币的总供应量。 它们都是内部函数,在原有合约中没有任何调用它们的函数。 因此,仅通过继承合约并添加您自己的逻辑, 来决定在什么条件下可以铸造新代币或消耗现有代币时, 它们才是有用的。注意:每一个 ERC-20 代币都通过自己的业务逻辑来决定代币管理。 例如,一个固定供应总量的合约可能只在构造函数中调用 _mint,而从不调用 _burn。 一个销售代币的合约 将在支付时调用 _mint,并大概在某个时间点调用 _burn, 以避免过快的通货膨胀。1 /** @dev Creates `amount` tokens and assigns them to `account`, increasing2 * the total supply.3 *4 * Emits a {Transfer} event with `from` set to the zero address.5 *6 * Requirements:7 *8 * - `to` cannot be the zero address.9 */10 function _mint(address account, uint256 amount) internal virtual {11 require(account != address(0), "ERC20: mint to the zero address");12 _beforeTokenTransfer(address(0), account, amount);13 _totalSupply = _totalSupply.add(amount);14 _balances[account] = _balances[account].add(amount);15 emit Transfer(address(0), account, amount);16 }显示全部 复制当代币总数发生变化时,请务必更新 _totalSupply。1 /**2 * @dev Destroys `amount` tokens from `account`, reducing the3 * total supply.4 *5 * Emits a {Transfer} event with `to` set to the zero address.6 *7 * Requirements:8 *9 * - `account` cannot be the zero address.10 * - `account` must have at least `amount` tokens.11 */12 function _burn(address account, uint256 amount) internal virtual {13 require(account != address(0), "ERC20: burn from the zero address");1415 _beforeTokenTransfer(account, address(0), amount);1617 _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");18 _totalSupply = _totalSupply.sub(amount);19 emit Transfer(account, address(0), amount);20 }显示全部_burn 函数与 _mint 函数几乎完全相同,但它们的方向相反。_approve 函数 {#_approve}这是实际设定许可额度的函数。 请注意,它允许所有者指定 一个高于所有者当前余额的许可额度。 这是允许的,因为在转账时 会核查余额,届时可能不同于 创建许可额度时的金额。1 /**2 * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.3 *4 * This internal function is equivalent to `approve`, and can be used to5 * e.g. set automatic allowances for certain subsystems, etc.6 *7 * Emits an {Approval} event.8 *9 * Requirements:10 *11 * - `owner` cannot be the zero address.12 * - `spender` cannot be the zero address.13 */14 function _approve(address owner, address spender, uint256 amount) internal virtual {15 require(owner != address(0), "ERC20: approve from the zero address");16 require(spender != address(0), "ERC20: approve to the zero address");1718 _allowances[owner][spender] = amount;显示全部 复制激发一个 Approval 事件。 根据应用程序的编写, 消费者合约可以从代币所有者或监听事件的服务器获知审批结果。1 emit Approval(owner, spender, amount);2 }3 复制修改小数点设置变量123 /**4 * @dev Sets {decimals} to a value other than the default one of 18.5 *6 * WARNING: This function should only be called from the constructor. Most7 * applications that interact with token contracts will not expect8 * {decimals} to ever change, and may work incorrectly if it does.9 */10 function _setupDecimals(uint8 decimals_) internal {11 _decimals = decimals_;12 }显示全部 复制此函数修改了 >_decimals 变量,此变量用于设置用户接口如何计算金额。 您应该从构造函数里面调用。 在之后的任何时候调用都是不正当的, 应用程序一般不会处理。钩子12 /**3 * @dev Hook that is called before any transfer of tokens. This includes4 * minting and burning.5 *6 * Calling conditions:7 *8 * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens9 * will be to transferred to `to`.10 * - when `from` is zero, `amount` tokens will be minted for `to`.11 * - when `to` is zero, `amount` of ``from``'s tokens will be burned.12 * - `from` and `to` are never both zero.13 *14 * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].15 */16 function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }17}显示全部 复制这是转账过程中要调用的挂钩函数。 该函数是空的,但如果你需要 它做一些事情,只需覆盖它即可。总结复习一下,这些是我认为此合约中最重要的概念(你们的看法可能与我不同)区块链上没有秘密 智能合约可以访问的任何信息 都可以提供给全世界。您可以控制自己交易的订单,但在其他人的交易发生时, 则不能控制。 这就是为什么更改许可额度时会有风险,因为它 允许消费者花掉这两个许可额度的总和。uint256 类型值的溢出。 换言之,0-1=2^256-1。 如果这不是预期的 行为,您必须自行检查(或使用 SafeMath 库执行该服务)。 请注意, Solidity 0.8.0(opens in a new tab) 中对此进行了更改。将特定类型变量的状态改变放在一个特定的地方,这样可以使审核更容易。 这就是我们使用以下等函数的原因,例如 _approve 函数,它可以被approve、transferFrom、 increaseAllowance 和 decreaseAllowance 调用。状态更改应为最小操作单元,其中没有任何其他动作 (如在 _transfer 中所见)。 这是因为在状态更改期间,会出现不一致的情况。 例如, 在减少发送人的余额,和增加接收人的余额之间, 代币总量会小于应有总量。 如果在这两个时刻之间有任何操作, 特别是调用不同的合约,则可能出现滥用。现在您已经了解了 OpenZeppelin ERC-20 合约是怎么编写的, 尤其是如何使之更加安全,您即可编写自己的安全合约和应用程序。m上次修改时间: @mdranger(opens in a new tab), Invalid DateTime查看贡献者本教程对你有帮助吗?是否编辑页面(opens in a new tab)在本页面简介接口实际合约导入声明合约定义变量的定义构造函数用户接口函数读取代币信息代币转账许可额度函数修改代币信息的函数修改小数点设置变量钩子网站最后更新: 2024年2月16日(opens in a new tab)(opens in a new tab)(opens in a new tab)使用以太坊查找钱包获取以太币Dapps - 去中心化应用二层网络运行节点稳定币质押ETH学习学习中心什么是以太坊?什么是以太币 (ETH)?以太坊钱包Gas fees以太坊安全和预防欺诈措施什么是 Web3?智能合约以太坊能源消耗以太坊路线图以太坊改进提案 (Eip)以太坊的历史以太坊白皮书以太坊词汇表以太坊治理区块链桥零知识证明测试中心开发者开始体验相关文档教程通过编码来学习设置本地环境生态系统社区中心以太坊基金会以太坊基金会的博客(opens in a new tab)生态系统支持方案(opens in a new tab)以太坊漏洞悬赏计划生态系统资助计划以太坊品牌资产Devcon(opens in a new tab)企业级应用主网以太坊私密以太坊企业级应用关于ethereum.org关于我们工作机会参与贡献语言支持隐私政策使用条款缓存政策联系我们(opens in a new t

以太坊 / Tether USD (USDT) / 0xdac17f958d2ee523a2206206994597c13d831ec7 — Blockchair

以太坊 / Tether USD (USDT) / 0xdac17f958d2ee523a2206206994597c13d831ec7 — Blockchair

浏览器

区块链

Aptos

Arbitrum One

Avalanche

Base

Beacon Chain

比特币

比特币

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

第2层

Omni层

其他

价格

图表

节点浏览器

白皮書

广播交易

Testnet 浏览器

比特币现金

比特币现金

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

其他

价格

图表

节点浏览器

广播交易

BNB

BOB

Botanix

艾达币

达世币

达世币

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

其他

价格

图表

节点浏览器

广播交易

DigiByte

狗狗币

狗狗币

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

其他

价格

图表

节点浏览器

广播交易

电子现金

电子现金

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

其他

价格

图表

节点浏览器

广播交易

以太坊

以太坊

区块链

仪表盘

区块

叔块

交易

调用

内存池

交易

第2层

ERC-20

ERC-721 (NFT)

其他

价格

图表

广播交易

ENS Lookup

Ethereum Classic

Fantom

Gnosis Chain

闪电币

闪电币

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

其他

价格

图表

节点浏览器

广播交易

Handshake

KSM币

Linea

莱特币

莱特币

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

其他

价格

图表

节点浏览器

广播交易

门罗币

Moonbeam

opBNB

Optimism

Peercoin

波卡

Polygon

Polygon zkEVM

Rootstock

Sei EVM

Solana

恒星币

Telegram 开放网路

TRON

XRP Ledger

大零币

大零币

区块链

仪表盘

区块

交易

输出

地址

内存池

交易

输出

其他

价格

图表

节点浏览器

广播交易

稳定币

USDT

USDC

BUSD

Cross-chains explorers

Worldcoin

特色

数据

单一个API接口支持19个区块链

加入数以千计的加密公司、分析机构、学术机构的行列,他们正在使用 Blockchair 的 REST API 来获取数据并为他们的项目提供动力

数据库和全节点转储

将TSV文件放入您的数据库服务器即可开始您的分析。获取完整节点转储即可加快节点同步

图表

可视化区块链数据并比较跨区块链的趋势

ENS Lookup

Search Ethereum Name Service domain names

服务

匿名投资组合跟踪器

跟踪您的加密资产投资组合的表现 — 完全匿名

交易收据

为您或您的对手方获取PDF收据

Wallet statements

Get a report on your address holdings for any timeframe. Make your tax reporting and accounting less of a hassle.

Blockchair超棒

查找和比较超棒的区块链和加密产品和服务

新闻聚合器

了解60家最大的加密货币媒体的最新消息,11 种语言可用

Blockchair甜甜圈

捐赠超棒的非营利和开源项目,以帮助推广加密货币并减少纳税

比较区块链

按大小、手续费、每秒交易等来比较加密货币

更新监视器

跟踪即将到来的硬分叉和加密货币客户端的最新更新,例如 Bitcoin Core 和 Geth

广播交易

非公开地广播BTC、ETH、BCH、LTC、BSV、DOGE 和 GRS 的原始交易

减半倒计时

矿工、交易费和区块奖励

获取Blockchair拓展程序

Blockchair将17个区块链浏览器拓展到您的浏览器上

节点浏览器

了解节点可访问性、位置、共识等

CHIUSD

语言

CHI

语言

English

ENG

Español

SPA

Français

FRA

Italiano

ITA

Nederlands

DUT

Português

POR

Русский

RUS

中文

CHI

فارسی

PER

Вahasa Indonesia

IND

Türkçe

TUR

日本語

JPN

한국어

KOR

Deutsch

DEU

货币

USD

货币

Interface

日间模式

夜间模式

按系统偏好

Session

关闭3日广告

关闭JavaScript

本网站支持英语版,需要切换吗?

合作伙伴

伙伴关系

广告合作

开发人员使用

提交漏洞或请求

API说明

漏洞赏金计划

浏览器

特色

设置

其他

以太坊

ERC-20

Tether USD (USDT)

API

请求标识符

https://api.blockchair.com/ethereum/erc-20/0xdac17f958d2ee523a2206206994597c13d831ec7/stats

复制请求标识符

在新标签页中打开标识符

按 Ctrl 键在新标签页打开标识符

Token verified by Blockchair

stable

获得 7 个比特币

玩家和投注者在 1xBit.com 一起赢!

巨大的体育博彩

最佳赔率

快速付款

超过 40 种加密货币

轻松注册

多币种账户

特别持续的促销和奖金

7 比特币欢迎奖金

100% 投注保险

直播

使用促销代码 BLCHR1X 获得 125% 的首存红利!

准备好。 设置。打赌!

赞助商

Win 8.88 BTC

The best crypto casino with 3000+ slots, live casino games, and 300% deposit bonus. Get daily free spin up to 8.88 BTC

Welcome Bonus 300%

20% Rakeback

10% Cashback

Daily promo codes

Quick payments without restrictions

Huge sportsbook

Live streams

Simple and fast registration

Multi-currency account

Register now!

赞助商

Get $200 Daily

Hop in at Roobet and get 20% cashback for 7 Days.

Win your share of $100,000 with Roobet’s March Mayhem Giveaway. 4 - 31 March 2024.

Play the exclusive game Snoop’s Hot-Box or hop over to Roo's Lounge for Live games!

Deposits and withdrawals now available in USDT & XRP.

Lightning BTC deposits available.

Home to the top UFC Ambassadors!

Hop in on Roobet’s exclusive games, such as Crash, CoinFlip, and Mines.

4400+ games including slots, live casino, and more!

Hop In

赞助商

Claim 5 BTC

The Best Crypto Casino, up to 5BTC daily free bonus

Free tokens galore! 1000+ Games

1000%+ deposit bonus, withdraw anytime

Win big, withdraw fast

Spin & Claim Now

赞助商

200% Bonus

Join Drake at Stake - Provably Fair Casino & Sportsbook

Claim a 200% deposit bonus offer on signup!

Daily 100K Giveaways

Game shows, Slots, Live games & more

Proud sponsors of UFC, Alfa Romeo F1 team & Everton FC

Daily and Weekly Bonuses, Promos, Raffles and offers

Instant withdrawal options

Multiple Crypto options

Join Affiliate program

Unrivaled VIP Experience - dedicated manager

Your next big payout!

赞助商

赞助商

Advertise here

关闭广告

创建者

创建时间

6年前

{{ Math.abs(change) }}%

创建交易

0x2f1c5c2b44f771e942a8506148e256f94f1a464babc938ae0690c6e34cd79190

项目

https://tether.to

{{ Math.abs(change) }}%

市场数据

CoinMarketCap, CoinGecko, GeckoTerminal

{{ Math.abs(change) }}%

社交媒体

推特, Facebook, 电报, LinkedIn

{{ Math.abs(change) }}%

USDT 浏览器

BC.GAME - the best crypto casino. Up to 5 BTC daily bonus, 760% deposit bonus. Play now.

赞助商

Advertise here

关闭广告

Download

TODO: Make payment request form

[–] Choose amount select

[–] Custom amount input

[–] Payment amount text

[–] Recomended fee text

[–] Address: 0xdac17f958d2ee523a2206206994597c13d831ec7

Download invoice

地址

0xdac17f958d2ee523a2206206994597c13d831ec7

流通

47,002,891,788

USDT

{{ Math.abs(change) }}%

交易

230,723,763

{{ Math.abs(change) }}%

24小时内新交易

159,196

{{ Math.abs(change) }}%

24小时链上交易量

0.012573637458087999

USDT

{{ Math.abs(change) }}%

Blockchair超棒

查看可信任的加密项目和服务

探索“超棒”

Watch-Only Wallet

Keep track of your crypto assets without putting them at risk

Track assets

其它区块链搜索引擎

3xpl.com

etherscan.io

eth.blockscout.com

ethplorer.io

oraclus.com

最近代币交易

哈希值

区块

时间

发送人

接收者

总额

探索交易

{{ Number(totalRows).toLocaleString('en-US') }}

浏览器

Aptos

Arbitrum One

Avalanche

Base

Beacon Chain

比特币

比特币现金

BNB

BOB

Botanix

艾达币

达世币

DigiByte

狗狗币

电子现金

以太坊

Ethereum Classic

Fantom

Gnosis Chain

闪电币

USDT

USDC

BUSD

浏览器

Handshake

KSM币

Linea

莱特币

门罗币

Moonbeam

opBNB

Optimism

Peercoin

波卡

Polygon

Polygon zkEVM

Rootstock

Sei EVM

Solana

恒星币

Telegram 开放网路

TRON

XRP Ledger

大零币

数据

API

数据库转储

图表

ENS Lookup

服务

Blockchair新闻

Blockchair甜甜圈

Blockchair超棒

产品

交易收据

Wallet statements

投资组合跟踪

广播交易

隐私计量表

节点浏览器

更新监视器

减半倒计时

区块链对比

获取Blockchair拓展程序

更多信息

关于 Blockchair

常见问题

更新日志

加入我们

服务条款

隐私政策

Blockchair 洋葱v3链接

合作伙伴

伙伴关系

广告合作

Brand kit

开发人员使用

提交漏洞或请求

漏洞赏金计划

API说明

状态

社交平台

Twitter

Telegram

GitHub

LinkedIn

语言

English

Español

Français

Italiano

Nederlands

Português

Русский

中文

فارسی

Вahasa Indonesia

Türkçe

日本語

한국어

Deutsch

关于 Blockchair

常见问题

更新日志

加入我们

服务条款

© 2024 Blockchair

2.0.2-471-gc1825b068

[72]

Thu 29 Feb 2024 13:20:25 GMT –