当前位置: 首页 > 编程日记 > 正文

从数字货币说起

链客,专为开发者而生,有问必答!

此文章来自链客区块链技术问答社区,未经允许拒绝转载。

在这里插入图片描述
从数字货币说起

历史上,货币的形态经历了多个阶段的演化,包括实物货币、金属货币、代用货币、信用货币、电子货币、数字货币等。货币自身的价值依托也从实物价值、发行方信用价值,到今天出现的对信息系统(包括算法、数学、密码学、软件等)的信任价值。

需求

一般等价物都可以作为货币使用。然而平时最常见的还是纸币本位制,既方便携带、不易仿制、又相对容易辩伪。注意,严格来来讲,货币(money)不等于现金或通(cash,currency),货币的范围更广。无论是货币,还是信用卡模式,都需要额外的系统(例如银行)来完成生产、分发、管理等操作,带来很大的额外成本和使用风险。诸如伪造、信用卡诈骗、盗刷、转账等安全事件屡见不鲜。很自然的,如果能实现一种数字货币,保持既有货币的这些特性,消除纸质货币的缺陷,无疑将带来巨大的社会变革,极大提高经济活动的运作效率。

可见,数字货币并非在所有领域都优于已有的货币形式。

最后,虽然当前的数字货币“实验”已经取得了巨大成功,但可见的局限也很明显:其依赖的分布式账本技术还缺乏大规模场景下考验;性能和安全性还有待提升;资源的消耗还过高等等。

实现挑战

设计和实现一个数字货币并非易事。在现实生活中,因为纸币具备可转移性,相对容易地完成价值的交割。但是因为电子内容天然具备零复制成本,无法通过发送电子内容来完成价值的转移。持有人可以试图将同一份电子货币发给多个人,这种被称为“双重支付攻击(Double-Spent)”。

电子货币模式有人称为“数字货币 1.0”,它实际上是假定存在一个安全可靠的第三方记账机构来实现,这个机构利用信用作为抵押,来完成交易。 这种中心化控制下的数字货币实现相对简单,但需要一个中心管控系统。但是,很多时候并不存在一个安全可靠的第三方记账机构来充当这个中心管控的角色。

总结一下,在去中心化的场景下,存在几个难题:货币的防伪:谁来负责验证货币;货币交易:如何确定货币从一方转移到另外一方;避免双重支付:如何避免出现双重支付。

比特币出现

比特币网络无需任何管理机构,自身通过数学和密码学原理来确保了所有交易的成功进行,比特币自身的价值是通过背后的计算力为背书。目前看来,数字货币比较有影响力的模式有两种,一种是类似paypal 这样的选择跟已有的系统合作,成为代理;一种是以比特币这样的完全丢弃已有体系的分布式技术。

什么是比特币

比特币网络由数千个核心节点参与构成,没有任何中心的运维参与,支持了稳定上升的交易量。比特币之所以受到无数金融从业者的热捧,在于它首次真正意义上实现了足够安全可靠的去中心化数字货币机制。作为一种概念金融货币,比特币主要是希望解决已有金融货币系统的几个问题:被掌控在发行机构手中;自身的价值无法保证;无法匿名化交易。

什么是区块链

区块链(Blockchain)技术自身仍然在飞速发展中,目前还缺乏统一的规范和标准。最早区块链技术雏形出现在比特币项目中。作为比特币背后的分布式记账平台,在无集中式管理的情况下,比特币网络稳定运行了近八年时间,支持了海量的交易记录,并未出现严重的漏洞。注:比特币历史上唯一已知的漏洞事件曾导致比特币的恶意增发,但问题很快被发现并修正,相关非法交易被撤销。区块链属于一种去中心化的记录技术。参与到系统上的节点,可能不属于同一组织、彼此无需信任;区块链数据由所有节点共同维护,每个参与维护节点都能复制获得一份完整记录的拷贝。跟传统的记账技术相比,其特点应该包括:1)维护一条不断增长的链,只可能添加记录,而发生过的记录都不可篡改;2)去中心化,或者说多中心化,无需集中的控制而能达成共识,实现上尽量分布式;3)通过密码学的机制来确保交易无法抵赖和破坏,并尽量保护用户信息和记录的隐私性。

基本原理基本概念包括:交易(Transaction):一次操作,导致账本状态的一次改变,如添加一条记录;区块(Block):记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识;链(Chain):由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录。如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中所有交易内容导致状态改变的结果进行确认。在实现上,首先假设存在一个分布式的数据记录本(这方面的技术相对成熟),这个记录本只允许添加、不允许删除。其结构是一个线性的链表,由一个个“区块”串联组成,这也是其名字“区块链”的来源。新的数据要加入,必须放到一个新的区块中。而这个块(以及块里的交易)是否合法,可以通过一些手段快速检验出来。维护节点都可以提议一个新的区块,然而必须经过一定的共识机制来对最终选择的区块达成一致。比特币的这种基于算力的共识机制被称为Proof of Work(PoW)。目前,要让 hash 结果满足一定条件并无已知的启发式算法,只能进行暴力尝试。尝试的次数越多,算出来的概率越大。通过调节对 hash 结果的限制,比特币网络控制约 10 分钟平均算出来一个合法区块。算出来的节点将得到区块中所有交易的管理费和协议固定发放的奖励费(目前是 12.5 比特币,每四年减半)。也即俗称的挖矿。很自然会有人问,能否进行恶意操作来破坏整个区块链系统或者获取非法利益。比如不承认别人的结果,拒绝别人的交易等。实际上,因为系统中存在大量的用户,而且用户默认都只承认他看到的最长的链。只要不超过一半(概率意义上越少肯定越难)的用户协商,最终最长的链将很大概率上是合法的链,而且随着时间增加,这个概率会越大。

小结区块链是第一个试图自带信任化和防止篡改的分布式记录系统。更进一步,比特币只是基于区块链技术的一种金融应用(而且是直接嵌入区块链中),区块链技术还能带来更通用的计算能力。Hyperledger 和 Ethereum 就试图做类似的事情,基于区块链再做一层平台层,让别人基于平台开发应用变得更简单。另外,区块链本身可以作为分布式存储,也自然可以作为分布式计算引擎。

相关文章:

git常用命令及规范流程

参考地址:https://www.cnblogs.com/my--sunshine/p/7093412.html,感谢分享 官网地址:https://git-scm.com/book/zh/v2 git init 在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹.git…

关于iOS 11的适配

距离iOS 11正式发布也有小半年了, 陆陆续续也看到许多关于iOS 11和iPhone X适配相关的文章, 现记录下自己做适配所做的工作 首先给出自己适配所用到的宏定义, 如下://状态栏 #define kStatusBarHeight [[UIApplication sharedApplication] statusBarFrame].size.height //导航条…

PHP实现队列的原理

关于的队列的介绍,我这里就不多讲了,随便百度一下都很多 用过laravel框架的童鞋都知道其自带队列功能,之前我很费解,PHP只是一个脚本,有超时机制 为什么能不停的去执行队列呢? 带着这个问题,在网…

实现代币的管理者

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 实现代币的管理者 虽然区块链是去中心化的,但是实现对代币(合约)的管理,也在许多应用中有需求&…

Oracle数据库基本操作(二) —— 视图、序列、索引、同义词

一、视图(Views)与 同义词 1、视图:实际上是对查询结果集的封装,视图本身不存储任何数据,所有的数据都存放在原来的表中; 在逻辑上可以把视图看作是一张表 2、作用: 封装查询语句,简化复杂的查询需求屏蔽表中的细节3、语法: create [or replace] view 视…

iOS crash日志分析

项目集成talkingdata收集到的crash日志, 看到那些日志时自己也是很崩溃, 全是内存地址, 根本搞不懂项目到底crash到了那里, 比如这样:自己在网上找了很多方法, 以下是自己最后所用到的方法(心累): 1, 首先拿到.dSYM 文件, 步骤:XCode中的Window -> Organizer -> 找到App …

Xamarin Android项目运行失败

Xamarin Android项目运行失败 错误信息:Build Failed: MonoDroid does not support running the previous version. Please ensure your solution builds before running or debugging it.这是由于由于项目生成失败,并找不到以前编译的结果。这时&#…

logging模块

import logging from conf import settingsdef logger(log_type):# 生成 logger 对象logger logging.getLogger(log_type)logger.setLevel(settings.LOG_LEVEL)# 生成handler对象,向文件输出日志信息log_file "%s/log/%s.log" % (settings.BASE_DIR, lo…

iOS 模糊效果相关

项目中一直有使用到模糊处理, 例如图片的高斯模糊, 一直使用的代码如下: // 内部方法,核心代码,封装了毛玻璃效果 参数:半径,颜色,色彩饱和度 - (UIImage *)imgBluredWithRadius:(CGFloat)blurRadius tintColor:(UIColor *)tintColor saturationDeltaFactor:(CGFloat)saturati…

CDN的原理及对SEO的影响

http://www.williamlong.info/archives/4059.html CDN的概念最早于1995年由美国麻省理工大学提出,是一套能够实现用户就近访问的网络解决方案。具体方法是:采用智能路由和流量管理技术,将用户的访问请求指向 CDN网络中健康且响应最快的CDN节点…

JavaScript学习笔记 - 入门篇(1)- 准备

为什么学习JavaScript 一、你知道,为什么JavaScript非常值得我们学习吗? 所有主流浏览器都支持JavaScript。目前,全世界大部分网页都使用JavaScript。它可以让网页呈现各种动态效果。做为一个Web开发师,如果你想提供漂亮的网页、令…

iOS关于像素的适配

项目中很多地方会用到分割线, 一般设置为1.0, 但是在不同的机型上这个1.0显示的效果是不同的,1x的机型上正常, 2x和3x的机型上显示的就会很粗, 影响适配, 困扰很久后得到了以下解决办法, 在此记录一下: 1.0/UIScreen.mainScreen.scale

非对称加密中公钥

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 数字签名是公钥密码体系中签名验证功能的一个应用。其目的是保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。其中数字签名是个加密…

bzoj 4813: [Cqoi2017]小Q的棋盘【树形dp】

这么简单的dp我怎么没想到x2 f为从这个点出发后回到这个点最多能走过的点,g为从这个点出发后不回到这个点最多能走过的点,注意g有两种转移:g[u][k]max(g[u][k],f[u][k-j-1]g[e[i].to][j])是在e[i].to这个子树前走了一棵子树再回来&#xff0c…

spring WebServiceTemplate 调用 axis1.4 发布的webservice

前言: 最近在开发中需要调用对方的 webservice服务,按照现有的技术,本应该是一件很简单的事情,只需要拿到wsdl文件,生成客户端代码即可,但是,对方的webservice服务是06年用axis1.4生成发布的&am…

iOS 获取Assets中的启动页

app启动时先进入一个广告页, 若无广告图则用启动页占位, 一直为这个占位图的适配烦恼, 最近查资料终于找到了结果, 现记录一下: - (UIImage *)getLaunchImage { CGSize viewSize [UIScreen mainScreen].bounds.size; NSString *viewOrientation "Portrait";//方向…

SunlightChain 区块链宣言

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 SunlightChain 区块链宣言 区块链技术的应用必将颠覆现在过度依赖于中心的经济模式,它与生俱来的开放、共享、去中心化等特点极大地提高…

Ajax跨域:Jsonp原理解析

推荐先看下这篇文章:JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp) JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Sam…

iOS 微信SDK1.8.6后需要UniversalLink解决方案及采坑记录

项目最初因审核原因,一直使用iOS原生分享, 最近因项目需求要求, 接入微信分享, 以为和原来的没有区别, 但是接入时才发现改动的地方还是挺多的, 主要是需要配置UniversalLink和提包时的一些问题, 在此做一下记录 UniversalLink配置步骤 1.制作apple-app-site-association文件…

GO语言编程基础-复合类型结构体

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 1 结构体类型 有时我们需要将不同类型的数据组合成一个有机的整体,如:一个学生有学号/姓名/性别/年龄/地址等属性。显然单独…

【BZOJ1015】【JSOI2008】星球大战 并查集

题目大意 给你一张\(n\)个点\(m\)条边的无向图,有\(q\)次操作,每次删掉一个点以及和这个点相邻的边,求最开始和每次删完点后的连通块个数。 \(q\leq n\leq 400000,m\leq 200000\) 题解 我们可以用并查集维护连通块个数,可惜并查集…

python基于Django框架编译报错“django.core.exceptions.ImproperlyConfigured”的解决办法?...

下面是我具体遇到的问题和解决方法: 错误详细信息: django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_…

iOS 异形tabBar, 中间item凸起

今年的新项目中做了tabbar的相关处理, 在此记录一下 自己做了一demo, 效果如图所示 demo地址如下: https://github.com/wyon1314/TabBarDemo

以太坊系统账户

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 在以太坊系统中,状态是由被称为“账户”(每个账户由一个20字节的地址)的对象和在两个账户之间转移价值和信息的状…

Django-缓存的配置

缓存的介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面.当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力.缓存是将一些常…

swift中单例的创建及销毁

最近项目重构时使用了oc和swift的混编,遇到了关于单例的创建及销毁,这里记录一下 //创建单例private static var _sharedInstance: ViewController?objc class func sharedInstance() -> ViewController {guard let instance _sharedInstance else …

区块链技术名词简介

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 零知识证明 零知识证明指证明者能在不向验证者提供任何有用的信息下,使验证者相信某个论断是正确的。零知识证明实质是一种涉及两方或更…

Linux篇---ftp服务器的搭建

一、前述 企业中linux搭建ftp服务器还是很实用的,所以本文针对centoos7和centoos6搭建服务器教程做个总结。 二、具体 1、显示如下图则表示已安装 vsftp软件。如果未显示则需要安装vsftpd软件。 如果没有则通过yarm源进行安装 yum install -y vsftpd 2、安装完成之后…

Python 的property的实现 .

描述符.就是 将某种特殊类型①的类的实例指派给另一个类的属性 ①只要实现一下三种方法的其中一个就是特殊类型. __get__(self,instance,owner) -用于访问属性,他返回属性的值. __set__(self,instance,value) -将在属性分配操作时使用,不返回任何内容. __delete__(self,instanc…

Swift中NSRange和Range的转换

最近项目再使用swift重构,遇到Range和NSRange转换的问题,这里记录下: 因为要使用NSRange,所以有了下面这段代码,将String转换为NSString后调用 range(of searchString: String) -> NSRange 这种处理方法其实就是使…