区块链本质上是一个去中心化的分布式账本数据库。整个数据库由一串使用密码学相关联所产生的数据块组合而成,每个区块在生成时都会自动的加盖时间戳并被附上唯一的数值。以上就是区块链的定义,但看完了你是不是仍然
区块链本质上是一个去中心化的分布式账本数据库。整个数据库由一串使用密码学相关联所产生的数据块组合而成,每个区块在生成时都会自动的加盖时间戳并被附上唯一的数值。
以上就是区块链的定义,但看完了你是不是仍然一头雾水?不急,跟着IT之家继续看下去:
- 区块链技术到底解决了啥?它有什么意义?
其实区块链的最大价值就是去中心化,那么什么是中心化什么又是去中心化呢?
中心化:
在生活中我们可以看到很多中介机构,买房需要中介,二手车需要中介,再往大点说其实淘宝跟银行也是中介,淘宝的是卖家与买家的中介,银行转账人与收款人之间的中介。中介无处不在几乎,只要供求双方的信息存在不对等,或者一点点不便利,都会有中介的存在,这些“中介”的本质就是将资源与信息进行整合并中心化,他们在其中充当着第三方担保人的角色。
(这种方式却有着一些天生的弊端:例如运营成本很高、过程繁琐复杂、有被中心化代理控制的风险)
其实现代金融体系本身就是过度中心化典例,各国政府和央行控制了货币发行权,每次超发货币引起通货膨胀都会对财富产生贬值影响。另外现代银行都实行部分准备金制度。人们将钱存于银行,银行并没有将钱全部安全地保存起来,而是将其中绝大部分用于放贷,这一比例一度高达80%以上。银行并不承诺能兑现储户的所有取款要求,在超过20%的储户同时要求取款时,银行无法偿付了。这其中有着潜在的违约风险,历史上,这种风险多次成为真实的危机。
去中心化:
去中心化故名思议就是不要中心,比如说微博是一个去中心化的体现,每个人都可以是一个节点,每个人都可以发文去影响别人,在其中任何人都可以成为中心,而且任何中心都不是永久的,中心对每个人不具备强制作用;再例如公交车站和打车,公交车都有自己固定的路线,人要去目的地只能到公交站这一集中点进行汇合,再到达这条路线的既定的站点。
而打车可以遵循每个用户的请求,用户可以在任意一个出发地到达到任意一个目的地,每个提供出行服务的出租车都是一个中心;再例如食堂与外卖,前者集中大家去往一个固定的地点进行打饭用餐,而外卖则是任意地点任意时间都可进行点餐用餐。(举例只是为让大家了解去中心化概念,但并不是说打车与外卖都跟区块链有关)
- 区块链是如何做到去中心化的?
区块链技术的核心是分布式网络、加密算法和共识机制。简单地说,区块链是一个建立在互联网上的公共的账本,互联网上每个人的计算机中,都可以有这样一个账本,这个账本中的数据是完全公开透明的,任何人都可以参与记账和核帐,当你进行交易时,这笔交易就会记录到你们的账本上,而且每个区块的账本都是相同的。
这就从根本上简化了传统的信任机制,不需要有公信度的第三方进行担保。在原来两个互不认识和信任的人要达成协作是很难的,但基于区块链的特性,现在没有任何中介机构参与的情况下,双方也可以实现互信与协作。同时,这个账本是十分安全的,因为区块链采用的加密技术就是基于密码学,篡改这个账本中的内容是十分困难的,就算你突破了区块链的加密技术,篡改了自己的账本也是没意义的,因为区块链还会自动同步到全世界所有人的账本上,这无异于掩耳盗铃。
还是很难理解?下面给大家讲几个轻松的小段子:
段子1:
有一天张三跟李四借了10贯铜钱,但是有担心李四会借钱不还,于是当着挨家挨户的告诉全村人:“李四借了我10贯铜钱,大家帮我记账啊”,因此全村人都知道了“张三借给李四10贯铜钱”。
这个时候一个去中心化的模型就建立起来了,这在里面不需要借贷协议也不需要银行担保,整个村子里的每个人都会为张三与李四进行记账,如果李四赖账不还,全村人都会说李四你为啥欠钱不还,并且不会再借钱给他。这个方法虽然很笨,但却实管用,渐渐的村里人都开始流行使用这种方法,不管村里发生什么大小事情还是谁跟谁之前签订什么协议大家都用这种方法告知全村人,而在现代借助分布式网络与共识机制人们可以在短短的几秒内就让整个网络都记录你们的协议或约定,这就是区块链技术。
再往下接着讲,如果这个村子的流动货币只有1000贯铜钱,张三突然告诉大家他自己就有950贯铜钱,那怎么办呢?大家还会相信他么?如果张三谎报了自己的财产,这个大家公用的账本岂不是没有意义了?
为了避免这种情况,大家在记第一笔帐的时候就立下了一个规矩,每次往账本里记录的时候要同时记录下时间编号,例如“张三借给李四10贯铜钱(001)→→李四将10贯铜钱还给张三(002)→→王五借给赵六50贯铜钱(003)”这样的好处就是每笔交易或事件都是可以精准查询的,而且无法进行谎报或篡改,因为每家每户都有账本,出了问题大家拿出账本一对就知道是哪里出现了问题。
(区块链概念中每个区块都有专属的时间戳)
这样的方式虽然很管用,但是时间久了,大家都觉得很累,不想再去费心记载村里发生的事情。为了避免这种情况发生,村支书想了一个办法,为了激励大家帮我记账与传话,只要是第一个将事件记录到本子上的人,都会获得一天口粮作为奖励,作为记账的酬劳。而且在记录完之后,要告诉村里其它人自己已经记录了,并且在记录内容中加上时间编号,以供下一个村民继续记录。
在上面的故事中,就是区块链技术的简单缩影,依靠这种技术整个村子实现了去中心化的管理与交易,不需要有粮行、典当行、钱柜参与进来。
而因记录获得的口粮奖励的其实就可以当做现在数字货币流行的“挖矿”行为。挖矿其实就是数字货币中的工作量证明——“POW”,全称Proof of Work。你获得多少货币,取决于你挖矿贡献的有效工作,以比特币为例当前挖矿的贡献主要靠进行hash计算来证明。(在文中对应的是对记录账本的贡献)
段子2:
假如你是一只软妹子,在某月某日的某个晚上,你男票向你表白"我爱你一生一世",为了纪念下来,你把这句话告诉了你的闺蜜、爸妈、发到了朋友圈、公众号、微信群等。这时候你男票再也无法抵赖,同时你打赏小费给家人与朋友感谢他们给你记住并作证。
在这个故事中你打赏的小费就是token(代币/记号);你、你男朋友、"我爱你一生一世”这句话、说这句话的时间地点等信息,打包起来形成一个结构化的信息包,这个信息包就叫“区块”;而你的闺蜜、爸妈、朋友圈、公众号和微信群等节点就是“链”。
最后你男票不承认说过这句话、当了负心汉,你翻出这个账本对质,把他丫的臭骂一顿,这就是区块链应用。还有你男朋友这个节点会永远被踢出网络。当然网络更大的情况下这个男的可能永远找不到女朋友。
段子3:
以前,大家想看陈老师的果照,都要去一个叫1025的网站,这就是中心化。后来,1025网站被和谐掉了,大部分人都懵掉了,没有网站看片了,因为他们太相信中心化组织了,还天天被1025弹窗“皇家澳门赌场”的小广告真是活该啊。
不过没关系,陈老师的2100张果照,幸存在100万个猥琐男的电脑里,除非地球毁灭,不然陈老师的果照不可能绝迹。这就是去中心化,数据分布式存储。
后来,有个叫“中本粗”的超级猥琐男,是陈老师2100张果照的超级发烧友。为了2100张照片永远不消失,为世人所享用,他做了一个互联网共享文件夹“陈老师plus”。
如果猥琐男们想获取“陈老师plus”2100张的观看权,就必须加入一个电子协议中:不得复制、修改、P任何“陈老师plus”中的照片,用户在“陈老师plus”发生的任何行为,都会按时间戳记录!
例如,“小张在2018年1月9日中午12:00,查看了编号为103的照片,并在13:00删除了编号1-100的100张照片.....”
小张的行为被记录并广播给其他100万个猥琐男,“陈老师plus”的2100张照片会得到保护,小张电脑中“陈老师plus”会按时间戳中最新记录,同步其他100万个猥琐男的电脑里的数据,复原小张电脑中的数据...小张永远别想对“陈老师plus”搞修改破坏,且所有行为都同步记录在其他猥琐男的电脑里。
这就是区块链,数据分散存储,去中心化,按时间戳广播记录所有行为,无法修改、破坏数据源或造假,除非同一时刻炸掉100万个猥琐男的电脑,或互联网消失,或世界毁灭.....
当然,也有唯一一种特殊情况,可以增加“陈老师plus”文件夹中的照片,这种情况叫做“区块链共识层”,顾名思义,这是100万猥琐男达成的增加照片共识,你不能瞎增加的。
中本粗最初设定协议时,把“猥琐男们可以用X相机,在每年XX时间,拍陈老师的果照,前100张可以添加进入‘陈老师plus’中增加作为文件夹照片”,那么,“陈老师plus”每年就可以增长100张照片了。
当然,你还可以给照片估价嘛,发行“陈老师plus”币。因为,“陈老师plus”中每张照片都是不可造假破坏的,所以具有唯一性,还有单独编号,我们就给每一张照片估价,它不就值钱了吗?就像现实世界中无法复制的名画一样啊!
怎么估值?就进行所谓的ICO(Initial Coin Offering)啊,就是我和李哭来老师成立一个基金,举行一张发布会,就说我们给这2100张照片估值个1.05亿!每张照片5万!
我们先丢5050万进去认购前1100张,其他猥琐男可以众筹5000万买剩下的1000张照片,不想要了?卖给我和李哭来基金就行,我们认它值钱啊,我们这么牛逼不会骗你的。
自从有了区块链——我们再也不怕1025们作恶,给我们弹窗小广告,给我们下病毒了;再也不怕陈老师的照片丢失被破坏了.....
当然,也有烦恼,就是有炒名画的现在来炒“陈老师plus”照片了,把价格搞得很高。
还有的更猥琐,为了赚钱,自己拍了一堆裸照按照这个模式弄了个“某某老师plus”东施效颦收割韭菜,这就叫山寨币,现在大概快一百种了吧。
相信大家看了上面三个小段子之后应该对区块链有了初步的认识,我们接着往下看,下面会通过几个Q&A的形式让大家对区块链建立更全面的认识。
- 区块链的发展阶段:
阶段1:这个阶段区块链技术主要被用于数字货币,例如比特币、瑞波币等。在这个阶段因区块链技术产生的代币,被当做支付工具使用,以去中心化交易。
阶段2:围绕智能合约建立区块链世界的基础建设(商业应用,包认证、支付等),智能合约主链当前主要有:NEO、Qtum、ETH等。
阶段3:2.0时代的基础设施完成,区块链世界中也会有像BAT这样的软件巨头,服务我们的日常生活,社会以极低的成本形成社会的信任关系,中心化机构逐渐消失。
- 那阶段2中的智能合约又是什么?
智能合约是一种用计算机语言取代法律语言去记录条款的合约。智能合约可以由一个计算系统自动执行。如果区块链是一个数据库,智能合约就是能够使区块链技术应用到现实当中的应用层。
传统意义上的合同一般与执行合同内容的计算机代码没有直接联系。纸质合同在大多数情况下是被存档的,而软件会执行用计算机代码形式编写的合同条款。智能合约的潜在好处包括降低签订合约、执行和监管方面的成本;因此,对很多低价值交易相关的合约来说,这是极大降低人力成本。
- 区块链是软件吗?是用什么语言写的?
区块链不是软件,IT之家认为“数据库”这个三个字更能表达它的含义,它是特定思想而设计的数据库。我们可以用绝大多数语言来实现它,目前区块链技术设计思想还是比较简单,但在未来这项技术将越来越复杂。
- 好吧,那比特币跟区块链到底有什么关系?
区块链的核心技术,其实早在比特币出现之前都已经有了,但说到区块链技术又绕不开比特币,因为在比特币出现并运行的几年后,其背后的运行机制受到世人的强烈关注。最早中本聪的白皮书标题是《比特币:一种点对点的电子现金系统》,文中的数据结构用一些名词来解释和定义。数据结构里有“transaction,block,chain”,后来人们将这些概念从整个体系拿出来,叫做blockchain,翻译过来就被称为"区块链"。
- 比特币和Q币到底有什么区别?
Q币实际上是一种中心化的电子代币,由腾讯公司完全控制,其功能与总量都是要看腾讯公司视情况而决定。
而比特币等数字货币,发行都是由程序和加密算法预先设定后,在全世界的多个节点上运行,没有任何人和机构可以修改,不受任何单一人或者机构来控制。
- 区块链/比特币到底是谁发明的?传说“中本聪”是不是日本人?
比特币是一个自称为“中本聪”的人或者团队创造的,并且在比特币项目初期就已经完全退出了这个项目。比特币2008年问世,中本聪在2011年在网上抛出若干有关比特币的白皮书,随后神秘消失。之后,各方人士搜寻了10年,仍无法查出其真实身份,但“中本聪”是日本人的可能性非常小,因为他过去的电子邮件中可以推测出,他应该是一个以英语为母语的人。按中本聪的设计,总共有2100万个比特币,2140年将全部开采完成。但当前比特币创造者对于目前比特币的项目已经完全没有影响力,比特币的发展完全被“Core”开发团队控制。
- 交易比特币合法吗?
比特币在很多国家交易都是合法的(包括中国)。但因为一些媒体的误导,使很多人以为在中国交易持有比特币是非法的。事实上早在2013年12月5日,中国人民银行等五部委发布的防范比特币风险的通知中明确规定,比特币是一种特定虚拟商品,普通民众在自担风险的前提下拥有参与的自由。而各类金融机构和支付机构不得开展比特币相关的金融服务,或者将比特币作为投资标的。但同时需要注意的是数字货币市场是风险性非常高的投资市场,“投机者”非常多,暴涨暴跌都是时常有的事情,即使投资数字货币市场也要将风险控制在自己能够承受的范围内。
- 区块链当前的主要应用场景:
IT之家理解到区块链主要的优势是去中心化(无需中介参与)、过程高效透明、数据高度安全。在未来,数字化的信息都可以加入区块链。
证券市场:证券交易市场也是区块链非常适合的应用领域,两者之间的契合度非常高,传统的证券交易,需要经过中央结算机构、银行、证券公司和交易所这四大机构的协调工作,才能完成股票的交易,效率低了,成本倒是高的可以,而区块链系统就可以独立地完成一条龙式服务。跨境支付与结算:2016年7月14日宣布成功利用SAP和Ripple公司的技术,用20秒的时间将1000加元发送给了德国,而这样的支付一般需要6个工作日来完成,银行之间基于区块链技术的点对点的支付方式,“不但可以全天候支付、实时到账、提现简便及没有隐形成本,也有助于降低跨境电商资金风险及满足跨境电商对支付清算服务的及时性、便捷性需求”
音乐、游戏等数字化流媒体:用区块链的透明度来解决音乐行业的问题,流媒体的出现,虽然让世界人民受益无穷,随时随地都能听到想听的音乐,但音乐人却在反对着这种模式,几乎所有的技术巨头们都布局了流媒体,这种模式的出现,使得模式导致了数字音乐的收益变得不再像传统唱片(唱片数量*价格)一样透明,如Taylor Swift和adele为了促进唱片销量,拒绝与流媒体平台合作。
投票系统:很多商业机构正在积极的打造区块链投票系统,全球证券交易巨头纳斯达克在今年2月份宣布,它正在开发一种基于区块链技术的股东电子投票系统。未来人们可以用自己的手机进行投票,并永远记录于区块链之上。”如果像总统大选等大型投票选举活动使用了区块链技术,那么人们也就无需担心选举过程中存在作弊等现象的发生了。
支付系统:电子现金系统开始展现出取代传统银行的态势,银行们已经意识到了危机感,很多银行的内部培训开始关注区块链等新技术,未来区块链加入传统银行系统也并非异想天开,当前已经有30家世界顶级商业银行结成的R3区块链联盟
- 简单总结:
以上应用场景只是区块链技术中的一小部分,相信随着区块链技术的发展未来会有更多的传统行业结合区块链技术为人们的生活提供更多便利,到那时候中心化的“中介”机构将会逐渐被区块链技术取代,而社会将以极低的成本形成社会的信任关系。
但是同时我们也要看到当前有很多科技公司借助区块链概念的热点,纷纷拥抱区块链,但很多公司并没有实质性对区块链技术进行应用,这个行业前急需脱虚向实。另外IT之家要提醒大家数字货币并不是区块链技术的全部,而区块链技术也并不一定要以数字货币的形式体现,如果你投资了数字货币市场切记要将风险控制在自己能够承受的范围内。
分享轻量级权限管理系统 renren-security
项目说明
- 采用SpringBoot、MyBatis、Shiro框架,开发的一套权限系统,极低门槛,拿来即用。设计之初,就非常注重安全性,为企业系统保驾护航,让一切都变得如此简单。
- 提供了代码生成器,只需编写30%左右代码,其余的代码交给系统自动生成,可快速完成开发任务
- 支持MySQL、Oracle、SQL Server、PostgreSQL等主流数据库
具有如下特点
- 灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求
- 完善的部门管理及数据权限,通过注解实现数据权限的控制
- 完善的XSS防范及脚本过滤,彻底杜绝XSS攻击
- 支持分布式部署,session存储在redis中
- 友好的代码结构及注释,便于阅读及二次开发
- 引入quartz定时任务,可动态完成任务的添加、修改、删除、暂停、恢复及日志查看等功能
- 页面交互使用Vue2.x,极大的提高了开发效率
- 引入swagger文档支持,方便编写API接口文档
数据权限设计思想
- 管理员管理、角色管理、部门管理,可操作本部门及子部门数据
- 菜单管理、定时任务、参数管理、字典管理、系统日志,没有数据权限
- 业务功能,按照用户数据权限,查询、操作数据【没有本部门数据权限,也能查询本人数据】
技术选型:
- 核心框架:Spring Boot 2.0
- 安全框架:Apache Shiro 1.4
- 视图框架:Spring MVC 5.0
- 持久层框架:MyBatis 3.3
- 定时器:Quartz 2.3
- 数据库连接池:Druid 1.1
- 日志管理:SLF4J 1.7、Log4j
- 页面交互:Vue2.x
软件需求
- JDK1.8
- MySQL5.5+
- Maven3.0+
本地部署
- 通过git下载源码
- 创建数据库renren_security,数据库编码为UTF-8
- 执行db/mysql.sql文件,初始化数据【按需导入表结构及数据】
- 修改application-dev.yml文件,更新MySQL账号和密码
- 在renren-security目录下,执行mvn clean install
- Eclipse、IDEA运行AdminApplication.java,则可启动项目【renren-admin】
- renren-admin访问路径:http://localhost:8080/renren-admin
- swagger文档路径:http://localhost:8080/renren-admin/swagger/index.html
- 账号密码:admin/admin
- Eclipse、IDEA运行ApiApplication.java,则可启动项目【renren-api】
- renren-api访问路径:http://localhost:8081/renren-api/swagger-ui.html
- Eclipse、IDEA运行GeneratorApplication.java,则可启动项目【renren-generator】
- renren-generator访问路径:http://localhost:8082/renren-generator
分布式部署
- 分布式部署,需要安装redis,并配置config.properties里的redis信息
- 需要配置【renren.redis.open=true】,表示开启redis缓存
- 需要配置【renren.shiro.redis=true】,表示把shiro session存到redis里
项目演示
- 演示地址:http://demo.open.renren.io/renren-security
- 账号密码:admin/admin
项目地址
https://gitee.com/renrenio/renren-security
原创文章,作者:币圈吴彦祖,如若转载,请注明出处:https://www.kaixuan.pro/news/370018/