簡單地說,以太坊中的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,由於校驗和無效