btm

干货|读懂公链学开发:深入浅出剖析比原链技术特性(分享实录)

筅森魡賤 提交于 2021-01-20 11:18:48
大家好,非常感谢大家在百忙之中抽空收听比原链技术入门课程,我是比原链技术运营经理钟立飞。 今天主要给大家介绍一些比原链的基础技术知识,希望能给大家带来一些启发。同时比原链的开发大赛也在进行当中,欢迎大家参加我们的比赛,我们准备了200万BTM的丰厚奖励,同时推荐身边的开发者参赛也能得到推荐奖励。(活动详情见报名网站: http://bytom.io/developers_zh/) 下面进入正题,本次分享主要分为以下几部分: Bytom是什么 Bytom有哪些特性 Bytom的设计原理和技术架构 比原链的UTXO模型以及一些主要的流程 比原的智能合约和合约模板 1 比原链介绍 比特币是点对点的点子现金系统,以太坊是一个巨大的分布式计算机,那么比原链是什么? 比原链想要连通原子世界和比特世界,促进资产在两个世界间的交互和流转。 我们知道区块链的创新之一就是解决了价值传递问题,传统互联网可以很方便地传递信息,但是并不适合于传递价值,因为不能保证我把某个东西给你,你多了而我少了,信息可以方便地复制和传播,结果往往是你有一份我仍然还有一份。而区块链通过一系列的措施较好地解决了这个问题,但是我们看到不论是比特币还是以太坊,它本身还是在虚拟世界中做价值传递,而比原链想打破这个界限,把数字世界和物理世界中的资产在比原链上登记,以比原链作为连接的桥梁,实现流通、对赌以及其他复杂操作。

23种设计模式-----行为模式

↘锁芯ラ 提交于 2020-08-17 04:36:09
行为模式: 关注系统中对象之间的相互交互,研究运行时对象之间的相互通信和协作,明确对象职责 1.模板方法模式(template method) 定义了一个操作中的算法 骨架 ,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。 即:处理步骤父类中定义好,具体实现延迟到子类中定义。 开发中:数据库访问的封装、Junit单元测试、servlet中doGet/doPost方法调用、Hibernate中模板程序等等 银行案例: 1 public abstract class BankTemplateMethod { 2 3 // 具体方法 4 public void takeNumber() { 5 System.out.println("取号排队" ); 6 } 7 8 // 办理具体业务 、钩子方法 9 public abstract void transact(); 10 public void evaluate() { 11 System.out.println("反馈评分" ); 12 } 13 14 // 模板方法 15 public final void process() { 16 this .takeNumber(); 17 18 this .transact(); 19 20 this .evaluate(); 21

23种设计模式-----行为模式

故事扮演 提交于 2020-08-16 23:56:43
行为模式: 关注系统中对象之间的相互交互,研究运行时对象之间的相互通信和协作,明确对象职责 1.模板方法模式(template method) 定义了一个操作中的算法 骨架 ,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。 即:处理步骤父类中定义好,具体实现延迟到子类中定义。 开发中:数据库访问的封装、Junit单元测试、servlet中doGet/doPost方法调用、Hibernate中模板程序等等 银行案例: 1 public abstract class BankTemplateMethod { 2 3 // 具体方法 4 public void takeNumber() { 5 System.out.println("取号排队" ); 6 } 7 8 // 办理具体业务 、钩子方法 9 public abstract void transact(); 10 public void evaluate() { 11 System.out.println("反馈评分" ); 12 } 13 14 // 模板方法 15 public final void process() { 16 this .takeNumber(); 17 18 this .transact(); 19 20 this .evaluate(); 21

PHP正则表达式语法汇总

扶醉桌前 提交于 2020-08-13 18:38:11
行定位符、单词定界符实例用法(正则表达式字符集1) 行定位符(^和$): 行定位符就是用来描述字串的边界。"^"表示行的开始;"$"表示行的结尾。如: ^tm 这个表达式表示要匹配字串I的开始位置是行头,如:tm equal Tomorrow Moon就可以匹配,而Tomorrow Moon equal tm就不可以匹配 tm$ 则后者可以匹配而前者不可以。如果想要匹配的字串可以出现在字符串的任意部分,那么可以直接写成: tm 单词定界符(\b、\B): 使用tm可以匹配在字符串中出现的任何位置。那么类似html,utmost中的tm也会被查找出来。但现在需要匹配的是单词tm,而不是单词的一部分。这时可以使用单词定界符\b,表示要查找的字串为一个完整的单词,如: \btm\b 还有一个大写的\B,意思和\b相反。它匹配的字串不能是一个完整的单词,而是其他单词或字串的一部分。如: \Btm\B 非打印字符、特殊字符、限定符实例用法 非打印字符 \cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。 \f 匹配一个换页符。等价于 \x0c 和 \cL。 \n 匹配一个换行符。等价于 \x0a 和 \cJ。 \r 匹配一个回车符。等价于 \x0d 和 \cM。 \s

一篇文章教会你利用html5和css3实现3D立方体效果图

心已入冬 提交于 2020-08-12 20:23:34
【一、项目背景】 随着HTML5 CSS3的出现和发展,使得我们的网页可以实现更加复杂的效果,也使得我们的浏览体验更加丰富,所以今天我们将制作一个正方体的3D效果。 【二、项目分析】 想要利用CSS3实现3D立方体,就要清楚立方体是由六个面组成,分上下左右和前后,考虑这些可以帮助我们更好的融入CSS3的代码。 因此我设置了6个div,作为立方体的6个面。因为定位的原因,一开始所有的盒子都是面对着屏幕这面的,因此要赋予每个面不一样的值,即不一样的位置它才能展现出来。 【三、需要的工具】 Adobe Dreamweaver 【四、项目目标】 实现3的l立方体旋转,鼠标移上去实现缩放效果。 【五、项目实现】 1、打开Adobe Dreamweaver,新建html文档。把标题改为“3d立方体”。 2、在body标签,创建一个div盒子 ,给它class属性,在外层div里面在创建6个div表示立方体的六个面,同样给它们 class属性。 <body> <div class="box"> <div class="box2"> <div class="box-2">top</div> <div class="box-2">btm</div> <div class="box-2">left</div> <div class="box-2">right</div> <div class="box

【科创人独家】PerfMa“寒泉子”李嘉鹏:成长和创业都要能人所不能,真强者何惧资本寒冬

社会主义新天地 提交于 2020-01-09 20:13:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 李嘉鹏看似一路666的成长之路,靠的是超高强度自我驱动。 问题驱动逼出JVM大神 最受不得辜负他人期待 大学时期李嘉鹏主修Flash/ActionScript/Flex,本以为自己会偏向前端发展、做个页游什么的,但入职阿里后却被安置于支付宝架构部,这让他第一时间感受到了大厂的行事逻辑: 要成长为适配环境的人,万不可期待环境为个体改变。 若干年后,李嘉鹏的公众号 你假笨 成为了JVM领域的尖端品牌,自创企业PerfMa的中文名亦为 笨马 。**虽然事主声称两者并无联系,可李嘉鹏身上确实有一种“笨劲”:** 爱较真、认死理、不含糊 。只用了一年时间,他便将自己对研发框架的掌握度从零提升到可以培训新员工。接下来的3年多时间里,他一边不断解决支付宝开发框架出现的种种问题,一边研发、打磨新版本, 当年支付宝98%以上的系统都跑在该研发框架之上 ,几年下来,他成为了体系内最熟悉支付宝研发框架的人。 这个“最熟悉”并非自封,那些年,支付宝各个技术部门碰到解决不了的底层技术问题,都知道**“ 找寒泉子(李嘉鹏花名),他说不行就别费劲了 ”**。之所以有此一言,是李嘉鹏性格所致,**一是极强的责任心,自家部门作为系统底层支持、身后再无友军,任何问题送到自己眼前意味着没有回旋余地,因此他总是尽心尽力尝试解决;** 二是极强的自尊心

使用Java SDK实现离线签名

此生再无相见时 提交于 2019-12-22 00:06:16
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 严格来说,tx-signer并不属于SDK,它是bytomd中构建交易、对交易签名两大模块的java实现版。因此,若想用tx-signer对交易进行离线签名,需要由你在本地保管好自己的私钥。 如果你的目的是完全脱离于bytomd全节点,可能需要自己做更多额外的工作。比如,在构建交易时,需要花费若干个utxo(Unspent Transaction Output)作为交易的输入,如果没有全节点则需要自身来维护utxo。当使用tx-signer构建完成一笔交易并签名后,若没有全节点的帮助,也需要自己实现P2P网络协议将交易广播到其他节点。 本文不会对以上技术细节进行讨论,而是利用bytomd全节点查询可用的utxo构建交易,对交易进行签名并序列化后,同样使用bytomd提交交易。 准备工作 将Maven依赖引入到你的项目中 获取SDK源码 git clone https://github.com/Bytom/bytom-java-sdk.git 打包成JAR包并安装到本地的Maven仓库 $ mvn clean install -DskipTests 在项目的POM文件中添加依赖。其中,第一个依赖是bytomd api的封装,可用于查询可用的utxo以及提交交易;第二个依赖用于构建交易以及对交易进行离线签名。

币币合约执行解析(包含部分源码)

淺唱寂寞╮ 提交于 2019-12-16 10:23:41
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 作者:芈橙 比原项目仓库: Github地址: https://github.com/Bytom/bytom Gitee地址: https://gitee.com/BytomBlockchain/bytom 本文解析的为比原提供的币币合约 模板如下: contract TradeOffer(assetRequested: Asset, amountRequested: Amount, seller: Program, cancelKey: PublicKey) locks offered { clause trade() requires payment: amountRequested of assetRequested { lock payment with seller unlock offered } clause cancel(sellerSig: Signature) { verify checkTxSig(cancelKey, sellerSig) unlock offered } } 导读: 初次接触比原只能合约的请点击 比原智能合约入门 和 Equity 语言入门 学习,方便更好的理解该文档 锁定合约 第一步:调用create-account-receiver 生成 control

白话比原链跨链技术

荒凉一梦 提交于 2019-11-30 02:30:48
随着Bystack的主侧链架构的推出,主侧链之间的跨链问题也成为比原链团队的主要攻克工程难题,当前比原链已经推出了两种跨链的机制,各有不同的侧重点,可能因为本身的跨链技术比较晦涩,本篇想以较为通俗的方式向社区介绍比原链最新的跨链技术。 一些预备知识 跨链简单的来说就是解决如何让一条链上的token转移到另一条链上,本质是将一条链上的价值转移到另一条链,跨链需要保证以下几点: 1. 确保已跨链的资产的妥善保管,不能在原链上能够继续流通,要防止被窃取或者挪用; 2. 确保两条链上转移的资产是等同的,不能A链上减少了100价值的资产,而B链上只增加了50价值的资产; 3. 转移的资产能够安全的再转移回原链上,不能价值只是单向转移,或者转移过去无法转移回来; 基于这些要求,诞生出很多不同的跨链方案,主要是公证人机制,侧链/中继和哈希时间锁等方案,除此之外还有分布式私钥,和公证人机制+侧链混合技术。这里不对这些技术进行展开,如果有兴趣的朋友,可以推荐阅读V神给R3写的关于跨链的文章《Chain Interoperability》。 比原链的跨链选型 比原链的跨链模型也脱离不了上面叙述的跨链模型,当前主要使用的是公证人机制和哈希时间锁的模式。 因为侧链Vapor本身是没有资产的,所以我们使用公证人机制将主链的资产转移到侧链上(实际上是在主链锁定资产,在Vapor侧链创造资产)