iOS应用程序如何调用以太坊智能合约

一起学:以太坊智能合约开发 课程介绍 无论在科技圈还是金融圈,“区块链”俨然成了最热的词汇。2016年,区块链写入了国家的十三五规划中;2017年,央行基于区块链技术的数字票据交易平台测试成功;同年,工信部发布了首个区块链参考架构标准。
经过2017年如火如荼的投资盛宴,区块链开始逐渐走向应用落地,业内都在积极探索使用场景。如金融领域的资产贸易、支付系统、金融服务,其他领域的电子商务、社交通讯、游戏娱乐等等。同时,BAT、迅... 阅读详情

以太坊智能合约有各种各样的用例,但到目前为止,从你的iOS应用程序中调用它们非常困难。不过如果使用以太坊iOS开发套件EtherKit,这种情况会改善很多,你可以立即开始使用。在本教程结束时,你将能够调用其ABI(应用程序二进制接口)中定义的任何公共合约函数。

对于这个项目,我们将使用Xcode 10.0和ContractCodegen 0.1。我们还建议使用iOS MVVM项目模板,但为了使本教程简单,我们将使用正常的iOS项目结构。

首先,我们将创建一个新的iOS项目,并将其称为EthereumContracts。在这里下载我们的示例合约abi.json文件。下载成功后,将文件拖到Xcode项目中。你的Xcode项目现在应该如下所示:

安装ContractCodegen

在本教程的下一部分中,我们将从我们的以太坊iOS开发工具包下载ContractCodegen。为此,我将使用Cocoapods,它将自动下载必要的依赖项,但还有其他方法可用,在以太坊iOS开发套件Github中有描述。

在项目根目录中创建Podfile并插入以下代码:

platform :ios, '10.3'
project 'EthereumContracts'

inhibit_all_warnings!
use_frameworks!

target 'EthereumContracts' do
   pod 'ContractCodegen', '~> x.y.z'
end

打开终端并粘贴此命令:

pod install 

当此命令完成时,关闭我们的EthereumContracts项目并在Finder中打开EthereumContracts.xcworkspace

很好!现在让我们生成Swift代码以与我们的智能合约进行交互。

生成Swift代码

首先,确保你在项目根目录中。如果你已经在了,我们可以非常简单地生成我们的Swift代码,只需使用以下命令:

Pods/ContractCodegen/ContractCodegen/bin/contractgen HelloContract EthereumContracts/abi.json -x EthereumContracts.xcodeproj -o EthereumContracts/GeneraredContracts

当命令询问你使用哪个选项时,非常简单,只使用一个,即第一个选项。

瞧,如果你收到“Code generation: ok”的消息,你已经为以太坊智能合约创建了第一个Swift代码。

你现

以太坊宠物商店 - 记录第一个Dapp 背景 记录以前练习的第一个Dapp宠物商店,使用以太坊作为处理宠物收养的方式。该商店在特定时间可容纳16只宠物,并且他们已经拥有宠物数据库。所以我们做一个将以太坊地址与宠物相关联的dapp,官方提供了网站结构和样式。我们只需编写智能合约和执行前端逻辑。首先我的思路是: 设置开发环境 使用Truffle创建项目 编写智能合约 编译和迁移智能合约 测试智能合约 创建用户界面以与智能合约进行交互 在浏... 阅读详情

相关推荐

以太坊区块链iOS开发之对web3swift库的"addr"方法使用

由于web3swift库并不完善,单元测试中缺少“addr”方法,而本人开发过程中又需要用到,即:将ENS域名转成16进制地址;于是特地写了篇文章作为记录,希望有同样需求的同鞋能用上。首先要引入web3swift库,地址:https://github.com/BANKEX/web3swift//MARK:将ENS域名转成16进制地址字符串    func keccakHexStringFromEN...

Jasongy的博客 2948

搭建Ethereum以太坊测试网络Rinkeby节点

文章链接 编号 分类 文章及链接 介绍 作者 来源分类 撰写日期 收录日期 B1 安装 NODES AND CLIENTS 安装以太坊客户端的软硬件需求及各个客户端的比较 wackerow 官网 2021-12-08 2021-12-30 B2 使用 Command-line Options Geth官网资料 Geth官网 2021-12-30 文章目录文章链接前言硬件需求:基础网络要求:安装运行 前言 因为需要开发操作solidity智能合约的程序,总不能拿真金白银的eth去做

Mark的博客 1万+

3分钟看懂以太坊智能合约

区块链被认为是自互联网诞生以来最为颠覆性的技术。它的魅力为何如何迷人,让很多人觉得无法理解。在区块链领域中,追随区块链的粉丝们经常提到以太坊智能合约,那么它们,又是何方神器?  互联网发展至今,有人认为有能力独立开发出区块链应用的地球人不会超过2000个人,也有人认为可能不超过200个人。这个数字虽然或许夸张,但足以说明开发区块链难度之大。因为这就如同在没有操作系统的手机上开发

QC班长的博客 6184

智能合约调用示例

故事是这样的,有5个小伙伴,他们为 黄豆芽, 黑豆芽,绿豆芽 中的哪种最好吃发生了分歧,于是它们准备发起一个投票。但是大家都希望投票的过程是完全去中心化的…最后他们决定使用区块链智能合约来解决这个问题 准备工作 启动geth(为了更快的打包,建议dev模式),新建5个账户,并把defaultAccount(如果没有设置一般为eth.accounts[0]) 解锁,保证def

omnispace的博客 8443

区块链学习笔记21——ETH智能合约

区块链学习笔记21——ETH智能合约 学习视频:北京大学肖臻老师《区块链技术与应用》 笔记参考:北京大学肖臻老师《区块链技术与应用》公开课系列笔记——目录导航页 智能合约部分的内容较多,这里分多篇来写 智能合约简介 智能合约是运行在区块链上的一段代码,代码的逻辑定义了合约的内容 智能合约的账户保存了合约当前的运行状态 balance:当前余额 nonce:交易次数 code:合约代码 storage:存储,数据结构是一棵MPT Solidty是智能合约最常用的语言,其语法上与JavaScript

polarday的博客 1万+

Coding:生成账户的地址、私钥、keystore、助记词

1. web3 web3.eth:用于与以太坊区块链和智能合约之间的交互。 web3.utils:包含一些辅助方法。 web3.shh:用于协议进行通信的P2P和广播。 web3.bzz:用于与群网络交互的Bzz模块。 2. 使用web3创建账号 API web3.eth.accounts.create([entropy]); 参数 entropy - String (可选): 它是一个...

boss2967的博客 1483

以太坊智能合约开发第二篇:理解以太坊相关概念

原文发表于:以太坊智能合约开发第二篇:理解以太坊相关概念 很多人都说比特币是区块链1.0,以太坊是区块链2.0。在以太坊平台上,可以开发各种各样的去中心化应用,这些应用构成了以太坊的整个生态。目前,以太坊是区块链世界里生态建设最好的底层公链。本篇将以通俗易懂的方式介绍以太坊开发中涉及到的相关概念,带领大家轻松入门。 以太坊 以太坊(Ethereum)是一个建立在区块链技术之上的、...

智能合约开发 792

揭秘web3.php 2.0核心升级:PHP如何高效调用以太坊智能合约

掌握PHP与区块链智能合约交互的web3.php 2.0核心技巧,轻松实现以太坊DApp开发。详解安装配置、合约部署与调用方法,支持事件监听与Gas管理,提升交互效率。适用于数字身份、供应链等场景,值得收藏。

FuncWander的博客 669

以太坊智能合约开发:理解以太坊相关概念

想知道更多学习区块链的方法或者区块链知识,请百度【链客区块链技术问答社区】 很多人都说比特币是区块链1.0,以太坊是区块链2.0。在以太坊平台上,可以开发各种各样的去中心化应用,这些应用构成了以太坊的整个生态。目前,以太坊是区块链世界里生态建设最好的底层公链。本篇将以通俗易懂的方式介绍以太坊开发中涉及...

weixin_33842328的博客 164

区块链怎么被运用,如何利用区块链工作

更近距离地观察这种迅速流行的技术。比特币和其他加密货币通常都与区块链相关,但这些只是冰山一角。 这项技术最初设想于1991年,当时StuartHaber和W.ScottStornetta描述了他们在一系列加密区块中的首次工作,但是在2008年,随着比特币的出现,这项技术开始流行起来。 据MarketWatch的数据,区块链目前在其他商业应用领域的需求也在不断增长,预计到2022年,许多市场的年增长率将达到51%,如金融机构和物联网。 区块链是什么? 块链是一种分布于多个网络节点的一致记录。对于加密货币,把

区块链技术 1745

Web3与智能合约交互实战

【汇新云】为大家定期更新文章,【汇新云】IT人的产业链平台Web3与智能合约交互实战写在前面在最初学习以太坊的时候,很多人都是自己创建以太坊节点后,使用geth与之交互。这种使用命令行交互的方法虽然让很多程序员感到兴奋(黑客帝国的既视感?),但不可能指望普通用户通过命令行使用Dapp。因此,我们需要一种友好的方式(比如一个web页面)来与智能合约交互,于是问题的答案就是web3.js。Web3.j...

qq_39353009的博客 2436

web3js调用已部署智能合约的function

简介与环境简介web3.js是以太坊提供的一个Javascript库,它封装了以太坊的JSON RPC API、IPC调用,提供了一系列与以太坊区块链交互的J对象和函数。几乎囊括JSON RP的API,还可以编译和部署智能合约以及调用智能合约等,其中最重要的就是与智能合约交互的JS对象及函数。开发环境macos操作系统nodejs 8.9.4npm 5.6.0调用智能合约首先需要使用Solidit...

hdyes的专栏 7823

智能合约如何可信的与外部世界交互

区块链应用中,外部世界如何与智能合约交互往往是一个容易被忽视的问题,很多的智能合约应用场景是根据一些外部事件,输出相应的结果,而传统的IT数据交互方式实际上并不能投入真正的工作。例如,按照农产品价格情况来支付投保人赔款的农产品价格险保单。传统IT人员一般认为是如下的流程:智能合约会在预定的时间,从期货交易场所获取农产品价格,然后按照获取的数据采取预设的行动。听起来很简单,但却不可能实现。为什么呢?

李赫的专栏 2万+

基于智能合约的科技成果转移系统:设计、实现与评估

基于智能合约的科技成果转移系统:设计、实现与评估

汉斯出版社旗下编辑,定期更新计算机前沿论文 333
上一篇: 以太坊生态系统中工具、类库和开发技术
下一篇: 共识算法比较:Tendermint的BFT与EOS的dPoS
落叶无声9
博客等级 码龄12年 442粉丝 343原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值