如何轻松和安全地构建的满足合规要求的智能产品,实现业务需求?4月26日,告诉你答案! 了解详情
写点什么

对于软件开发人员,怎样理解区块链

  • 2018 年 8 月 30 日
  • 本文字数:1387 字

    阅读完需:约 5 分钟

当提到区块链时,我喜欢用代码的方式解释区块链,以及它与你当前已掌握的开发知识之间的联系。尽管现在很多人都在谈论区块链,但由于某些原因,似乎很少有人真正理解这种技术在我们现有的开发工具集中的作用。

撇开政治观点不谈,区块链只不过是我们应用程序的一个数据层。将来它可能是惟一的持久性层,当然也不一定非要这样做,也可以在应用程序中使用多个这种类型的数据层。这里我向你们推荐一个讲座,它主要介绍的是关于我们现在开发创建相互连接的区块链时应该着重关注哪些方面,并解释了这样做的必要性。

在我们现有的应用程序中,我们使用 api 在一个或多个数据库中存储信息。区块链项目也是这样做的,你可以与 API(客户端或服务器端) 进行交互,以在区块链中存储数据。

同样,我们的数据库也有相应的模型来构造数据,比如表格、文档模型,你可以给它命名,他们都是用来描述数据的形态的。区块链通常也不一定要遵守这个约定,它们更像是 noSql 数据库,你可以在存储数据时不去关心数据的格式。但是软件开发经验告诉我们,使用非层次数据并不一定是个好主意。这就是为什么我们最终使用 Mongoose 作为 MongoDB 的工具,它能够延迟对数据建模。因此,在区块链项目中使用 Convector 之类的工具,能够使编写模型塑造数据变得非常简单和直观。

相对于数据库的另一个优势 (可能是最重要的优势) 是存储过程。存储过程是存在于数据库本身的逻辑 (函数),它接收数据的输入来执行操作。在区块链开发中,这通常被称为智能契约或链码。知道如何编写这些函数以及需要考虑的相关事项是我们所说的区块链开发,当然也不要与区块链核心开发混淆,后者指的是开发区块链技术本身,或者是数据库引擎。

对软件开发人员来说还有一个比较好理解的参考是控制版本系统,如 GIT。你对数据所做的每一个更改都是版本化的,你可以随时返回来检查这些更改。注意:你甚至可以更改区块链的历史值!就像你在 GIT 中做了一个 rebase 来合并提交或更新消息一样。但是在 GIT 和区块链这两个环境中,你最终会得到已更改提交以及所有后续提交的哈希值。你会得到完全不同的历史记录,没有人会接受来自你的任何更改,因为你偏离了主分支 (公开的区块链版本)。在区块链中没有—force 强制覆盖历史记录。

区块链是分散的,智能契约的执行必须在不同的计算机上发生多次,这是区块链开发人员在使用区块链作为数据层时必须考虑的分布式计算概念的一部分。

在智能契约执行中,可以将其看作 GIT 中的一个 update hook,由包含区块链副本的节点执行,然后再接收你试图执行的提交。这个 hook 包含判断提交作者是否拥有更新存储库的权限的逻辑。你也可以依赖于提交作者的身份验证,这样验证也就只能依靠提交者本人了。

由于你的 hook 会在所有的对等点执行,所以你的操作必须是确定的,因此这里就需要函数式编程了。你不应该依赖全局状态 (文件系统是全局状态) 或依赖于外部信息源 (如与 API 的连接或任何网络访问) 生成随机数。

对于软件开发人员来说,区块链并不是一种罕见的技术,它的核心功能是建立在我们几十年前的技术之上的,就像密码学一样,GIT 本身也遵循着今天大多数区块链所遵循的核心理念。

我希望这篇文章能够帮助你在不用深入研究那些困扰你的非常复杂的术语的情况下理解这项技术。

查看英文原文: What is a blockchain for a software developer — A not so complicated explanation of the technology

2018 年 8 月 30 日 19:001901

评论 1 条评论

发布
用户头像
想要了解区块链软件开发,我这里有丰富的案例,艺术品交易平台、nft盲盒、数字版权,专业可靠
2021 年 10 月 22 日 10:17
回复
没有更多了
发现更多内容

快准狠!百万年薪的阿里架构师分享深入剖析Java虚拟机文档

Java 架构 面试 程序人生 编程语言

博睿数据亮相北京IMC2021第三届中国智造CIO峰会

博睿数据

一文讲清楚FusionInsight MRS CDL如何使用

华为云开发者社区

大数据 数据湖 FusionInsight MRS 集成 CDL

国庆出游神器:魔幻黑科技换天造物,让vlog秒变科幻大片!

华为云开发者社区

视频 modelarts 科幻 国庆 天空

华为云带你探秘Xtrabackup备份原理和常见问题分析

华为云数据库小助手

GaussDB 华为云数据库 MySQL 数据库 GaussDB(for MySQL)

恒源云(GpuShare)_快进来!这里有超高性价比的GPU资源

恒源云

深度学习

大厂敲门砖!Alibaba技术官甩出的Springboot笔记

Java 架构 面试 程序人生 编程语言

不得不聊一聊英语爱好者的单词杂货铺了

小匚

随笔杂谈 生活记录 英语 大学英语四六级 单词

看动画学算法之:doublyLinkedList

程序那些事

数据结构 算法 看动画学算法 程序那些事

架构实战营 - 模块四作业

Geek_de900a

从产业链、架构和技术三个层面,看元宇宙与RPA的发展关系

王吉伟频道

RPA 自动化 区块链+ 机器人流程自动化 元宇宙

等保二级需要测评吗?多久测评一次?

行云管家

网络安全 堡垒机 等保测评 过等保 二级等保

目睹阿里技术官写的Tomcat架构笔记后,瞬间觉得自己是渣渣

Java 架构 面试 程序人生 编程语言

图谱相关技术在风控反作弊中的应用和探索

百度Geek说

后端 软件架构

艾瑞发布《2021年中国企业级 SaaS 行业研究报告》,ONES 入选典型厂商案例

万事ONES

项目管理 SaaS 协同办公

架构实战营 - 模块五作业

Geek_de900a

华为云开源的Karmada正式成为CNCF首个多云容器编排项目

华为云开发者社区

容器 集群 cncf Karmada

堡垒机和虚拟机的两大区别分析-行云管家

行云管家

网络安全 虚拟机 服务器 堡垒机

微信朋友圈 - 服务高性能复杂度分析

黑鹰

恒拓高科亮相中国-东北亚博览会,赋能海内外企业构建数字化新生态

WorkPlus Lite

阅读

Python代码阅读(第31篇):将一个列表分割成指定大小的小列表

Felix

Python 编程 Code Programing 阅读代码

金秋10月,日更挑战你准备好了么!?

InfoQ写作社区官方

10月日更 热门活动

如何构建混合云管理平台?——资源管理篇

金蝶天燕云

云计算 云平台

走进吉利|EMQ 映云科技助力车企“新四化”

EMQ映云科技

车联网 物联网 IoT emq iov

关于Promise你需要知道的一切

devpoint

大前端 Promise 引航计划

第 8 章 -《Linux 一学就会》-Centos8 软件包的管理与安装

学神来啦

Linux 运维

使用 grpcurl 通过命令行访问 gRPC 服务

AlwaysBeta

golang gRPC

探究数字内容生产商机,把握未来内容生产脉搏

华为云开发者社区

媒体 视频 华为云 数字内容 影视

一周信创舆情观察(9.13~9.26)

统小信uos

国家级|深信服再获CNCERT应急服务国家级支撑单位称号!

科技热闻

搞不懂云原生

二哥不再迷茫

对于软件开发人员,怎样理解区块链_语言 & 开发_Diego Barahona_InfoQ精选文章