之前我写了一篇关于ICAP: 互换客户端地址协议的文章。文章中介绍和详细解析了关于ICAP协议算法,并给出Go语言版本的具体实现。实际上以太坊全节点Geth提供了WEB3接口,来转换ICAP格式地址(web3.fromICAP("XE86G29C8IV34UOJMYWHGDSGME33YKEC3QO"))。

> web3
{... ...BigNumber: function a(e,n),fromICAP: function(icap),isAddress: function(address),isChecksumAddress: function(address),sha3: function(string, options),toBigNumber: function(number),toChecksumAddress: function(address)... ...
}> web3.fromICAP("XE86G29C8IV34UOJMYWHGDSGME33YKEC3QO")
"8982b139b2fca9452eae977827fb12280a9a1bf0"
>

不过这种方式转换ICAP格式地址,在客户端与服务端交互上有些繁琐,特别是在手机端操作时。手机端完全可以利用每一台终端设备来处理这个转换工作,直接将ICAP格式地址发送给服务端处理全部转换逻辑显得没有必要。另外,web3.fromICAP只能转换出非含校验和的以太坊账户地址,仍需要调用web3.toChecksumAddress来完成剩余工作。

因此,在这个大前提下,BOX企业数字资产保险箱 员工版APP开发了基于ICAP协议算法的一套iOS库。该库可以直接在手机端完成转换工作,不需要与后端web3接口交互。可能Geth已有iOS版本相关的库(pod Geth),不过由于这个库太大,一直没有下载成功,也没有办法验证其功能是否包含ICAP功能。使用本库的还有一个好处是简单明了,不必依赖大型库,同时转换出的以太坊地址支持checksum。

我是一位Gopher,浅尝iOS,代码目标不是做一个完整的手机APP,旨在实现ICAP格式协议地址转换成以太坊账户地址。代码在这里被找到 https://github.com/alphaqiu/i...

icap-ios

接口定义:

@interface ICAP :NSObject
/*** @brief convert icap string to ethereum account address.** example code:** ICAP *decoder = [[ICAP alloc] init];* NSError *error;* NSString icapString = @"XE86G29C8IV34UOJMYWHGDSGME33YKEC3QO";* [decoder addressConvertFrom:icapString didFailedWithError:&error];* if (error != nil) {*     NSLog(@"Convert from ICAP failed, cause:%@", error);* }** @param icapString *NSString* @param error **NSError when invoked the function, if this reference error not nil, then the renturn string is nil.* @return *NSString the ethereum account address.*/
-(NSString *) addressConvertFrom:(NSString *)icapString didFailedWithError:(NSError **)error;
@end

使用方法:

ICAP *decoder = [[ICAP alloc] init];
NSError *error;
[decoder addressConvertFrom:@"XE86G29C8IV34UOJMYWHGDSGME33YKEC3QO" didFailedWithError:&error];
if (error != nil) {NSLog(@"Convert from ICAP failed, cause:%@", error);
}

工程依赖库安装:

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'target 'prog3' do# Uncomment the next line if you're using Swift or would like to use dynamic frameworksuse_frameworks!pod 'JKBigInteger', '~> 0.0.1'# Pods for prog3end
pod install

ICAP互换客户端地址协议iOS实现示例相关推荐

  1. ICAP: 互换客户端地址协议

    什么是ICAP?从以太坊Homestead指南的词汇表中可以看出: Interexchange Client Address Protocol, an IBAN-compatible system f ...

  2. ICAP: 互换客户端地址协议 1

    什么是ICAP?从以太坊Homestead指南的词汇表中可以看出: Interexchange Client Address Protocol, an IBAN-compatible system f ...

  3. pelco-d协议数据解析示例

    pelco-d协议数据解析示例 2014-08-14 21:57 286人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: 程序编程(12) 作者同类文章X 代码工人的仓库(36) 作者同类文章 ...

  4. python request大批量发送请求调用接口时,报错:[WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

    接到一个项目需求,其中需要调用到供应商的Http  API,因为有大量的测试资源,所以代码中会循环调用API. 然而在测试代码执行过程中,过程中偶尔报错: 此时看到报错,怀疑是可能是同时并发的问题, ...

  5. Exchange Server 2007客户端访问协议部署SSL

    安全套接字层是用来加密客户端和服务器之间通讯的一种方法.Microsoft Exchange Server 2007 能够为所有的客户端访问协议部署SSL.这些协议包括Microsoft Exchan ...

  6. iOS编程——经过UUID和KeyChain来代替Mac地址实现iOS设备的唯一标示(OC版)

    iOS编程--通过UUID和KeyChain来代替Mac地址实现iOS设备的唯一标示(OC版) 很多的应用都需要用到手机的唯一标示,而且要求这个唯一标示不能因为应用app的卸载或者改变而变化. 在iO ...

  7. php浏览器类型检测工具,php检测客户端浏览器类型的简单示例

    这篇文章主要为大家详细介绍了php检测客户端浏览器类型的简单示例,具有一定的参考价值,可以用来参考一下. 对php检测客户端浏览器类型代码感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! ...

  8. 计算机网络实验arp协议分析,计算机网络ARP地址协议解析实验报告

    计算机网络ARP地址协议解析实验报告 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 计算机网络实验报告.实验目的:1. 掌握ARP协议 ...

  9. 前端学习(1856)vue之电商管理系统电商系统之安装mysql出现mysql报错:Can’t start server: Bind on TCP/IP port: 通常每个套接字地址(协议/网络地址

    2020-07-26T11:44:29.778919Z 0 [ERROR] [MY-010262] [Server] Can't start server: Bind on TCP/IP port: ...

最新文章

  1. 基于VMware vSphere 5.0的服务器虚拟化实践(9)
  2. union 中的注意事项
  3. Axure 部件的交互样式
  4. 憋不住的心里的一个想法,JVM的BYTECODE是完全平台无关的么?
  5. 使用java解析XML文件的步骤
  6. 如何正确使用广告素材、优化Facebook广告
  7. tcp转串口_串口服务器
  8. 【Flink Forward Asia 2021】活动报告出炉,实时即未来!
  9. 我成功通过PMP考试的经验与体会
  10. 《那些年啊,那些事——一个程序员的奋斗史》——18
  11. MATLAB符号运算小技巧
  12. 电动汽车对系统运行的影响(Matlab实现)
  13. 2021年6月程序员薪资出炉,平均薪资15302元
  14. 如何强制App横屏或者竖屏显示应用
  15. vue复选框组件自定义对勾_关于vue的列表图片选中打钩操作
  16. 表达矩阵melt之后 画图 reshape gaochao ards 1: Unknown or uninitialised column: `p`. 2: Computation failed i
  17. 局域网的主要特点是什么?为什么局域网采用广播通信方式而广域网不采用呢?
  18. 定义了Circle圆形类,在此基础上派生出Cylinder圆柱体类。 Circle圆形类定义如下: class Circle { public: Circle(double r):radius(r
  19. 机器人测钢卷直径_机器人热轧钢卷喷号漆
  20. 企业微信上下游怎么设置?企业微信上下游可以共享客户吗?

热门文章

  1. python渐变色代码_使用python画图怎么设置渐变色
  2. canvas线条背景(抽象画布可视化,利用canvas绘制多条线条,再利用多条线条同时动态发生改变,形成一幅美妙的动态图,非常惊艳!)
  3. 论文阅读 6 | Bayesian Meta-Learning for the Few-Shot Setting via Deep Kernels
  4. Windows下设置redis数据库允许远程访问
  5. 追风人拍到壮观龙卷风
  6. 源码分析教程5部曲之1——漫游C语言-杨振平-专题视频课程
  7. Sanity测试(健全测试)vs回归测试
  8. E1,CE1,T1,PRI,BRI的区别以及接口
  9. webpack设置不打包文件
  10. 北理工计算机学院沈建斌,沈建冰_北京理工大学计算机学院