今天给各位分享区块链样例的知识,其中也会对区块链进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
ipad能用来学习python吗?
人工智能+区块链的发展趋势及应用调研报告
其实,不只是iPad,手机也可以。
痛点
我组织过几次线下编程工作坊,带着同学们用Python处理数据科学问题。
其中最让人头疼的,就是运行环境的安装。
实事求是地讲,参加工作坊之前,我已经做了认真准备。
例如集成环境,选用了对用户很友好的Anaconda。
代码在我的Macbook电脑上跑,没有问题。还拿到学生的Windows 7上跑,也没有问题。这才上传到了Github。
在发布的教程文章里,我也已经把安装软件包的说明写得非常详细。
还针对 Anaconda 这一 Python 运行环境的安装和运行,专门录制了视频。
但是,工作坊现场遇见的问题,依然五花八门。
有的是操作系统。例如你可能用Windows 10。实话实说,我确实没用过。拿着Surface端详,连安装后的Anaconda文件夹都找不到在哪儿。
有的是编码。不同操作系统,有的默认中文编码是UTF-8,有的是GBK。同样一段中文文本,我这里显示一切正常,你那里就是乱码。
有的是套件路径。来参加工作坊前,你可能看过我一些教程,并安装了 Python 2.7 版本 Anaconda。来到现场,一看需要 Python 3.6 版本,你就又安装了一份新的。结果执行起来,你根本分不清运行的 Python, pip 命令来自哪一个套件,更搞不清楚软件包究竟安装到哪里去了。再加上虚拟环境配置,你就要抓狂了。
还有的,甚至是网络拥塞问题。因为有时需要现场安装调用体积庞大的软件包,几十台电脑“预备——齐”一起争抢有限的Wifi带宽,后果可想而知。
痛定思痛,我决定改变一下现状。
目前的教程只提供基础源代码。对于许多新手同学来说,是不够的。
许多同学,就倒在了安装依赖软件包的路上,继而干脆放弃了。
变通的办法有许多。例如干脆录制代码执行视频给你看。
但是正如我在《MOOC教学,什么最重要?》一文中说过的,学习过程里,反馈最重要。
你需要能运行代码,并且第一时间获得结果反馈。
在此基础上,你还得能修改代码,对比前后执行结果的差别。
我得给你提供一个直接可以运行的环境。
零安装,自然也就没了上述烦恼。
这个事儿可能吗?
我研究了一下,没问题。
只要你的设备上有个现代化浏览器(包括但不限于Google Chrome, Firefox, Safari和Microsoft Edge等)就行。
IE 8.0?
那个不行,赶紧升级吧!
读到这里,你应该想明白了。因为只挑浏览器,不挑操作系统,所以别说你用Windows 10,你就是用iPad,都能运行代码。
尝试
请你打开浏览器,输入这个链接()。
看看会发生什么?
我这里用iPad给你演示。
一开始会有个启动界面出来。请你稍等10几秒钟。
然后,你就能看到熟悉的Python代码运行界面了。
这个界面来自 Jupyter Lab。
你可以将它理解为 Jupyter Notebook 的增强版,它具备以下特征:
代码单元直接鼠标拖动; 一个浏览器标签,可打开多个Notebook,而且分别使用不同的Kernel; 提供实时渲染的Markdown编辑器; 完整的文件浏览器; CSV数据文件快速浏览 ……
图中左侧分栏,是工作目录下的全部文件。
右侧打开的,是咱们要使用的ipynb文件。
为了证明这不是逗你玩儿,请你点击右侧代码上方工具栏的运行按钮。
点击一下,就会运行出当前所在代码单元的结果。
不断点击下来,你可以看见,结果都被正常渲染。
连图像也能正常显示。
甚至连下面这种需要一定运算量的可视化结果,都没问题。
为了证明这不是变魔术,你可以在新的单元格,写一行输出语句。
就让Python输出你的名字吧。
假如你叫 Chuck,就这样写:
print("Hello, Chuck!")
把它替换成你自己的姓名,看看输出结果是否正确?
其实,又何止是iPad而已?
你如果足够勇(sang) 于(xin) 尝(bing) 试(kuang),手机其实也是可以的。
就像这样。
流程
下面我给你讲讲,这种效果是怎么做出来的。
我们需要用到一款工具,叫做 mybinder 。它可以帮助我们,把 github 上的某个代码仓库(repo),快速转换成为一个可运行的环境。
注意 mybinder 为我们提供了云设施,也就是计算资源和存储资源。因此即便许许多多的用户同时在线使用同一份代码转换出来的环境,也不会互相冲突。
我们先来看看,怎么准备一个可供 mybinder 顺利转换的代码仓库。
我为你提供的样例在这里():
顺便说一句,这个样例来自于我的数据科学系列教程之《如何用Python处理自然语言?(Spacy与Word dding)》。感兴趣的同学可以点击链接,查看原文。
在该 GitHub 页面展示的文件列表中,你需要注意以下3个文件:
demo.ipynb environment.yml postBuild
华为怎样设置密码
以华为Mate 40手机为例:
一、设置锁屏密码
您可以设置数字、图案或混合密码。
1、进入设置 生物识别和密码 区块链样例,点击锁屏密码。
2、输入6位数字作为密码。
3、或点击其区块链样例他密码类型,选择一种密码类型,根据提示录入密码。
二,更改锁屏密码
1、再次进入生物识别和密码,点击更改锁屏密码。
2、输入旧锁屏密码。
3、然后输入新密码,或点击其他密码类型,选择并录入新密码。
三、关闭锁屏密码
进入生物识别和密码,点击关闭锁屏密码。
《以太坊技术详解与实战》pdf下载在线阅读,求百度网盘云资源
《以太坊技术详解与实战》(闫莺)电子书网盘下载免费在线阅读
资源链接:
链接:
密码:os8v
书名:以太坊技术详解与实战
作者:闫莺
豆瓣评分:7.7
出版社:机械工业出版社
出版年份:2018-4-3
页数:226
内容简介:
以太坊创始人、首席科学家Vitalik Buterin倾力推荐区块链样例,工业界与学术界区块链专家联合撰写,权威性和实用性毋庸置疑。本书深入剖析以太坊架构、核心部件、智能合约编写与开发案例等关键技术,并涵盖以太坊数据分析、性能优化、隐私与数据安全等前沿实践与进展。
第1章 介绍区块链背景、基本原理与应用,以对区块链有整体性了解。
第2章 详解以太坊架构与组成,涵盖以太坊架构、核心概念与技术、客户端与域名服务等,是后续学习区块链样例的基础。
第3章 带领读者部署不同网络类型以太坊区块链,含有多种技巧与脚本样例。
第4章 剖析智能合约与以太坊虚拟机的原理,这两者是以太坊的魅力所在,了解后可以更好地开发智能合约。
第5~6章 手把手教学,给出具体编写、编译、部署智能合约的方法和案例,密集锻炼读者智能合约编程与实践能力。
第7章 剖析以太坊上数字资产定义的原理和方法,包括CryptoKitties养猫游戏基于的ERC 721合约标准,到此读者可以编写以太坊应用了。
第8章 会进一步对如何查看、分析以太坊公有链数据的工具和方法进行介绍。
第9~10章 是前沿技术的探讨,涵盖以太坊性能优化和隐私保护技术。这些技术都在比较初级的阶段,读者可以一边阅读一边思考,提出自己的想法和建议。
作者简介:
闫莺 (博士),微软亚洲研究院主管研究员,区块链领域负责人,微软Coco区块链平台中国负责人。中国软件协会区块链创业学院及区块链专委会专家、中国电子学会区块链专家委员。专注与区块链技术、大数据分析、数据库以及云计算的研究。在区块链领域获得多项国际专利,并在数据库和云计算 领域国际顶级会议和期刊发表论文30余篇。参与翻译《区块链项目开发指南》。
郑凯 (博士),电子科技大学教授,博士生导师,澳大利亚昆士兰大学计算机科学博士。主要研究领域为区块链数据管理,以及时空数据挖掘、不确定数据库、内存数据库、图数据库等。在数据库、数据挖掘等领域的重要会议和期刊发表论文100余篇,被累积引用1500余次。2013年获澳大利亚优秀青年基金,2015年获数据库顶级会议ICDE最佳论文奖。担任数据库领域知名国际会议的程序主席和联合执行主席,国际SCI期刊客座编委,以及数十个国际等级会议的程序委员。
郭众鑫 微软亚洲研究院研发工程师,微软Coco区块链平台核心开发者。专注于区块链技术、大数据分析、分布式系统等方面的研究和开发。
Fabric 动态增加组织
Fabric 是联盟链,一个 channel 就好比一个联盟,如果有新的机构需要加入,则必须得到联盟内的成员的认可。
正是基于这样的场景,fabric 在为 channel 新增 org 时,会涉及诸多的权限和证书操作。
为 Channel 动态新增 Org 有以下几步:
4.将新 org 添加入 channel
5.升级chaincode和背书策略
6.测试是否成功
此文通过 fabric-samples 下的 first-network 样例为基础,在其区块链网络上,为通道 mychannel 新增一个 Org3,Org3 包含两个 peer。
fabric-samples 地址为 , 本文采用其中的 first-network 实验。
first-network 启动后,会默认创建 1 个 orderer 节点,4个 peer 节点(其中 2个属于 org1,2个属于 org2),并提供一个 cli 用于相关操作。
docker ps 之后输出如下:
first-network 直接提供了自动化添加的脚本 eyfn.sh。执行 ./eyfn.sh up 即可自动化为 channel 添加 org3。此法因不具扩展性,且不方便理解 fabric,因此不再赘述。以下是执行后的输出,若成功,会输出 All GOOD 。
会依据 org3-crypto.yaml 生成,生成后的文件位于 org3-artifacts/crypto-config/ 下
org3-crypto.yaml 文件中 Org3 的配置如下:
用Go来做以太坊开发⑤事件日志
智能合约具有在执行期间“发出”事件的能力。 事件在以太坊中也称为“日志”。 事件的输出存储在日志部分下的事务处理中。 事件已经在以太坊智能合约中被广泛使用,以便在发生相对重要的动作时记录,特别是在代币合约(即ERC-20)中,以指示代币转账已经发生。 这些部分将引导您完成从区块链中读取事件以及订阅事件的过程,以便交易事务被矿工打包入块的时候及时收到通知。
为了订阅事件日志,我们需要做的第一件事就是拨打启用websocket的以太坊客户端。 幸运的是,Infura支持websockets。
下一步是创建筛选查询。 在这个例子中,我们将阅读来自我们在之前课程中创建的示例合约中的所有事件。
我们接收事件的方式是通过Go channel。 让我们从go-ethereum core/types 包创建一个类型为 Log 的channel。
现在我们所要做的就是通过从客户端调用 SubscribeFilterLogs 来订阅,它接收查询选项和输出通道。 这将返回包含unsubscribe和error方法的订阅结构。
最后,我们要做的就是使用select语句设置一个连续循环来读入新的日志事件或订阅错误。
我们会在下个章节介绍如何解析日志。
Commands
Store.sol
event_subscribe.go
智能合约可以可选地释放“事件”,其作为交易收据的一部分存储日志。读取这些事件相当简单。首先我们需要构造一个过滤查询。我们从go-ethereum包中导入 FilterQuery 结构体并用过滤选项初始化它。我们告诉它我们想过滤的区块范围并指定从中读取此日志的合约地址。在示例中,我们将从在 智能合约章节 创建的智能合约中读取特定区块所有日志。
下一步是调用ethclient的 FilterLogs ,它接收我们的查询并将返回所有的匹配事件日志。
返回的所有日志将是ABI编码,因此它们本身不会非常易读。为了解码日志,我们需要导入我们智能合约的ABI。为此,我们导入编译好的智能合约Go包,它将包含名称格式为 ContractABI 的外部属性。之后,我们使用go-ethereum中的 accounts/abi 包的 abi.JSON 函数返回一个我们可以在Go应用程序中使用的解析过的ABI接口。
现在我们可以通过日志进行迭代并将它们解码为我么可以使用的类型。若您回忆起我们的样例合约释放的日志在Solidity中是类型为 bytes32 ,那么Go中的等价物将是 [32]byte 。我们可以使用这些类型创建一个匿名结构体,并将指针作为第一个参数传递给解析后的ABI接口的 Unpack 函数,以解码原始的日志数据。第二个参数是我们尝试解码的事件名称,最后一个参数是编码的日志数据。
此外,日志结构体包含附加信息,例如,区块摘要,区块号和交易摘要。
若您的solidity事件包含 indexed 事件类型,那么它们将成为 主题 而不是日志的数据属性的一部分。在solidity中您最多只能有4个主题,但只有3个可索引的事件类型。第一个主题总是事件的签名。我们的示例合约不包含可索引的事件,但如果它确实包含,这是如何读取事件主题。
正如您所见,首个主题只是被哈希过的事件签名。
这就是阅读和解析日志的全部内容。要学习如何订阅日志,阅读上个章节。
命令
Store.sol
event_read.go
首先,创建ERC-20智能合约的事件日志的interface文件 erc20.sol :
然后在给定abi使用 abigen 创建Go包
现在在我们的Go应用程序中,让我们创建与ERC-20事件日志签名类型相匹配的结构类型:
初始化以太坊客户端
按照ERC-20智能合约地址和所需的块范围创建一个“FilterQuery”。这个例子我们会用 ZRX 代币:
用 FilterLogs 来过滤日志:
接下来我们将解析JSON abi,稍后我们将使用解压缩原始日志数据:
为了按某种日志类型进行过滤,我们需要弄清楚每个事件日志函数签名的keccak256哈希值。 事件日志函数签名哈希始终是 topic [0] ,我们很快就会看到。 以下是使用go-ethereum crypto 包计算keccak256哈希的方法:
现在我们将遍历所有日志并设置switch语句以按事件日志类型进行过滤:
现在要解析 Transfer 事件日志,我们将使用 abi.Unpack 将原始日志数据解析为我们的日志类型结构。 解包不会解析 indexed 事件类型,因为它们存储在 topics 下,所以对于那些我们必须单独解析,如下例所示:
Approval 日志也是类似的方法:
最后,把所有的步骤放一起:
我们可以把解析的日志与etherscan的数据对比:
Commands
erc20.sol
event_read_erc20.go
solc version used for these examples
要读取 0x Protocol 事件日志,我们必须首先将solidity智能合约编译为一个Go包。
安装solc版本 0.4.11
为例如 Exchange.sol 的事件日志创建0x Protocol交易所智能合约接口:
Create the 0x protocol exchange smart contract interface for event logs as Exchange.sol :
接着给定abi,使用 abigen 来创建Go exchange 包:
Then use abigen to create the Go exchange package given the abi:
现在在我们的Go应用程序中,让我们创建与0xProtocol事件日志签名类型匹配的结构体类型:
初始化以太坊客户端:
创建一个 FilterQuery ,并为其传递0x Protocol智能合约地址和所需的区块范围:
用 FilterLogs 查询日志:
接下来我们将解析JSON abi,我们后续将使用解压缩原始日志数据:
为了按某种日志类型过滤,我们需要知晓每个事件日志函数签名的keccak256摘要。正如我们很快所见到的那样,事件日志函数签名摘要总是 topic[0] :
现在我们迭代所有的日志并设置一个switch语句来按事件日志类型过滤:
现在要解析 LogFill ,我们将使用 abi.Unpack 将原始数据类型解析为我们自定义的日志类型结构体。Unpack不会解析 indexed 事件类型,因为这些它们存储在 topics 下,所以对于那些我们必须单独解析,如下例所示:
对于 LogCancel 类似:
最后是 LogError :
将它们放在一起并运行我们将看到以下输出:
将解析后的日志输出与etherscan上的内容进行比较:
命令
Exchange.sol
event_read_0xprotocol.go
这些示例使用的solc版本
写到这里,本文关于区块链样例和区块链的介绍到此为止了,如果能碰巧解决你现在面临的问题,如果你还想更加了解这方面的信息,记得收藏关注本站。
标签: #区块链样例
评论列表