今日实时汇率
持有
美元 USD 人民币 CNY 欧元 EUR 英镑 GBP 澳元 AUD 加元 CAD 日元 JPY 港币 HKD 印度卢比 INR 澳门元 MOP 韩元 KRW 墨西哥比索 MXN 阿联酋迪拉姆 AED 阿富汗尼 AFN 阿尔巴尼列克 ALL 亚美尼亚德拉姆 AMD 荷兰盾 ANG 安哥拉宽扎 AOA 阿根廷比索 ARS 阿鲁巴弗罗林 AWG 阿塞拜疆马纳特 AZN 波黑可兑换马克 BAM 巴巴多斯元 BBD 孟加拉国塔卡 BDT 保加利亚列弗 BGN 巴林第纳尔 BHD 布隆迪法郎 BIF 百慕达元 BMD 文莱元 BND 玻利维亚诺 BOB 巴西雷亚尔 BRL 巴哈马元 BSD 不丹努尔特鲁姆 BTN 博茨瓦纳普拉 BWP 白俄罗斯卢布 BYN 伯利兹元 BZD 刚果法郎 CDF 瑞士法郎 CHF 智利比索 CLP 哥伦比亚比索 COP 哥斯达黎加科朗 CRC 古巴比索 CUP 佛得角埃斯库多 CVE 捷克克朗 CZK 吉布提法郎 DJF 丹麦克朗 DKK 多米尼加比索 DOP 阿尔及利亚第纳尔 DZD 埃及镑 EGP 厄立特里亚纳克法 ERN 埃塞俄比亚比尔 ETB 斐济元 FJD 福克兰镑 FKP FOK募集币 FOK 格鲁吉亚拉里 GEL 格恩西岛磅 GGP 加纳塞地 GHS 直布罗陀镑 GIP 冈比亚达拉西 GMD 几内亚法郎 GNF 危地马拉格查尔 GTQ 圭亚那元 GYD 洪都拉斯伦皮拉 HNL 克罗地亚库纳 HRK 海地古德 HTG 匈牙利福林 HUF 印度尼西亚卢比 IDR 以色列新谢克尔 ILS 马恩磅 IMP 伊拉克第纳尔 IQD 伊朗里亚尔 IRR 冰岛克郎 ISK 新泽西岛磅 JEP 牙买加元 JMD 约旦第纳尔 JOD 肯尼亚先令 KES 吉尔吉斯斯坦索姆 KGS 柬埔寨瑞尔 KHR 基里巴斯 KID 科摩罗法郎 KMF 科威特第纳尔 KWD 开曼群岛元 KYD 哈萨克斯坦坚戈 KZT 老挝基普 LAK 黎巴嫩镑 LBP 斯里兰卡卢比 LKR 利比里亚元 LRD 莱索托洛蒂 LSL 利比亚第纳尔 LYD 摩洛哥迪拉姆 MAD 摩尔多瓦列伊 MDL 马达加斯加阿里亚里 MGA 马其顿代纳尔 MKD 缅甸元 MMK 蒙古货币 MNT 毛塔币 MRU 毛里求斯卢比 MUR 马尔代夫拉菲亚 MVR 马拉维克瓦查 MWK 林吉特 MYR 莫桑比克新梅蒂卡尔 MZN 纳米比亚元 NAD 尼日利亚奈拉 NGN 尼加拉瓜新科多巴 NIO 挪威克朗 NOK 尼泊尔卢比 NPR 新西兰元 NZD 阿曼里亚尔 OMR 巴拿马巴波亚 PAB 秘鲁新索尔 PEN 巴布亚新几内亚基那 PGK 菲律宾比索 PHP 巴基斯坦卢比 PKR 波兰兹罗提 PLN 巴拉圭瓜拉尼 PYG 卡塔尔里亚尔 QAR 罗马尼亚列伊 RON 塞尔维亚第纳尔 RSD 俄罗斯卢布 RUB 卢旺达法郎 RWF 沙特里亚尔 SAR 所罗门群岛元 SBD 塞舌尔卢比 SCR 苏丹镑 SDG 瑞典克朗 SEK 新加坡元 SGD 圣赫勒拿镑 SHP 英镑SLE SLE 塞拉利昂利昂 SLL 索马里先令 SOS 苏里南元 SRD 南苏丹币 SSP 圣多美多布拉 STN 叙利亚镑 SYP 斯威士兰里兰吉尼 SZL 泰铢 THB 塔吉克斯坦索莫尼 TJS 土库曼斯坦马纳特 TMT 突尼斯第纳尔 TND 汤加潘加 TOP 土耳其里拉 TRY 特立尼达多巴哥元 TTD 图瓦卢元 TVD 新台币 TWD 坦桑尼亚先令 TZS 乌克兰格里夫纳 UAH 乌干达先令 UGX 乌拉圭比索 UYU 乌兹别克斯坦苏姆 UZS 委内瑞拉玻利瓦尔 VES 越南盾 VND 瓦努阿图瓦图 VUV 萨摩亚塔拉 WST 中非法郎 XAF 东加勒比元 XCD 特别提款权 XDR 西非法郎 XOF 太平洋法郎 XPF 也门里亚尔 YER 南非兰特 ZAR 赞比亚克瓦查 ZMW 津巴布韦币 ZWL
交换
兑换
美元 USD 人民币 CNY 欧元 EUR 英镑 GBP 澳元 AUD 加元 CAD 日元 JPY 港币 HKD 印度卢比 INR 澳门元 MOP 韩元 KRW 墨西哥比索 MXN 阿联酋迪拉姆 AED 阿富汗尼 AFN 阿尔巴尼列克 ALL 亚美尼亚德拉姆 AMD 荷兰盾 ANG 安哥拉宽扎 AOA 阿根廷比索 ARS 阿鲁巴弗罗林 AWG 阿塞拜疆马纳特 AZN 波黑可兑换马克 BAM 巴巴多斯元 BBD 孟加拉国塔卡 BDT 保加利亚列弗 BGN 巴林第纳尔 BHD 布隆迪法郎 BIF 百慕达元 BMD 文莱元 BND 玻利维亚诺 BOB 巴西雷亚尔 BRL 巴哈马元 BSD 不丹努尔特鲁姆 BTN 博茨瓦纳普拉 BWP 白俄罗斯卢布 BYN 伯利兹元 BZD 刚果法郎 CDF 瑞士法郎 CHF 智利比索 CLP 哥伦比亚比索 COP 哥斯达黎加科朗 CRC 古巴比索 CUP 佛得角埃斯库多 CVE 捷克克朗 CZK 吉布提法郎 DJF 丹麦克朗 DKK 多米尼加比索 DOP 阿尔及利亚第纳尔 DZD 埃及镑 EGP 厄立特里亚纳克法 ERN 埃塞俄比亚比尔 ETB 斐济元 FJD 福克兰镑 FKP FOK募集币 FOK 格鲁吉亚拉里 GEL 格恩西岛磅 GGP 加纳塞地 GHS 直布罗陀镑 GIP 冈比亚达拉西 GMD 几内亚法郎 GNF 危地马拉格查尔 GTQ 圭亚那元 GYD 洪都拉斯伦皮拉 HNL 克罗地亚库纳 HRK 海地古德 HTG 匈牙利福林 HUF 印度尼西亚卢比 IDR 以色列新谢克尔 ILS 马恩磅 IMP 伊拉克第纳尔 IQD 伊朗里亚尔 IRR 冰岛克郎 ISK 新泽西岛磅 JEP 牙买加元 JMD 约旦第纳尔 JOD 肯尼亚先令 KES 吉尔吉斯斯坦索姆 KGS 柬埔寨瑞尔 KHR 基里巴斯 KID 科摩罗法郎 KMF 科威特第纳尔 KWD 开曼群岛元 KYD 哈萨克斯坦坚戈 KZT 老挝基普 LAK 黎巴嫩镑 LBP 斯里兰卡卢比 LKR 利比里亚元 LRD 莱索托洛蒂 LSL 利比亚第纳尔 LYD 摩洛哥迪拉姆 MAD 摩尔多瓦列伊 MDL 马达加斯加阿里亚里 MGA 马其顿代纳尔 MKD 缅甸元 MMK 蒙古货币 MNT 毛塔币 MRU 毛里求斯卢比 MUR 马尔代夫拉菲亚 MVR 马拉维克瓦查 MWK 林吉特 MYR 莫桑比克新梅蒂卡尔 MZN 纳米比亚元 NAD 尼日利亚奈拉 NGN 尼加拉瓜新科多巴 NIO 挪威克朗 NOK 尼泊尔卢比 NPR 新西兰元 NZD 阿曼里亚尔 OMR 巴拿马巴波亚 PAB 秘鲁新索尔 PEN 巴布亚新几内亚基那 PGK 菲律宾比索 PHP 巴基斯坦卢比 PKR 波兰兹罗提 PLN 巴拉圭瓜拉尼 PYG 卡塔尔里亚尔 QAR 罗马尼亚列伊 RON 塞尔维亚第纳尔 RSD 俄罗斯卢布 RUB 卢旺达法郎 RWF 沙特里亚尔 SAR 所罗门群岛元 SBD 塞舌尔卢比 SCR 苏丹镑 SDG 瑞典克朗 SEK 新加坡元 SGD 圣赫勒拿镑 SHP 英镑SLE SLE 塞拉利昂利昂 SLL 索马里先令 SOS 苏里南元 SRD 南苏丹币 SSP 圣多美多布拉 STN 叙利亚镑 SYP 斯威士兰里兰吉尼 SZL 泰铢 THB 塔吉克斯坦索莫尼 TJS 土库曼斯坦马纳特 TMT 突尼斯第纳尔 TND 汤加潘加 TOP 土耳其里拉 TRY 特立尼达多巴哥元 TTD 图瓦卢元 TVD 新台币 TWD 坦桑尼亚先令 TZS 乌克兰格里夫纳 UAH 乌干达先令 UGX 乌拉圭比索 UYU 乌兹别克斯坦苏姆 UZS 委内瑞拉玻利瓦尔 VES 越南盾 VND 瓦努阿图瓦图 VUV 萨摩亚塔拉 WST 中非法郎 XAF 东加勒比元 XCD 特别提款权 XDR 西非法郎 XOF 太平洋法郎 XPF 也门里亚尔 YER 南非兰特 ZAR 赞比亚克瓦查 ZMW 津巴布韦币 ZWL
1 美元(USD)=
7.178 人民币(CNY)
反向汇率:1 CNY = 0.1393 USD
更新时间:2025-07-11 03:00:01
立即换算
地址 这里要说的地址并不是通常的
编程语言 中的内存地址,而是交易地址。我们知道区块链进行价值传递的时候必须是通过一个地址传递到另一个地址,无论交易或者合约都离不开地址。因此把地址作
Address 为
Solidity 语言的内嵌数据类型会十分方便开发的,更重要的一点就是在Solidity中,所有合约都继承地址Address类型。这不仅仅是单纯的为了在语法上的实现,而在实际情况是合约本身就离不开地址,包括合约的部署和执行都需要地址的参与。 地址是两种类型,一种是address,一种是address payable。其中address payable相比address类型多了两个成员方法send和transfer,表示可以向address payable类型的变量进行转帐操作。
地址类型格式要求
以太坊中的地址是20个字节,比如0x52908400098527886E0F7030069857D2E4169EE7 ,由于一个字节等于8位,所以地址也可以使用uint160来声明。地址通常可以进行比较运算。
pragma solidity >=0.4.0 <0.6.0;contract EgAddress{
function testType() public { address _addr = 0x52908400098527886E0F7030069857D2E4169EE7; uint160 _addi = 471360049350540642640628028220064440840608208820; string memory h = hex"52908400098527886E0F7030069857D2E4169EE7"; address addr = address(_addi); //addr = address(h); uint160 addi = uint160(_addr);
}
}
注意的是hex类型是不能直接和address进行转换的。address虽然是十六进制串,address是有格式要求的,检验方法是可参考EIP55 合约地址,我们知道每个合约都是径过一个帐户部署到区块连上的,同时这个合约也会生成一个地址,并可以向这个合约地址进行转帐操作。那么这个部署的帐户地址和合约地址是怎么得到呢。
pragma solidity >=0.4.0 <0.6.0;
contract EgAddress{ address public owner;
constructor() public { owner = msg.sender; }
function getOwner() public returns(address){ return owner; }
function getContractAddr() public view returns(address){ return address(this); }
function getSenderAddr() public returns (address){ return msg.sender; } }
msg.sender是内置方法,他返回当前方法的调用者地址,也就是说我通过A帐户调用合约方法getSenderAddr,则返回的是A的地址,通过B帐户调用合约方法getSenderAddr,则返回的是B的地址。(另外还有msg.value和msg.data都通过调用者传进来的数据)构造函数constructor是在合约进行部署时执行,且只执行一次。在获取合约的创建者则是通过“曲线”的方式获取,首先声明状态变量owner,接着在构造函数中将方法的调用者的地址赋值给owner,因为构造函数只有在合约创建时才会被调用,所以owner保存的就是合约创建者的地址,最后通过公有方法getOwner将状态变量的值返回出去。在获取合约本身的地址是通过this来获取,旧的版本可能this本身就是address类型的,可以直接返回this,但本示例中的版本需要将this是EgAddress类型的,需要做个类型转换才能返回address类型。 员变量balance 每个地址都代表着一个价值的持有者,所以可以直接查看其余额,即通过balance属性 成员方法 除了成员变量balance外,还有以下几个成员方法。成员方法| | – | |
.balance (uint256) | | .transfer(uint256 amount) | | .send(uint256 amount) returns (bool) | | .call(bytes memory) returns (bool, bytes memory) | | .delegatecall(bytes memory) returns (bool, bytes memory) | | .staticcall(bytes memory) returns (bool, bytes memory) | 例子:
pragma solidity >=0.4.0 <0.6.0;contract EgAddress{
function testSend()payable public { address payable to = 0x52908400098527886E0F7030069857D2E4169EE7; to.send(msg.value); }
function testTranser()payable public { address payable to = 0x52908400098527886E0F7030069857D2E4169EE7; to.transfer(msg.value); }
function testStack1024(uint depth) payable public{ address payable to = 0x52908400098527886E0F7030069857D2E4169EE7; bool r = to.send(1 wei); if (depth >1 && r){ testStack1024(depth -1); } }
/*function testCSend() payable public { address payable to = address(this); this.send(msg.value); address(this).send(msg.value); }*/
/*function testCTranser()payable public { // address payable to = 0x52908400098527886E0F7030069857D2E4169EE7; address(this).transfer(msg.value); }*/ }
方法:
send send方法相比较transfer方法来说更“底层”一些,如果send方法执行失败,并不会抛出异常,而是返回false。send调用栈深度不能超过1024,否则会执行失败。这个问题在testStack1024方法中进行了验证,不过传入的数字太大的话,会执行失败,即使没到1024,原因还没找到。send方法会返回bool类型的结果来表示执行结果。如果gas不够会执行失败。建议使用transfer方法,相对更安全些。 transfer transfer和send使用方法上一样,也是用来进行转帐操作,如果当前帐户余额不足或者对方帐户拒绝转帐,则会执行失败。如果transfer的调用地址是一个合约地址,则合约的回调函数将被执行。 关call及delegatecall、staticcall单独使用一篇幅来讲。 作者 :感谢HPB 蓝莲花团队整理供稿。
注: 如有问题请在下方留言联系我们技术 社群。
汪晓明博客: http://wangxiaoming.com/
汪晓明: HPB芯链创始人,巴比特专栏作家。十余年金融大数据、区块链技术开发经验,曾参与创建银联大数据。主创区块链教学 视频节目《明说》30多期,编写了《以太坊官网文档中文版》,并作为主要作者编写了《区块链开发指南》,在中国区块链社区以ID“蓝莲花”知名。