知乎專欄 | 多維度架構 | | | 微信號 netkiller-ebook | | | QQ群:128659835 請註明“讀者” |
以太坊官網的說明: https://github.com/ethereum/wiki/wiki/ICAP:-Inter-exchange-Client-Address-Protocol
iban其英文全稱為International Bank Account Number, 即國際銀行帳號。iban的作用是為全球任意一家銀行中的任意一個賬戶 生成一個全球唯一的賬號,以便進行跨行交易。一個iban賬號看起來像這樣:
XE039RBH0XKV9FZMTH2701Q37FLX10NTWXU
iban地址最多可以包含34個字母和數字,其中的字母大小寫不敏感。
iban 中包含以下信息
以太坊引入了一個新的IBAN國別碼:XE,其中E代表Ethereum,X代表非法幣(non-jurisdictional currencies)。同時,以太坊提出了三種BBAN的編碼格式:direct、basic和indirect。
direct編碼方案中的BBAN為30個字母/數字,只有一個欄位:賬戶編號。例如,以太坊 地址00c5496aee77c1ba1f0854206a26dda82a81d6d8轉換為direct方案的BBAN賬號,就 得到XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS。
可以使用web3.js中的web3.eth.Iban.toIban() 方法來執行這一轉換:
var Web3 = require('web3'); var web3 = new Web3(); web3.eth.Iban.toIban("0x00c5496aEe77C1bA1f0854206A26DdA82a81D6D8"); 'XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'
basic編碼方案與direct方案的唯一區別在於,其BBAN長度為31個字母/數字,因此該方案 不兼容IBAN。
indrect編碼方案中的BBAN長度為16個字母/數字,包含三個欄位
例如,一個採用indrect編碼方案的以太坊iban賬號,看起來是這樣:
XE81ETHXREGGAVOFYORK
XE81ETHXREGGAVOFYORK
如前所述,使用web3.eth.Iban.toIban()方法,可以將一個以太坊地址 轉換為direct編碼方案的iban賬號。與之對應的,可以使用web3.eth.Iban.toAddress()方法, 將一個採用direct編碼方案的iban賬號,轉換回以太坊地址。例如:
var Web3 = require('web3'); var web3 = new Web3(); web3.eth.Iban.toAddress("XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS"); '0x00c5496aEe77C1bA1f0854206A26DdA82a81D6D8'
iban賬號中的校驗和用來幫助核驗一個給定字元串是否為有效的iban賬號。可以使用 web3.js中的web3.eth.Iban.isValid() 來進行執行校驗。例如:
> web3.eth.Iban.isValid("XE81ETHXREGGAVOFYORK"); true > var iban = new web3.eth.Iban("XE81ETHXREGGAVOFYORK"); undefined > iban.isValid(); true > web3.eth.Iban.isValid("XE82ETHXREGGAVOFYORK"); false