智能合约区块链20
A. 鎬庝箞鏍锋彁鍙朎RC20浠
鎬庝箞鎻愬彇ERC20浠e竵
ERC20浠e竵鏄浠ュお鍧婄綉缁滀笂鐨勬櫤鑳藉悎绾︿唬甯侊紝鍥犳ゆ彁鍙朎RC20浠e竵闇瑕佷娇鐢ㄤ互澶鍧婇挶鍖呭拰鐩稿簲鐨勫尯鍧楅摼浜ゆ槗銆備互涓嬫槸鎻愬彇ERC20浠e竵鐨勬ラわ細
1.閫夋嫨涓涓閫傚悎鐨勪互澶鍧婇挶鍖呫傛瘮杈冨父鐢ㄧ殑閽卞寘鏈塎etaMask銆丮yEtherWallet鍜孡edgerNano绛夈
2.涓洪挶鍖呭厖鍊间互澶甯侊紙ETH锛夈傛彁鍙朎RC20浠e竵闇瑕佹敮浠樼噧姘旇垂鐢锛屽洜姝ゅ湪閽卞寘涓瀛樺偍涓瀹氭暟閲忕殑浠ュお甯侀潪甯搁噸瑕併
3.鎵撳紑閽卞寘骞舵煡鎵锯滄坊鍔犱唬甯佲濋夐」銆傛牴鎹涓嶅悓鐨勯挶鍖咃紝姝ら夐」鐨勪綅缃鍙鑳芥湁鎵涓嶅悓锛屼絾涓鑸鍙浠ュ湪鈥滆祫浜р濄佲滀唬甯佲濇垨鈥滃悎绾︹濋夐」涓嬫壘鍒般
4.杈撳叆ERC20浠e竵鐨勫悎绾﹀湴鍧銆佷唬甯佺﹀彿鍜屽皬鏁颁綅鏁般傚彲浠ュ湪浠e竵鍙戣屾柟鐨勭綉绔欍佷互澶鍧婃祻瑙堝櫒锛堜緥濡侲therscan锛夋垨鍏朵粬娓犻亾涓鎵惧埌杩欎簺淇℃伅銆
5.绛夊緟浠e竵娣诲姞瀹屾垚鍚庯紝鍦ㄩ挶鍖呬腑鏌ョ湅浠e竵浣欓濄
6.杞绉籈RC20浠e竵銆傚湪閽卞寘涓閫夋嫨鈥滃彂閫佲濋夐」锛岃緭鍏ユ帴鏀跺湴鍧鍜屼唬甯佹暟閲忥紝纭璁や氦鏄撲俊鎭鍚庡彂閫佷氦鏄撱
7.绛夊緟浜ゆ槗纭璁ゃ備氦鏄撻渶瑕佸湪浠ュお鍧婄綉缁滀笂寰楀埌纭璁ゆ墠鑳芥垚鍔燂紝纭璁ゆ椂闂村彇鍐充簬鐕冩皵璐圭敤鍜岀綉缁滅箒蹇欑▼搴︺
浠ヤ笂鏄鎻愬彇ERC20浠e竵鐨勫熀鏈姝ラゃ傞渶瑕佹敞鎰忕殑鏄锛屾彁鍙朎RC20浠e竵闇瑕佷竴瀹氱殑鍖哄潡閾剧煡璇嗗拰鎿嶄綔缁忛獙锛屽姟蹇呬粩缁嗙‘璁や氦鏄撲俊鎭骞朵繚绠″ソ閽卞寘绉侀挜銆
B. erc20和trc20的区别
erc20和trc20的区别如下:
1、地址样式不同:地址样式上erc20是数字0和小写x开头,trc20则是以大写字母T开头。
2、使用网络不同:使用网络上erc20是基于以太坊存在的,trc20是波场网络。
3、安全性不同:安全性上erc20安全性较高,trc20则相对较低。
erc20:
USDT-ERC20是Tether泰达公司基于ETH网络发行的USDT,充币地址是ETH地址,充提币走ETH网络。USDT-ERC20使用的是ERC20协议。2018年初,以太坊网络爆红,智能合约普及于区块链应用,ERC20-USDT出现。
C. ERC20代币的六个基本功能是什么
为了创建ERC20令牌,你需要记下以下内容
- 代币名称代
- 币符号代
- 币小数
- 位代币数量为流通
- 合约
- 代号验证源代码
除了ERC20之外,还有ERC20,ERC721,ERC223,ERC621,ERC827, 具体不做累述,但是对ERC721顺便说一下, ERC721是主要用于区块链游戏的协议,大家经常看到的区块链游戏基本上是基于ERC721。
D. 一文读懂以太坊—ETH2.0,是否值得长期持有
这几天一直在看关于ETH伦敦升级方面的资料,简单的聊一下,在加密货币的世界里,无论是投资机构、区块链应用开发者、矿机商,还是个人投资者、硬件供应商、 游戏 行业从业者等等,提起以太坊,或多或少都会有一些了解。
一方面取决于以太坊代币 ETH 本身的造富效应。从 2014 年首次发行以来,投资回报率已经超过 7400 倍。
另一方面,以太坊作为应用最广泛的去中心应用编程平台,引来无数开发者在其之上开发应用。这些应用不仅产生了巨大的商业价值,伴随 DEFI 生态、NFT 生态、DAO 生态蓬勃发展,也给 ETH 带来了更多使用者。
随着“伦敦升级计划”临近,ETH 再次聚集所有人的关注目光。
以太坊 2.0 到底是什么?包含哪些升级?目前进展如何?
以太坊 2.0 到来,会对现有以太坊生态的去中心化应用产生哪些影响?
ETH 是否值得持续投资?看完相信你会有自己的判断。
如果将搭建应用比作造房子,那么以太坊就提供了墙面、屋顶、地板等模块,用户只需像搭积木一样把房子搭起来,因此在以太坊上建立应用的成本和速度都大大改善。以太坊的出现,迅速吸引了大量开发者进入以太坊的世界编写出各类去中心应用,极大丰富人们对去中心应用场景的需求。
以太坊应用开发模型示意
以太坊与ETH
现有市场的加密货币,只是在区块链技术应用在某一场景下的单一代币。
以太坊也不例外,它的完整项目名称是“下一代智能合约与去中心化应用平台”,Ether(以太币)是其原生加密货币,简称 ETH。
ETH 除了可以用来与各种类型数字资产之间进行有效交换,还提供支付交易费用的机制,即我们现在做链上操作时所支付的 GAS 费用。GAS 费用机制的出现,即保护了以太坊网络上创建的应用不会被恶意程序随意滥用,又因为 GAS 收入归矿工所有,让更多的用户参与到以太坊网络的记账当中成为矿工,进一步维护了以太坊网络安全与生态发展。
与 BTC 不同的是,ETH 并没有采用 SHA256 挖矿算法,避免了整个挖矿生态出现由 ASIC(专用集成电路)矿机主导以至于大部分算力被中心化机构控制所带来的系统性风险。
以太坊最初采用的是 PoW(Proof of Work)的工作量证明机制,人们需要通过工作量证明以获取手续费回报。我们经常听说矿工使用显卡挖矿,他们做的就是 POW 工作量证明。显卡越多,算力越大,那么工作量就越大,收入也就越高。
当前,整个以太坊网络的总算力大约为 870.26 TH/s,用我们熟悉的消费级显卡来对比,英伟达 RTX 3080 的显卡算力大约为 92-93 MH/s,以太坊网络相当于 936 万张 3080 显卡算力的总和。
以太坊白皮书内非常明确提到之后会将 PoW 工作证明的账本机制升级为 POS (Proof of Stake)权益证明的账本机制。
ETH经济模型
与 BTC 总量 2100 万枚不同,ETH 的总量并没有做上限,而是在首次预售的 ETH 数量基础上每年增发,增发数量为 0.26x(x 为发售总量)。
但也不用担心 ETH 会无限通胀下去,长期来看,每年增发币的数量与每年因死亡或者粗心原因遗失币的数量大致相同,ETH 的“货币供应增长率”是趋近于零的。
ETH 分配模型包含早期购买者,早期贡献值,长期捐赠与矿工收益,具体分配比例如下表。
现在每年将有 60,102,216 * 0.26 = 15,626,576 个 ETH 被矿工挖出,转成 PoS 后,每年产出的 ETH 将减少。
目前,市场上流通的 ETH 总量约为 116,898,848 枚,总市值约为 2759 亿美元。
以太坊发展历程
1. 边境阶段(2015年):上线后不久进行了第一次分叉,调整未来挖矿的难度。此版本处于实验阶段,技术并未成熟,最初只能让少部分开发者参与挖矿,智能合约也仅面向开发者开发应用使用,并没有用户参与,以太坊网络处于萌芽期。
边境阶段 ETH 价格:1.24 美元。
2. 家园阶段(2016年):以太坊主网于 2016 年 3 月进行了第二次分叉,发布了第一个稳定版本。此版本是第一个成熟的正式版本,采用 100% PoW 证明,引入难度炸弹,随着区块链数量的增加,挖矿难度呈指数增长,网络的性能大幅提升,以太坊项目也进入到快速成长期。在”家园“版本里,还发生了著名的”The DAO 攻击事件“,以太坊被社区投票硬分叉为以太坊(ETH)与以太经典(ETC)两条链,V 神站在了 ETH 这边。
家园阶段 ETH 价格:12.50 美元。
3. 都会阶段(2017~2019年):都会的开发又分为三个阶段,升级分成了三次分叉,分别是 2017 年 10 月的“拜占庭”、2019 年 2 月底的“君士坦丁堡“、以及 2019 年 12 月的“伊斯坦布尔”。这些升级主要改善智能合约的编写、提高安全性、加入难度炸弹以及一些核心架构的修改,以协助未来从工作量证明转至权益证明。
在都会阶段,以太坊网络正式显现出其威力,正式进入成熟期。智能合约让不同链上的加密货币可以互相交易,ERC-20 也在 2017 代币发行的标准,成千上万个项目在以太坊网络进行募资,被称作“首次代币发行(ICO)”,相信很多币圈的老人都是被当时 ICO 造富效应带进来的。到 2019 年,随着DeFi 生态的崛起,金融产品正式成为以太链上最大的产业。
都会阶段 ETH 价格:151.06 美元。
4. 宁静阶段(2020-2023年):与都会分三阶段开发相同,宁静阶段目前预计分成三次分叉:柏林(已完成)、伦敦(即将到来)、以及后面的第三次分叉。“宁静”阶段又称为“以太坊 2.0”,是项目的最终阶段,以太坊将从工作量证明方式正式转向权益证明,并开发第二层扩容方案,提高整个网络的运行效率。
宁静阶段可以说是以太坊网络的集大成之作,如果说前个三阶段只是让以太坊的愿景展现的实验平台,宁静阶段之后的以太坊,将正式成为完全体,不仅有完备的生态应用,超级快的处理速度,众多网络协同发展,而且 PoS 机制会非常节约能源,真正代表了区块链技术逐渐走向成熟的标志。
宁静阶段 ETH 价格:2021 年 4 月 15 日完成的柏林阶段,当天价格为 2454 美元。
即将到来的伦敦协议升级
以太坊生态
以太坊的生态发展,从属性划可分为两大类:一是以太坊网络生态应用建设,二是以太坊网络扩容建设。两者相互融合,互相成就,应用需要更健壮强大的网络作为承载,网络需要功能完善的应用场景服务用户。
先说应用生态,以太坊的生态我们又可以分为以下几大类:
1. 去中心化自制组织(DAO)生态
什么是去中心化自制组织?还是以我们熟悉的比特币举例:比特币目前市值七千多亿美金,在全球资产市值类排名第九,但比特币并不是某一公司发布的产品,也没有特定公司组织招聘人员进行维护。比特币现有的一切,都源于比特币持有者、比特币矿工自发形成的分布式组织,他们通过投票方式规划比特币发展路线,自发参与维护比特币程序与网络 —这仅仅因为只要拥有比特币,所有人都是比特币网络建设中的受益者,一切维护都源于自身的利益关系。
比特币的发明与成功运行,突破了由荷兰人创建、至今流行 400 多年的公司商业架构,开创出一种全新的、无组织架构的、全球分布式的商业模式,这就是 DAO。
再说回以太坊,以太坊的 DAO 可以由智能合约编写,用户自定义应用场景。简单说就是我们规定出程序执行条件与执行范围,真实世界里只要触发设定好的条件,程序就会自动执行运行,且所有过程都会在以太坊的网络上进行去中心化公开验证,不需要经过人工或者任何第三方组织机构确认。
以太坊 DAO 生态演化出许多商业场景,有慈善机构使用 DAO 建立公开透明的捐款与使用机制,有风投机构使用 DAO 建立公平分配的风险基金。
以太坊生态的很多项目都采用 DAO 自治,代表项目有:Uniswap,AAVE,MakerDAO,Compound,Decred,Dash 等。
2. 去中心化金融(DEFI)生态
在传统商业世界里,我们如果需要借钱、存钱,或者买某一公司股票,或者做企业贷款、融资,只要是进行金融活动,总离不开与银行、证券机构、会计事务所这些金融机构打交道。
而在去中心的世界里,区块链本质就是集合所有人交易记录且公开的大账本,我们可以非常容易的追溯到每一个钱包地址发生过的每一笔交易,查询到任意一个钱包地址的余额信息,从而对钱包地址里的资产做评估。
举个例子:全世界个人贷款最贵的国家是印度,印度的年轻人房贷利率目前是 8.8%,最高曾经到过 20%;与此对应,全世界个人存款利率最低的国家是日本,日本政府为了鼓励民众消费,在很长一段时间里银行存款利率是负值,日本人在银行存款不仅没有利息,还要给银行交保管费。理论上,如果日本人将自己的存款借与印度人,双方都能获得利益最大化,但现实生活中这样的场景很难发生。一是每个国家都有外汇管制,日本人的钱并不容易能给到印度人,二是印度人的信用如何日本人也不好评估,大家没有统一标准,万一借出去的钱无法归还,不能没了收益还要蒙受损失。
但在去中心的世界里,这样的事情就简单的多。
如果印度人的钱包地址里有比特币,我们就可以利用智能合约,印度人将自己的比特币质押进去,根据比特币当时的价格,系统自动给印度人一个授信额度,印度人就可以拿着这个额度去和日本人借款,并规定好还款的周期与利率。如果印度人违约,合约自动将印度人质押进去的比特币扣除,优先保障日本的权利,这样,日本人不用担心安全问题放心享受收益,印度人也有了更多的款项做为流动资金。
这个例子就是去中心金融的简单应用,实际上,这就是我们参与 DEFI 挖矿是质押理财的原理 —— 当然真正应用实现算法与场景要复杂的多。
DEFI 根据场景不同,又可以分为很多赛道,比如稳定币、预言机、AMM 交易所、衍生品、聚合器等等。
DEFI 代表项目有:Dai,Augur,Chainlink,WBTC,0x,Balance,Liquity 等。
3. 非同质化代币(NFT)生态
世界名画《蒙娜丽莎》,只有达·芬奇的原版可以展览在法国卢浮宫博物馆,哪怕现代的技术可以无比精细地复刻出来,仿品都不具备原版的收藏价值。
这就是 NFT 的应用场景。NFT是我们可以用来表示独特物品所有权的代币,它们让我们将艺术品、收藏品甚至房地产等现实事物唯一代币化。虽然文件(作品)本身是可以无限复制,但代表它们的代币在链上可以被追踪,并为买家提供所有权证明。
相比现实中实物版权、物权的双重交割相比,NFT 只需要交割描述此物品的唯一代币。NFT 作品往往存储在如 IPFS 这样的分布式存储网络里,随用随取,永不丢失,加之交割简单方便,很快吸引了大量玩家与投资者收藏转卖,NFT 出现也给艺术家提供了全新的收入模式。
类似 DEFI 生态,NFT 生态根据应用场景不同也产生了不同赛道,目前比较火热的赛道有 NFT 交易平台,NFT 游戏 平台,NFT 艺术品平台, NFT 与 DEFI 结合在一起的金融平台。
NFT 代表项目有:CryptoKitties,CryptoPunks,Meebits,Opensea,Rally,Axie Infinity,Enjin Coin,The Sandbox 等。
4. 标准代币协议(ERC-20)生态
与 NFT 非同质化代币所对应的,就是同质化代币。比如我们使用的人民币就是一种同质化代币,我们可以用人民币进行价值交换,即使序号不同也不影响其价值,如果面额相同,不同的钞票序号对持有者来说没有区别。
BTC,ETH 和所有我们熟知的加密货币,都属于同质化代币。同种类的一个比特币和另一个比特币没有任何区别,规格相同,具有统一性。在交易中,只需关注代币交接的数量即可,其价值可能会根据交换的时间间隔而改变,但其本质并没有发生变化。
以太坊的 ERC-20 就是定义这种代币的标准协议,任何人都可以使用 ERC-20 协议,通过几行代码,发布自己在以太坊网络上的加密货币。
现在,以太坊网络上运行的代币种类有上百万个,上边提到的项目,大多也在以太坊网络中发布了自己的同质化代币。
ERC-20 代表项目有:USDT,USDC,WBTC 等。
以太坊网络扩容性
我们先引入一个概念:区块链的不可能三角,即无论何种方法,我们都无法同时达到可扩展、去中心化、安全,三者只能得其二。
这其实很好理解,如果我们要去中心化和安全,就需要更多有节点参与网络进行验证,从而导致验证人增多、网络效率降低,扩展性下降。网络性能建设就是在三者之间找到平衡点。
用数据举例,目前比特币可处理转账 7 笔 / 秒,以太坊是 25 笔 / 秒,而 VISA 平均为 4500 笔 / 秒,峰值则达每秒上万笔。这种业务处理能力的差别,我们就可以简单理解为是「吞吐量」的差距。而想要提高吞吐量,则需要扩展区块链的业务处理能力,这就是所谓的扩展性。
根据优化方法不同,以太坊网络性能扩容方案可以分为:
1. Layer 1 链上扩展,所有交易都保留在以太坊上的扩展解决方案,具有更高的安全性。
链上扩展的本质还是改进以太坊主链本身,使整个系统拥有更高的拓展性与运行效率。一般的方法有两种,要么改变共识协议,比如 ETH 将从 PoW 转变为 PoS;要么使用分片技术,优化方法使网络具有更高效率。
2. Layer 2 链下扩展,在以太坊协议之上分层单独做各场景解决方案,具有更好的扩展性。
链下扩展可以理解为把计算、交易等业务处理场景拿到以太坊主链之外计算,最后将计算好的结果传回主链,主链只反映最终的结果而不用管过程,这样,无论多么复杂的应用都不会对主链产生影响。
我们并不需要明白具体技术实现,只需知道:相比 Layer 1 方案,Layer 2 方案网络不会干扰底层区块链协议,可以替 Layer 1 承担大部分计算工作,从而降低主网络的负担提高网络业务处理效率,是目前公认比较好的扩容方案。
以太坊2.0
终于讲到以太坊 2.0,回到主题。
通过回顾以太坊的发展 历史 ,以太坊 2.0 并不是新项目,它只是以太坊开发进程的最后一个阶段,它将由整个以太坊生态多个团队协同完成,目标是使以太坊更具可扩展性、更安全和更可持续,最终成为主流并为全人类服务。
ETH2建设目标:
1. 更具可扩展性。每秒支持 1000 次交易,以使应用程序使用起来更快、更便宜。
2. 更安全。以太坊变得更加安全,以抵御所有形式的攻击。
3. 更可持续。提高网络性能的同时减少对能源的消耗,更好地保护环境。
最重要的变化,ETH2 将从 ETH1 使用的 PoW(Proof of Work)工作量证明机制升级为 POS (Proof of Stake)权益证明机制。不再以算力做为验证方式,而是通过质押加密货币的数量做为验证手段。矿工不需要显卡也能挖矿,既节省了时间成本与电力成本,又提高了 ETH 的利用率,非常类似钱存在银行获得利息。
ETH2 主要使用的技术是分片分层技术实现整个网络扩容。
ETH2 升级将分为三个阶段进行:
1. 阶段0(正在进行):信标链的创建与合并。信标链是 ETH2 的主链,如同人类的大脑,是 ETH2 得以运行的基础。
2. 阶段1(预计2022年):分片链的创建与应用。当信标链与 ETH1 合并完成后,就进入分片链的开发阶段。分片链可以理解为将 ETH2 主链的整块数据按一定规则拆分存放,单独建立新链处理,用来分担主链上的数据压力,目前规划是建立 64 条分片链。
举个例子,从北京到上海,原来的交通工具只有一条公路,所有的车辆都需要在上边运行,就会非常拥挤;现在通过分片技术,多出来高铁、飞机等交通方式,分流的车辆同时到达速度更快,这就是分片链起到的作用。
分片链与主链交互示意图
3. 阶段2(预计2023年):整个网络功能的融合。到了此阶段,整个系统的功能全面开始融合,分片链的功能会更加强大,新的处理机制开始支持账户、智能合约、开发工具的创建,新的生态应用等。
此阶段是以太坊网络的最终形态,网络性能得到全面提升,生态应用全面爆发。但要服务全人类,ETH2 每秒 1000 次的交易效率显然还是远远不够,以太坊也会为它的目标持续优化下去。
ETH2对于大家有什么影响?
1. 对于以太坊生态开发者。ETH2 在部署应用的时候,是需要选择应用在哪条分片网络进行部署,造成这种差异的原因是跨分片通信不同步,这就意味着开发者需要根据自己发展计划做不同的组合。
2. 对与 ETH 持币者。ETH2 与 ETH1 数据完全同步,代币也不会有任何变化,你可以继续使用现在的钱包地址继续持有 ETH。
3. 对于矿工。虽然 PoW 与 PoS 还会并行一段时间,可以预计的 PoW 矿机的产出会越来越少,应该开始减少 PoW 矿机的投资,开始转向 PoS 机制。
4. 对于用户。ETH2 速度更快,交易手续费更低,网络体验会非常好,唯一值得注意的是,由于 Dapp 部署在不同的分片网络上,可能需要手动选择应用的网络选项。
ETH是否值得投资?
ETH 是除了 BTC 以外市场的风向标,明确了解 ETH2 非常有助于我们理解其他区块链项目,理解二级市场。
简单总结几个点吧:
1. 通过以太坊的项目分析,我们可以清晰地看到:在比特币之后,以太坊项目的发展史就是目前区块链应用生态的发展史。无论 DEFI 生态,NFT 生态,DAO 生态还是代币、合约、协议生态,其实在以太坊发布白皮书时已有预见,后来出现的项目,都是围绕以太坊做验证。
2. 以太坊的联合创始人里,只有 V 神还在为以太坊事业做贡献,但这并不影响以以太坊繁荣发展。以太坊初始团队只是创建了它,后续的发展是社区、开发者、矿工与用户共同建立的结果,现在的以太坊早已不是某一个人的思维,它是所有以太坊生态参与者共同的结晶,它属于全人类。
3. 以太坊在过去的几年一直沿着既定的开发轨迹发展,虽然中途一度出现过危机,以太坊“被死亡”了好几百次,以太坊还是顽强的发展下来,并且拥有了繁荣生态。ETH2 还要两三年时间才能落地,中间也充满变数,比如其他的公链抢占先机,但可以预见,ETH2 后的以太坊会更加健壮。
4. 不要在抱有任何 BTC 会死亡,区块链行业会消失这样的伪命题。BTC、ETH 让我们看到了突破原有公司组织架构,一种全新无组织架构的商业模式存在,这种商业模式显然更符合这个时代的发展需求,无论项目地发起团队在不在,无论各国政府如何打压,只要技术对人类有贡献,就会由人员自发组织维护,区块链技术是革命。
5. ETH2 的上线,短期看 PoW 奖励与 PoS 奖励并行,可能会让 ETH 总通胀率短期内飙升,长期看 ETH 通胀率始终保持平衡。加上 ETH 本身的生态与应用场景,ETH是值得投资的,目前看不到有其他公链代替以太坊公链的可能性,ETH2 的上线,甚至会对其他公链造成“虹吸效应”,万链归一。
#比特币[超话]# #数字货币#
E. 波场发币教程TRC20发币教程TRX发币教程波场代币智能合约发币教程
波场链的币种叫TRC20代币,部署到TRX的主网上,波场发币教程也很简单,一起学习下吧,波场发币教程TRC20发币教程TRX发币教程波场代币智能合约发币教程,不会的退出阅读模式,我帮你代发
TRC-20
TRC-20是用于TRON区块链上的智能合约的技术标准,用于使用TRON虚拟机(TVM)实施代币。
实现规则
3 个可选项
通证名称
string public constant name = “TRONEuropeRewardCoin”;
通证缩写
string public constant symbol = “TERC”;
通证精度
uint8 public constant decimals = 6;
6 个必选项
contract TRC20 {
function totalSupply() constant returns (uint theTotalSupply);
function balanceOf(address _owner) constant returns (uint balance);
function transfer(address _to, uint _value) returns (bool success);
function transferFrom(address _from, address _to, uint _value) returns (bool success);
function approve(address _spender, uint _value) returns (bool success);
function allowance(address _owner, address _spender) constant returns (uint remaining);
event Transfer(address indexed _from, address indexed _to, uint _value);
event Approval(address indexed _owner, address indexed _spender, uint _value);
}
totalSupply()
这个方法返回通证总的发行量。
balanceOf()
这个方法返回查询账户的通证余额。
transfer()
这个方法用来从智能合约地址里转账通证到指定账户。
approve()
这个方法用来授权第三方(例如DAPP合约)从通证拥有者账户转账通证。
transferFrom()
这个方法可供第三方从通证拥有者账户转账通证。需要配合approve()方法使用。
allowance()
这个方法用来查询可供第三方转账的查询账户的通证余额。
2 个事件函数
当通证被成功转账后,会触发转账事件。
event Transfer(address indexed _from, address indexed _to, uint256 _value)
当approval()方法被成功调用后,会触发Approval事件。
event Approval(address indexed _owner, address indexed _spender, uint256 _value)
合约示例
pragma solidity ^0.4.16;
interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) external; }
contract TokenTRC20 {
// Public variables of the token
string public name;
string public symbol;
uint8 public decimals = 18;
// 18 decimals is the strongly suggested default, avoid changing it
uint256 public totalSupply;
// This creates an array with all balances
mapping (address => uint256) public balanceOf;
mapping (address => mapping (address => uint256)) public allowance;
// This generates a public event on the blockchain that will notify clients
event Transfer(address indexed from, address indexed to, uint256 value);
// This notifies clients about the amount burnt
event Burn(address indexed from, uint256 value);
/**
* Constructor function
*
* Initializes contract with initial supply tokens to the creator of the contract
*/
function TokenTRC20(
uint256 initialSupply,
string tokenName,
string tokenSymbol
) public {
totalSupply = initialSupply * 10 ** uint256(decimals); // Update total supply with the decimal amount
balanceOf[msg.sender] = totalSupply; // Give the creator all initial tokens
name = tokenName; // Set the name for display purposes
symbol = tokenSymbol; // Set the symbol for display purposes
}
/**
* Internal transfer, only can be called by this contract
*/
function _transfer(address _from, address _to, uint _value) internal {
// Prevent transfer to 0x0 address. Use burn() instead
require(_to != 0x0);
// Check if the sender has enough
require(balanceOf[_from] >= _value);
// Check for overflows
require(balanceOf[_to] + _value >= balanceOf[_to]);
// Save this for an assertion in the future
uint previousBalances = balanceOf[_from] + balanceOf[_to];
// Subtract from the sender
balanceOf[_from] -= _value;
// Add the same to the recipient
balanceOf[_to] += _value;
emit Transfer(_from, _to, _value);
// Asserts are used to use static analysis to find bugs in your code. They should never fail
assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
}
/**
* Transfer tokens
*
* Send `_value` tokens to `_to` from your account
*
* @param _to The address of the recipient
* @param _value the amount to send
*/
function transfer(address _to, uint256 _value) public {
_transfer(msg.sender, _to, _value);
}
/**
* Transfer tokens from other address
*
* Send `_value` tokens to `_to` on behalf of `_from`
*
* @param _from The address of the sender
* @param _to The address of the recipient
* @param _value the amount to send
*/
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
require(_value <= allowance[_from][msg.sender]); // Check allowance
allowance[_from][msg.sender] -= _value;
_transfer(_from, _to, _value);
return true;
}
/**
* Set allowance for other address
*
* Allows `_spender` to spend no more than `_value` tokens on your behalf
*
* @param _spender The address authorized to spend
* @param _value the max amount they can spend
*/
function approve(address _spender, uint256 _value) public
returns (bool success) {
allowance[msg.sender][_spender] = _value;
return true;
}
/**
* Set allowance for other address and notify
*
* Allows `_spender` to spend no more than `_value` tokens on your behalf, and then ping the contract about it
*
* @param _spender The address authorized to spend
* @param _value the max amount they can spend
* @param _extraData some extra information to send to the approved contract
*/
function approveAndCall(address _spender, uint256 _value, bytes _extraData)
public
returns (bool success) {
tokenRecipient spender = tokenRecipient(_spender);
if (approve(_spender, _value)) {
spender.receiveApproval(msg.sender, _value, this, _extraData);
return true;
}
}
/**
* Destroy tokens
*
* Remove `_value` tokens from the system irreversibly
*
* @param _value the amount of money to burn
*/
function burn(uint256 _value) public returns (bool success) {
require(balanceOf[msg.sender] >= _value); // Check if the sender has enough
balanceOf[msg.sender] -= _value; // Subtract from the sender
totalSupply -= _value; // Updates totalSupply
emit Burn(msg.sender, _value);
return true;
}
/**
* Destroy tokens from other account
*
* Remove `_value` tokens from the system irreversibly on behalf of `_from`.
*
* @param _from the address of the sender
* @param _value the amount of money to burn
*/
function burnFrom(address _from, uint256 _value) public returns (bool success) {
require(balanceOf[_from] >= _value); // Check if the targeted balance is enough
require(_value <= allowance[_from][msg.sender]); // Check allowance
balanceOf[_from] -= _value; // Subtract from the targeted balance
allowance[_from][msg.sender] -= _value; // Subtract from the sender's allowance
totalSupply -= _value; // Update totalSupply
emit Burn(_from, _value);
return true;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
}
Next Previous
就是这么简单,你学会了吗?
F. 浠涔堟槸鏅鸿兘鍚堢害锛熷拰鍖哄潡閾炬槸浠涔堝叧绯伙紵
鍦ㄧ戞妧鐨勬氮娼涓锛屾櫤鑳藉悎绾︿笌鍖哄潡閾剧殑鍏崇郴灏卞儚鐞寸憻鍜岄福锛屽叡鍚屾瀯寤轰簡鏁板瓧缁忔祹鐨勬柊鍩虹煶銆備粖澶╋紝鎴戜滑灏辨潵娣卞叆鎺㈣ㄨ繖涓や釜姒傚康锛岃╁畠浠鐨勫唴娑靛湪浣犲績涓娓呮櫚璧锋潵銆
鏅鸿兘鍚堢害锛氭湭鏉ョ殑鍚堝悓鎵ц岃
鎯宠薄涓涓嬶紝鏅鸿兘鍚堢害灏卞儚涓涓鑷鍔ㄦ墽琛岀殑娉曞緥鏈哄櫒浜猴紝鏃犻渶浜哄伐骞查勶紝瀹冨湪鍖哄潡閾捐繖涓閫忔槑鐨勮垶鍙颁笂杩愯屻傛瘮濡傦紝鑷鍔ㄥ敭璐ф満灏辨槸涓涓绠鍗曠殑鏅鸿兘鍚堢害瀹炰緥锛岀敤鎴烽夋嫨鍟嗗搧骞朵粯娆撅紝鏈哄櫒渚夸細鑷鍔ㄤ氦浠橈紝鏃犻渶淇′换绗涓夋柟锛屽洜涓虹▼搴忚惧畾鐨勮勫垯涓嶅彲鏇存敼銆備俊鐢ㄥ崱鑷鍔ㄨ繕娆句篃鏄鏅鸿兘鍚堢害鐨勪綋鐜帮紝璁惧畾濂芥潯浠跺悗锛屽埌鏈熻嚜鍔ㄦ墸娆撅紝杩欏氨鏄涓娈靛祵鍏ュ尯鍧楅摼鐨勪唬鐮侊紝涓鏃﹁Е鍙戯紝渚跨珛鍗崇敓鏁堛
鏅鸿兘鍚堢害鐨勬牳蹇冧环鍊煎湪浜庢彁渚涘畨鍏ㄣ侀珮鏁堢殑浜ゆ槗鏂瑰紡锛屽畠鍦ㄥ幓涓蹇冨寲鐜澧冧腑杩愯岋紝鏃犻渶绗涓夋柟浠嬪叆锛岀‘淇濅氦鏄撶殑鍏姝fс傝屼笖锛屼竴鏃﹀悎鍚屾潯娆捐璁惧畾锛屼究鏃犳硶鏇存敼锛屽傚悓娉曞緥鏂囦欢锛屽叿鏈夋瀬楂樼殑鎵胯烘墽琛屽姏銆
鍖哄潡閾句笌鏅鸿兘鍚堢害鐨勪氦铻
鏅鸿兘鍚堢害鏄鍖哄潡閾炬妧鏈鐨勭伒榄傦紝涓よ呯浉杈呯浉鎴愩傚尯鍧楅摼浣滀负鍒嗗竷寮忚处鏈锛屼负鏅鸿兘鍚堢害鎻愪緵浜嗚繍琛岀殑骞冲彴鍜岀幆澧冿紝姣忎竴绗斾氦鏄撻兘鍦ㄩ摼涓婂叕寮閫忔槑锛岀‘淇濅簡淇℃伅鐨勭湡瀹炴с傛櫤鑳藉悎绾︾殑鎵ц屼緷璧栦簬鍖哄潡閾剧殑涓嶅彲绡℃敼鎬э紝涓鏃﹁揪鎴愬叡璇嗭紝浜ゆ槗灏变細琚姘镐箙璁板綍锛屼笉鍙鎾ら攢銆
鏅鸿兘鍚堢害鐨勫箍娉涘簲鐢ㄥ凡缁忚Е鍙婂氫釜棰嗗煙锛屾瘮濡傚尰鐤楄屼笟锛岄氳繃涓庤块棶鎺у埗鏈哄埗缁撳悎锛屾櫤鑳藉悎绾︾‘淇濅簡鍖荤枟鏁版嵁鐨勫畨鍏ㄥ叡浜锛岃В鍐充簡淇′换闂棰樸傝屽湪浼楃归嗗煙锛屽尯鍧楅摼鏅鸿兘鍚堢害瑙e喅浜嗗钩鍙伴忔槑搴﹀拰璧勯噾绠$悊鐨勯棶棰橈紝浣垮緱浼楃瑰彉寰楁洿鍔犲叕骞冲拰楂樻晥銆
鐒惰岋紝濡傚悓浠讳綍鏂扮敓浜嬬墿锛屾櫤鑳藉悎绾﹀苟闈炲畬缇庢棤缂恒傚尯鍧楅摼鎶鏈鐨勫彂灞曚粛澶勪簬鎺㈢储闃舵碉紝瀹夊叏婕忔礊绛夋寫鎴樺皻寰呰В鍐炽傚洜姝わ紝瀵逛簬鍖哄潡閾炬姇璧勶紝鎴戜滑闇淇濇寔璋ㄦ厧锛屾寔缁鍏虫敞鍏惰繘姝ヤ笌鏀硅繘銆
鍦ㄨ繖涓鍏呮弧鏈洪亣鍜屾寫鎴樼殑鏃朵唬锛屽崡涔濇効鎰忎笌浣犱竴鍚屽︿範锛岀敤鍏ㄦ柊鐨勮嗚掕В鏋愭櫤鑳藉悎绾︿笌鍖哄潡閾剧殑濂ョ樸傛棤璁轰綘鏄鍖哄潡閾剧殑鑰佹墜杩樻槸鏂版墜锛屾㈣繋鍔犲叆鎴戜滑鐨勮ㄨ猴紝璁╂垜浠鍏卞悓鎺㈢储杩欎釜鍏呮弧鏃犻檺鍙鑳界殑棰嗗煙銆
G. erc20是什么币
ERC20是以太坊区块链上的一种代币标准,它被广泛应用于区块链项目的众筹,是一种数字货币,可以用于交易,支付,投资等多种用途。本文将对ERC20的定义、特性、优缺点、应用以及发展前景进行详细介绍。
1. 什么是ERC20
2. ERC20的特性
3. ERC20的优点
4. ERC20的缺点
5. ERC20的应用
6. ERC20的发展前景
1. 什么是ERC20
ERC20是以太坊区块链上的一种代币标准,它是一种数字货币,可以用于交易,支付,投资等多种用途。ERC20是一种基于智能合约的标准,它被广泛应用于区块链项目的众筹,是一种以太坊代币的标准。ERC20代币是通过以太坊智能合约生成的,它们可以在以太坊区块链上进行转账,支付和交易。
2. ERC20的特性
ERC20代币具有许多独特的特性,其中最重要的是可编程性、可交易性、可追踪性和可审计性。它可以被编程以实现更多功能,可以在以太坊区块链上进行交易,可以追踪代币的流动情况,还可以进行审计,以确保资金安全。
3. ERC20的优点
ERC20代币余闷的优点在于它可以支持以太坊区块链上的众筹项目,这些众筹项目可以使用ERC20代币进行融资。ERC20代币的交易速度也很快,可以在数秒内完成。此外,ERC20代币的交易成本也很低,比特币的交易成本要低得多。
4. ERC20的缺点
ERC20代币的缺点在于它不能支持跨链交易,因此只能在以太坊区块链上进行交易。此外,ERC20代币也不能用于投资,因为它不能支持投资活动。
5. ERC20的应用
ERC20代币可以用于多种应用,包括众筹、支付、投资、交易等。它可以用于支持新的区块链项目,还可以用于支持新的数字货币和数字资产的交易。此外,ERC20代币还可以用于实现分布式应用程序(DApps),以及实现去中心化的金融服务。
6. ERC20的发展前景
ERC20代币的发展前景非常乐观,因为它能够支持区块链项目的众筹,还可以支持新的数字货币和数字资产的交易。此外,ERC20代币还可以用于实现分布式应用程序(DApps),以及实现去中心化的金融服务。随着区块链技术的发展,ERC20代币将变得越来越重要,它将成为区块链项目的重要组成部分,并且袜握将为区块链技术的发展做出重要贡献。
ERC20是以太坊区块链上的一种代币标准,它具有可编程性、竖好弯可交易性、可追踪性和可审计性等特性,可以用于众筹、支付、投资、交易等多种用途,具有良好的发展前景。