简单地说,以太坊中的iban帐号是以太坊为了和传统的银行系统对接而引入的概念,web3.js中提供了以太坊地址和iban地址之间的转换方法。node
iban这个概念源于传统的银行系统,其英文全称为International Bank Account Number
,即国际银行账号。iban的做用是为全球任意一家银行中的任意一个帐户生成一个全球惟一的帐号,以便进行跨行交易。一个iban帐号看起来像这样:web
XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS
iban地址最多能够包含34个字母和数字,其中的字母大小写不敏感。在iban
中包含如下信息:express
BBAN
(Basic Bank Account Number),用来标识银行机构、网点及客户在该机构内的帐号,这三部分信息的编码方案依赖于前面说起的国别码若是你但愿立刻开始学习以太坊DApp实战开发,推荐两个在线互动教程:学习
以太坊引入了一个新的IBAN国别码:XE,其中E表明Ethereum,X表明非法币(non-jurisdictional currencies)。同时,以太坊提出了三种BBAN的编码格式:direct、basic和indirect。区块链
direct编码方案中的BBAN为30个字母/数字,只有一个字段:帐户编号。例如,以太坊地址00c5496aee77c1ba1f0854206a26dda82a81d6d8
转换为direct方案的BBAN帐号,就获得XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS
。编码
能够使用web3.js中的web3.eth.Iban.fromEthereumAddress()
方法来执行这一转换:3d
let myiban = web3.eth.Iban.fromEthereumAddress('0x00c5496aee77c1ba1f0854206a26dda82a81d6d8') console.log(myiban) //XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS
basic编码方案与direct方案的惟一区别在于,其BBAN长度为31个字母/数字,所以该方案不兼容IBAN。code
indrect编码方案中的BBAN长度为16个字母/数字,包含三个字段:blog
例如,一个采用indrect编码方案的以太坊iban帐号,看起来是这样:教程
XE81ETHXREGGAVOFYORK
前面的XE
表示国别码,81
为校验和,后面的16个字符就是indrect编码的BBAN,其中:
如前所述,使用web3.eth.Iban.fromEthereumAddress()
方法,能够将一个以太坊地址转换为direct编码方案的iban帐号。与之对应的,能够使用web3.eth.Iban.toAddress方法,将一个采用direct编码方案的iban帐号,转换回以太坊地址。例如:
let myaddr = web3.eth.Iban.toAddress("XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS") console.log(myaddr) //0x00c5496aEe77C1bA1f0854206A26DdA82a81D6D8
iban帐号中的校验和用来帮助核验一个给定字符串是否为有效的iban帐号。能够使用web3.js中的web3.eth.Iban.isValid()
来进行执行校验。例如:
let isValid = web3.eth.Iban.isValid("XE81ETHXREGGAVOFYORK") console.log(isValid) // true isValid = web3.eth.Iban.isValid("XE82ETHXREGGAVOFYORK") console.log(isValid) // false,由于校验和无效