关于数字化货币:电子制造业车间管理如何实现数字化

电子制造业车间治理如何实现数字化? 在弄清楚这个问题之前,咱们须要弄明确 电子制造业车间治理次要负责哪些工作——1)生产打算与调度车间治理负责制订生产打算,并进行无效的调度,以确保生产线的高效运行。包含确定生产工作的优先级、制订生产时间表、协调原材料的供给和设施的应用等。通过正当的生产打算和调度,能够进步生产线的利用率,降低生产老本,确保按时交付客户订单。 2)品质管制在电子制造业中,品质是至关重要。车间治理还须要制订和施行品质控制措施。无论是建设品质管理体系、制订质量检验规范,还是培训员工进行品质管制、监测生产过程中的质量指标等,都须要无效的品质管制。做好品质管制对于产品质量的进步,缩小次品率,加强客户满意度,晋升企业竞争力都非常有帮忙。 3)过程改良电子制作相较于传统制造业会更加智能化,因而对于生产过程的改良要求也跟高。在进行车间治理须要更多去关注生产过程,并进行继续改良。 那么数字化可能在哪些方面帮忙进行电子制造业车间治理呢?✅生产数据分析与优化数字化技术能够帮忙车间管理人员收集和剖析大量的生产数据,包含运行状态、设施的效率、生产品质等。通过对这些数据进行深入分析,能够辨认出生产过程中的瓶颈和问题,并提供优化计划。 例如,通过实时监控设施运行状态,能够及时发现故障并进行培修,从而缩小停机工夫和生产损失。通过数据分析和优化,能够进步生产效率、降低成本,并实现继续改良。✅自动化生产与物流随着以后数字化的倒退,人工智能利用潜能裂变开释,正在以更快速度、更大范畴、更深层次地引发一场科技反动和产业改革。自动化设施和机器人的利用,电子制造业的生产车间能够实现生产过程的自动化和无人化,进步生产效率和稳定性。同时,数字化技术还能够利用于物流治理,包含自动化仓储零碎、智能物料搬运设施等,进步物料的准确性和效率。通过自动化生产和物流,能够升高人力老本,进步生产效率和品质。 ✅虚构仿真与优化建设虚构车间模型,能够对生产线进行优化设计和布局,进步生产效率和资源利用率。同时,虚构仿真还能够用于工艺优化和工艺参数的调整,助力产品质量和稳定性的进步。 ✅实时合作与沟通实现实时合作和沟通在日常工作中也非常常见。通过数字化的生产管理系统,能够实时监控生产进度和任务分配,进步生产打算的准确性和响应速度。另外,数字化技术还能够实现近程合作和近程监控,车间管理人员能够随时随地进行生产监控和决策。 电子制造业车间治理如何实现数字化1、利用零碎梳理现有生产治理流程先明确公司的具体情况,比方: 车间接到相干的生产工作后如何发展生产?生产打算制订好之后如何下发到上面的生产车间?现有的生产治理过程中,生产打算的制订以销定产还是以产定销? 对领料治理、产品质检、发货治理、巡检点检记录等等,录入到零碎中。只有把流程梳理分明了,你能力晓得两头须要协调哪些部门、哪些人以及后续如何做优化。 2、将生产流程与零碎联合落实在地梳理好流程之后,就能够把当初遇到的问题和流程相匹配,而后予以优化。 比方:(1)人工统计耗时耗力,那么现有的技术手段能不能优化这一点。 管理者或工人能够间接利用零碎扫码报工,录入数据主动计算每天的计件工资,提交后主动上传云端,无需人工汇总整顿,轻松搞定统计难题。 (2)大多生产都是以销定产来疾速制订生产打算,而后将总打算主动调配至各生产车间、班组;通过零碎能够自动化推送到对应的负责人那里,后续的生产进度治理和生产测验进行实时跟进。 通过将零碎与理论联合起来,优化降级流程,能够解决生产中面临的难题。 3、数据面板可视化出现数据报告做治理的时候很大禁忌就是口头空谈改良而无理论根据!零碎能够主动将一张张的数据报表剖析解决,最初以数据面板的模式出现进去,为咱们治理提供更无力的资料撑持。 咱们通过数据面板,能够剖析: 流程革新降级后,咱们获得成绩有哪些?生产打算的正当制订,咱们缩小的损失有多少?通过数据,咱们能够晓得车间员工的生产效力如何?另外在电子制造业生产车间治理还须要做好物流洽购和设施治理 以上图片模板均来自简道云生产计划,点击链接可获取收费模版>>https://www.jiandaoyun.com

July 11, 2023 · 1 min · jiezi

关于数字化货币:制造业质量管理如何实现数字化转型这份指南请查收

一、什么是制造业品质治理制造业品质治理是古代制造业十分重要的一个方面。它包含了一系列的流动和办法,以确保制作产品或提供服务的过程中,实现高质量规范的指标。制造业品质治理包含品质布局、管制和改良等各种办法和工具,以确保产品或服务在生产期间和生产后都放弃高水平的品质。制造业品质治理的指标是进步客户满意度,缩小退货和培修的数量,并进步生产效率和利润。为了达到这些指标,制作企业须要制订一系列的品质治理措施,例如制订质量标准和标准、施行测验和测试、培训员工等。这些措施的施行将确保产品或服务更加合乎顾客需要和规定规范,进一步提高品质、降低成本,并加强企业的竞争力。随着制造业的倒退,品质治理也在一直地演变。古代制造业越来越注重质量治理的翻新和改良,逐项向着数字化方向倒退。通过引入新的技术和办法,制作企业能够更快地检测和纠正品质问题,进步生产效率和产品质量。 二、以后制造业品质治理的痛点难点之处在以后制造业品质治理过程中依然存在壁垒,其痛点依然非常显著: 1、品质把关缺点在制造业畛域品质生产过程中,可能会呈现各种各样的问题,包含原材料品质、生产过程中的谬误、设计缺点等。而品质治理就是对于产品质量进行把关的要害一环,然而只管一再强调品质治理的作用,依然有不少企业在品质治理方面把关工作不到位。 2、老本管制不到位品质治理其实是老本管制的一部分,在以后制造业品质治理的过程中,依然有很多企业投资大量资金和人力物力进行品质治理,导致成本增加。亦或是因为须要进行各种测验和测试,导致生产工夫更长,进而导致生产效率变低。诸如此类问题都是因为老本管制不到位导致的。 3、业余品质管理人员稀缺制造业须要高素质的员工,他们须要有专业知识和技能,以满足一直进步的客户需要和市场竞争。但在目前的制造业品质治理畛域,业余能力程度过硬的品质管理人员依然是稀缺的。因而企业须要进行业余人员培训,一直进步员工业余程度。 4、供应链治理挑战制造业的供应链非常复杂,须要对供应商和合作伙伴进行监督和治理。制作企业须要建设一套供应链管理系统,以确保所有的供应商和合作伙伴都恪守品质和平安规范。这须要制作企业建设一个通明的单干体系,以确保所有的供应商和合作伙伴都可能了解并恪守企业的要求和规范。 三、为什么制造业品质治理须要实现数字化数字化品质治理数字化是进步生产效率和降低成本,进步产品质量、加强品牌竞争力的重要形式之一。也是企业进步管理水平、实现可继续倒退的重要伎俩。 1、更加精确和及时地收集和剖析数据的须要传统品质治理形式通常依附人工测验和测量,容易呈现误差和漏检等问题。而数字化品质治理能够通过传感器、监控设施等技术实时获取数据,再利用数据分析技术进行解决和预测,从而更加精确地辨认问题和优化生产流程。 2、进步数据处理的效率,缩小人工操作和谬误,从而进步生产效率和降低成本数字化品质治理能够通过自动化技术实现数据采集、解决和传输,从而缩小人工干预和谬误,进步数据处理的效率和准确性。此外,数字化品质治理还能够通过实时监控和反馈,帮忙企业及时发现和解决品质问题,缩小不必要的复工和重工,进步生产效率和降低成本。 3、实现近程监测和管制数字化品质治理能够通过互联网和云计算技术实现近程监控和管制,使企业可能及时把握生产过程中的状况,并及时调整流程和资源,进步生产效率和品质管理水平。 4、使企业更加通明和可追溯以后消费者对于企业自身产品的要求也越来越高。通过品质治理的数字化转型,可能进步消费者对产品质量和品牌的信任度。数字化品质治理能够通过建设数字化档案和溯源零碎,记录产品生产过程中的每一个环节和数据,使消费者可能通明地理解产品的品质和起源。 四、制造业品质治理如何实现数字化在制造业品质治理数字化转型期间,答主认为须要做好以下几个方面的工作 1、确定转型框架与转型门路 2、确定转型办法 3、方针领导:信息技术与经营技术交融 上面以简道云工程项目管理中的生产报工为例来介绍制造业品质治理如何数字化转型 简道云官网指路>>https://www.jiandaoyun.com生产报工和跟踪现成模板蕴含五大外围模块:生产打算工单、二维码流转卡、报工质检流程、生产跟踪档案、产量数据分析。通过此模板,能够帮忙大家实现从导入打算工单、打印生产流转卡、报工质检流程,到造成生产跟踪档案、提供产量 数据分析仪表盘,最终依据工价造成计件工资统计的残缺闭环治理。 这个模板最终能够实现六大亮点: 咱们能够在每一份打算单下面打印一张生产流转卡,并装备专属二维码。手机扫一扫就能够看到对应打算单的产品信 息、打算产量、安顿工序等等。 除了打算单扫码报工,咱们还能够依据本人线下具体定制本人的报工模式,比方: 不管怎么报工,咱们最终都能够造成这样一张车间生产大屏 工单、工作、产量、良品不良品、生产趋势等信息能够摆在车间,也能够摆到生产经理的 PAD 上,还能够造成班组间的排名散发到班组群里,最终让大家真正做到有打算就有后果,有后果就有看板,有看板就有复盘。 更多收费制造业品质治理模板可戳>>https://www.jiandaoyun.com

June 26, 2023 · 1 min · jiezi

关于数字化货币:如何衡量企业的数字化转型和创新程度

一、什么是“数字化转型”对于数字化转型在很多场合都有提及,但总是感觉云里雾里,感觉每个人说的都有情理,又感觉如同不是那么回事儿。这其实很失常。 因为“数字化”一词对不同的企业来说有不同含意。它能够是从采纳新技术——引入自动化操作中的任何一样货色。此外,“转型”这个词就是“变动”的同义词。如何精准的定义“变动”?这显著是不事实的。所以,当把这两个充斥“不确定性”的词联合起来,就失去了一个谜,这个谜始终很难解决,包含很多管理人员。而从实现层面来讲,咱们当下所看到的很多对“数字化”的了解,仍然是“信息化”概念的连续,而并非一个全新概念。 数字转换、数字化、数字化转型?数字转换、数字化和数字化转型是常见的数字化商业术语,但很多人还是没搞清楚三者之间的不同: 总结一下就是: 如果企业只是简略的把纸质信息电子化,那叫数字转换;这种转换可能进一步被优化从而进步组织组织效率,那叫数字化;在此基础上,企业实现了从产品、服务和盈利模式,到客户体验等全方位的从新塑造,这才叫数字化转型。在此基础上再来看概念: 利用数字化技术(例如云计算、大数据、人工智能、物联网、区块链等)和能力来驱动组织商业模式翻新和商业生态系统重构的路径和办法即是数字化转型。从这个定义外面拎出两个外围点: 数字化技术的利用业务或商业模式重塑留神:业务重塑是基本指标,数字化技术只是工具和伎俩,不能轻重倒置。概括一下就是:数字化转型是由数字技术的广泛传播所引发和造成的组织变革。换句话说,数字化转型是一个有投入(数字技术的流传)、过程和后果(组织变革)的过程。而在理论利用中,数字化转型对每个组织来说都是一个独特的旅程,具体过程在很大水平上是由组织文化以及组织架构弹性来决定的。这也就是为什么数字化转型总是没有一个确定的、可复制的门路的起因。 二、以后企业数字化转型的难题企业数字化转型指南《2022全民开发白皮书》中提到了企业数字化转型的四大阶段,并认为在企业数字化转型的四大阶段,全民开发都能够成为其中要害的环节。 第一阶段——认知转型数字化认知是最根底的局部。有了数字化认知能力找到数字化转型的方向,决定了企业转型的深度。粗浅的意识数字化转型的重要性和必要性能力胜利推动企业数字化转型。 全民开发的“全员参加”理念有助于数字化意识和认知在企业员工中遍及和浸透。 第二阶段——治理转型这是最容易被忽视的局部。数字化治理解决的是内部事务,看不到间接价值就会不足推动能源;同时数字化治理是个长期的过程,短期内很难看到问题。从过往的数据看,数字化治理却是决定企业成败的要害,必然是“修身齐家”之后能力“治国平天下”。 全民开发集中企业外部流程于一体,为企业流程重构提供了便捷式工具,有助于企业实现扁平化、麻利 化的管理模式。 第三阶段——经营经营转型数字化经营是最能产生成果的局部:一来经营占据了整家企业日常工作的八成,如销售报表、销量预测、 老本剖析、转化率剖析等环节,这些工作能够通过数字化零碎来实现,而且比人力来做更加全面、迷信 和精确;二来只有在经营数字化上投入精力,一张报表,一条曲线都能够映射到生产环节中,并失去验证, 成果会体现得十分好。 全民开发提倡业务部门提供自主开发零碎解决理论业务问题,能充分调动业务部门业务创新力,促成经营经营转型。 第四阶段——决策转型数字化决策则是最难的局部。很多的决策都是由管理者的教训而来,很难去把它数字化或公式化。而且大部分决策所依赖影响因子相干的数据又很难收集到,而一些通过数据和算法推导进去的论断也很难去压服团队贯彻执行。 全民开发则是须要企业集全业务数据且提倡业务领导数据,为数字领导决策提供无效保障。 综上,数字化转型有三大须要解决的问题: 数字化转型的根底是对企业的认知——在于企业老板的思维和观点数字化工具是辅助而非相对主导——要洞察数字化工具背地隐含的治理实践数字化转型最终目标是企业组织的全面改革——要找到晋升企业竞争力的最佳实际三、掂量企业数字化转型和翻新水平的因素一般来说掂量企业数字化转型和翻新水平因素如下 1、技术利用掂量企业数字化转型和翻新水平的首要因素是技术利用。以后智能化产业倒退迅速,例如大数据、人工智能、物联网等技术利用在企业数字化转型中尤为重要,来优化生产流程、进步产品质量、实现个性化服务、优化企业治理等。同时,企业须要一直地跟进新技术的倒退和利用,以放弃竞争劣势。 2、数据驱动在以后互联网蓬勃发展的条件下,企业须要收集、剖析和利用大量的数据,辨认潜在机会,发现问题,进步决策的准确性和效率。另外企是否建设一套残缺的数据体系,将数据整合、存储、治理和剖析,以便更好地利用于业务决策也是评判企业数字化转型的重要因素之一。 3、业务翻新产品始终是企业的基石。企业须要一直地开发新产品、新服务、新业务模式,以应答市场和消费者的需要变动。施行业务翻新,企业能够进步市场占有率、减少收益、提高效率和品质,从而实现可继续倒退。 4、组织变革通过调整组织构造、欠缺人才激励机制、进步员工培训等形式,企业可能营造翻新文化和发明翻新环境。同时,企业须要建设一个欠缺的翻新生态系统,包含与供应商、客户、合作伙伴等的严密单干,以实现共享和互动。 5、用户体验用户体验无论何时都须要企业重点关注。企业在数字化转型和翻新过程中,须要始终保持用户需要至上的准则,以提供更好的产品和服务体验。同时,企业须要一直地优化用户体验,通过用户反馈、用户考察等形式,一直地改良和欠缺产品和服务,一直进步企业数字化转型水平。 四、对于企业如何做好数字化转型的倡议企业数字化转型依然是一个长期的过程。第一抓治理,改革企业文化,但这是一个循序渐进的过程。组织灵活性要扭转,更好的适应变动。最初你的流程必须再造,千万不要只是把现有的流程用代码从新映射到数字空间,那就糟了。第二进步能力。搞清楚要建设什么能力,哪些先建,哪些后建,哪些是能够请他人帮忙。其次要吸引人才,而且要害是可能让现有的人才也能学习新的货色。另外,学会利用相干数字化软件进步工作效率也是企业数字化转型的重要一环。如简道云零代码软件系统实现企业数字化转型蓝图 更多信息请移步官网>>「简道云官网」零代码利用搭建平台 (jiandaoyun.com)简道云性能地图 泛批发性能地图 更多场景利用模板请戳>>解决方案核心,全行业解决方案,解决方案园地-简道云 (jiandaoyun.com)心愿本文对你有所帮忙!

June 19, 2023 · 1 min · jiezi

关于数字化货币:数字化转型的难点是什么该如何突破

01为什么要进行数字化转型?数字化转型不仅是企业提高效率和竞争力的必经之路,也是市场发展趋势的体现。 晋升业务效率:数字化转型能够采纳自动化流程、数据分析和智能化技术,从而进步企业业务的自动化程度,优化流程和晋升效率。拓展市场份额:数字化转型能够让企业更好地理解消费者需要,开发更加合乎市场需求的产品,从而进步竞争力。晋升客户体验:通过数字化转型,企业能够打造更好的客户体验,提供疾速和全方位的购物服务,从而进步客户满意度,并让客户更虔诚。促成翻新倒退:数字化转型重视科技翻新,以数据为外围,以翻新为目标,推动企业翻新倒退,进步市场竞争力。02数字化转型难点是什么?不论是对于什么类型的企业,数字化转型往往存在一些艰难: 信息化框架落地难:IT 部门对业务构造、部门分工了解不够深刻,往往是业务部门说须要什么就给什么,无奈基于全局给出残缺的信息化框架;信息化零碎的搭建老本太高:代码开发须要昂扬的工夫、人力老本,很容易呈现“开发实现后,需要又变了”的状况。03面临挑战如何解决?企业的数字化转型常见的两种模式为:自主开发软件和购买规范产品。其中,自主开发软件效率低、开发周期简短、保护艰难;购买规范产品只能满足大部分需要,个性化的实现须要大量的投入。企业数字化转型的第三种模式是低代码或零代码,即提供一个利用开发的平台,在平台上客户能够依据自有业务流程,以利落拽可视化的形式构建利用。低代码/零代码的模式可能综合常见两种模式的长处,是最为省时省力的模式。 怎么了解零代码?从实质上来说,零代码平台还是一个技术性产品,是一个“工具”,企业成员能够用这个工具,在没有技术人员反对的状况下,基于图形化拖拽、参数化配置等更为高效的形式,实现疾速构建、数据编排、连贯生态、中台服务,去“实现”一些简单的信息化需要,实现数字化转型中的场景利用翻新。这个需要能够是流程审批、也能够是物料收集,也能够是数据看板。 点击进入零代码平台:https://www.jiandaoyun.com零代码有哪些劣势?1.突破业务竖井传统开发模式下:业务、产品、设计、开发、测试与运维人员各司其职,且各有一套畛域内的工具和语言,长久以来很容易造成一个个 “竖井” ,让跨职能的沟通变得艰难而低效。不同业务零碎之间的数据互相隔离,不能综合应用,使得企业难以进行跨职能的数据相关性和因果剖析,也难以实现跨职能的数据自动化。比方要剖析产品价格调整对财务数据的影响,这个工作在任何一个孤立的信息系统中是无奈实现的,须要从销售、营销、财务等多个零碎中取得数据。 图片起源网络零代码能够很好的改善这一问题,企业能够通过在平台构建各类利用的形式,打造一套可能互相联通的数字化生态体系,加强跨职能沟通,突破业务壁垒。零代码具备先天的数据流动劣势,企业在平台上构建的利用越多,数据互通能力就越强,通过数据和权限的配置即可轻松实现多个利用之间的数据关联,实现业务链的全程溯源,解决企业信息孤岛的问题,从而充沛开掘数据价值,为企业管理者提供更多的决策依据。 2.性价比高零代码的学习老本较低。上手容易,无需通过太多业余的训练,业务人员也能够疾速上手,通过“利落拽”,基于模板或者可视化界面疾速生成利用,因为简化合作,带来的老本节俭甚至不止十倍。落地周期短。零代码疾速实现的个性极大地缩短了行业需要落地的周期,也合乎古代社会节奏快、倒退快的趋势;缩小零碎运维老本。零代码平台自身提供了云资源服务,所以对于搭建者来说不必放心服务器、中间件、数据库等底层的运维。 3.场景丰盛近年来,零代码对业务场景的还原能力一直攀升,对于大部分企业的需要,例如大型的供应商治理、人事行政OA治理、财务报销、生产治理、项目管理、进销存、ERP、MES等罕用场景,零代码都有足够的劣势来胜任。 4.麻利商业环境变化多端,利用迭代跟不上业务变动,零代码的“快”成为必须。任何一个企业的业务流程都不会一尘不变,可能利用刚开发完,需要就产生了变动,面对随时可更新迭代零碎业务性能,传统软件的更新迭代就显得很轻便,利用迭代跟不上业务变动。相同,零代码能够让其变得简略许多。 零代码在企业中可表演哪些角色?1.补齐业务短板企业能够通过施展零代码灵便、疾速上线的劣势,去补充以后信息化环境下的业务短板。通过一些轻利用的模式作为原有零碎的补充和延长。让业务部门更快的适应和理解零代码平台的能力边界,为将来建设独立残缺的业务零碎做好筹备。 2.搭建独立零碎通过零代码平台构建独立的利用零碎,特地是新的业务线所须要的信息化零碎,通过零代码帮忙企业疾速落地整套信息化流程,并且依据业务推动的状况及时进行迭代、调整,极大的升高了信息化零碎在新的业务畛域的试错老本。 3.构建互联生态企业能够通过在平台构建各类利用的形式,打造一套全流程、全闭环、全自运行的零碎,打造一套可能互相联通的数字化生态体系。零代码凭借“多”“快”“好”“省”的利用开发个性,可能无效地解决企业和组织在数字化转型过程中遇到的全局优化与碎片供应、稳固经营与麻利迭代、老本与效率、多数推动与全员参加的矛盾,帮忙组织降本增效、晋升用户体验、激发组织生机,实现数字化转型的终极目标。

June 7, 2023 · 1 min · jiezi

关于数字化货币:数字化转型危与机20年老厂的升级之路

“投资大、周期长、见效慢”,是每一家企业在思考数字化策略时,都会纠结的问题。 一、打江山容易,守江山难 企业在疾速扩张的过程中,往往能够不须要过多的思考细节的问题,跑马圈地的打法会更加无效。 然而市场占有量开始饱和,幸存者的竞争更加残暴,让每一家企业开始聚焦在如何降本增效,进步产品质量下面。 而对于一家曾经拼杀了20年的传统汽配厂商而言,10余家工厂,6000员工的高效协同,曾经成为了管理者必须面对大课题。而织信将同客户一起基于低代码开发,摸索一条新的数字化转型之路。 二、低代码搭桥铺路,链接“数据孤岛” · “你们能不能对接一下用友U9?”· “电子秤是否在零碎中读取到数据?”· “咱们的打印机能够对接模板生成条码标签吗?” 这是织信的调研人员来到客户现场接到的第一批问题。 在这样流程非常复杂的业务场景下,围绕办公、生产车间制作研发、供应链上下游、洽购、仓储、运输和经销商治理,陆续洽购了十几款软件系统。 然而这些软件系统因为供应商不一,往往并不具备互相贯通的能力。后续须要让各供应商来开发对接的接口,二次开发老本可能都超过了原先的洽购老本,甚至有的零碎原厂都曾经不在了,基本找不到人来保护。 面对这样的问题,织信的开发人员在现场,立刻通过查阅用友的相干接口文档,通过织信平台的疾速开发和自定义API能力,间接调通了对用友零碎的数据调取,将本来一周的工作量在几小时内就实现了,这让企业信息部负责人眼前一亮。 咱们能够施展织信灵便的配置劣势,把它当作一个万能接口,在不须要对原零碎进行大规模调整的前提下,让织信平台的利用被动适应原零碎,将数据都拉取到织信平台上来,这样咱们就能够轻松对这些数据进行二次解决了。 数据是一个企业的微小资产,从数据的整顿和剖析可能清晰的理解企业的经营情况和优化方向。然而数据之间互相孤立,彼此难以联通,便会影响到业务数据的整体性价值。因而将数据联通成为了新阶段数字化转型的重要一步。 三、低代码赋能,提需要不再是“西天取经” 心愿能用够自定义条码标签的零碎。生产部门提了这个需要曾经1年多了,调侃到这比西天取经还难。 在织信来之前,给生产进去的产品贴条码始终是一个大问题,因为厂商的要求须要依照固定格局来打印标签,每种格局都是靠Excel去编制模板,订单编号、条码、二维码等等内容都会消耗大量的制表工夫。 然而这个需要对于信息部来说,也很难解决。是把它加在销售零碎中,还是ERP中,都是个问题,数据拉取、后续拓展等问题都须要考量,这导致一个业务过程中迫切需要解决的问题一再搁置。 对于连贯零碎数据,生成自定义标签类的需要,织信解决起来就十分的棘手了。 咱们沟通完需要当前,通过自定义页面疾速构建出了生产部想要的标签格局。而后对接标签打印机,立马就打印进去了想要的内容。整个过程也变成十分的简略,不须要依赖原零碎。 像条码标签这一类的问题,在其余业务场景下还有很多。低代码对于这种短、频、快的需要能够说是隔靴搔痒。通过简略的培训,开发人员都能够疾速上手,通过简略的搭建就能够生成想要的功能模块,间接投入到生产中去,做到需要的疾速响应,疾速上线。 四、低成本买通上下游供应链 以往供应商往往是被隔离在信息化之外的,企业外部的信息化再强,一旦波及到供应商的染指,出于数据安全和流程得思考,并不会给供应商外部账号。 然而业务上例如运输进度、供货量、供货周期,甚至是货品的批次,其实都须要单方互相同步。 织信依据企业原来的业务流程,量身定制了一套从前采的投标、议价、确认供应商,再到后采的供应商生产协同全流程的供应商管理系统,比起原定打算间接洽购的成熟零碎来说。整套流程的开发岂但大大降低了老本,还将整个供应链激活了。 通过了一段时间的磨合和沟通,咱们发现数字化策略推动的难题次要还是在于传统的开发模式须要投入大量的人力物力和工夫。 这个躲不开的因素,会导致企业在评估老本和危险时望而生畏。而基于低代码开发平台的数字化转型路线,恰好是帮忙企业用更少的人力投入和更短的工夫,来做数字化的尝试和冲破。 “数据连起来、需要提起来、闭环走起来”。迈出第一步,让每个人真切的感触到数字化带来的益处,这样策略的推动才会缩小妨碍。 和千千万万家企业一样,他们遇到过所有传统制造业数字化过程中的问题,然而通过尝试和翻新,开辟出低代码数字化转型的新模式。 等到你们第一期的我的项目全副落地,咱们将开始思考更深层次的数字化模式,要把低代码的能力全副转移过去,加强本身低代码开发实力,做到齐全的自主可控。 “将低代码能力转移给用户”这对于织信来说,并不象征断了业务。其实是一个双赢的场面。 织信能够更加有精力专一在平台的迭代降级上,为用户提供更加无效的低代码开发工具,赋能更多的业务场景。 企业也能够真正实现数字化策略的自主可控,及时无效地应答业务拓展遇到的各类问题,真正做到“外行的事,外行解决”。 目前低代码平台在业务上的实用率还有很大的晋升空间,这须要有更多的客户和织信一起独特实际,独特成长。织信曾经累计为20多个行业,30000+企业用户提供低代码技术支持。在不同的行业,提出深度场景解决方案,致力于成为企业数字化转型首选计划。 出于客户业务流程窃密要求,本文不展现波及具体客户信息的内容,如您想要深刻本案例的更多细节,能够联系业务人员,为您提供专属的计划咨询服务。

April 21, 2023 · 1 min · jiezi

关于数字化货币:案例丨多元业态管理服务厂商如何走通数字化转型之路

对于多元业态治理服务厂商来说,不同业态客户的应用习惯不一样,从而导致服务过程中的服务有所区别,是这类服务厂商数字化转型的外围需要。上面就以全国当先的阳光智博为例,看下他们是怎么数字化转型的。 企业介绍 阳光智博服务由两家世界500强企业加持的服务型企业,是一家布局全国、品质当先的综合物业管理及商业经营服务提供商。是全国当先的物业管理+商管企业,服务业态波及住宅、商业、医院、学校、长租公寓、产业园等多种类型,细分畛域劣势显著。 我的项目背景 作为继续蝉联中国物业服务百强企业的阳光智博,在实践中逐渐建设了物业服务规范体系,输入标准化的物业管理服务。然而,在多元业态和根底物业管理服务的联合上仍是其数字化转型的弱项,急需一个能满足其“多元业态+根底物业管理服务”业务的数字化解决方案: 1、须要连贯阳光智博客户的自有零碎平台和阳光智博自有零碎平台,搭建一套软硬件联合、后盾零碎与终端操作联合的智能化主动管控零碎; 2、须要按不同我的项目疾速二次开发,满足不同业态客户的全场景需要; 3、须要满足不同“多元业态”应用人群的应用习惯。 通过了多方面的比照考查,阳光智博发现织信的自定义能力、零碎对接能力和二次开发能力能够很好地满足其对不同我的项目疾速开发交付的需要,高效打造多元业态场景利用。最初,阳光智博应用织信搭建了一个以“医院+物管”为应用场景的医管科技平台,并借此测验“多元业态+根底物业管理服务”业务场景数字化转型的可能性。 我的项目需要 1、治理一体化 医护端、物管端是相互独立的零碎,无奈数据互通和对立治理。须要通过一个治理平台进行业务的调度和流转。 2、办公去纸质化 传统医管后勤服务中繁琐的纸质注销、纸质签字等流程是阳光智博数字化转型中必须解决的问题,传统的模式节约极大的人力,无奈进步企业的工资效率。 3、操作个性化 应用人群分类精密是阳光智博零碎的治理的难点,在“医院+物管”的业态中,医院人员、一线业务员、管理者等不同身份的使用者都有不同的应用场景和习惯,须要依据不同使用者自定义个性化应用办法和工具。 4、数据可追踪化 在过来,医护端和物管端的数据须要通过导入导出的形式进行治理,导致数据出错率较高,工作效率、可追溯性较低等结果。那么,能对接、调度、汇总医护端和物管端的数据也就成为了数字化管理系统的外围需要。 5、数据可视化 数据自动化解决并可视化展现是进步企业决策正确率和效率的重点。 解决方案 1、零碎设置 因为应用场景的复杂性,系统配置了语音关键词、运送类型、医护信息等七种类型的流程配置,同时每个场景反对多种类型个性化流程配置,并在将来继续迭代。 2、调度治理 调度核心会集物管端所有业务流程治理,包含派单、工作创立、工作揭示等。通过调度核心,物业管理人员进行每日工作的派发与进度跟踪,保障工作高效有序地推动。 3、医辅治理 买通医护人员下达陪检、运送等工作的环节,缩小人工操作的流程,在零碎中把工作自动化流转至物管端,进步服务效率。同时,零碎反对语音输入信息,解决医护人员工作中无奈下单工作的难题。 4、巡检治理 依据不同我的项目自定义进行巡检工作的明细,并自动化记录巡检打卡等过程,让巡检可追踪化。 5、数据可视化 通过零碎中台汇总所有业务端的数据,节约人员数据整合、数据计算等操作工夫。管理者通过可视化的图表数据,理解和剖析业务的理论状况,推动服务质量和进度。 计划成果 1、利用开发麻利化 阳光智博通过应用织信企业级低代码开发平台,解决企业开发需要性能绝对简单的零碎时开发成本高和开发周期长的问题。比照传统开发,开发周期约缩短了73%,人力老本缩小约59%。 2、我的项目可复制化 医管科技平台是阳光智博“多元业态+根底物业管理服务”业务数字化转型的第一步。在此基础上,后续延长至其余业态时,可实现疾速部署和投入使用。 3、利用应用被迫化 阳光智博利用织信平台的自由度,满足医护人员和一线业务人员等应用习惯差别微小群体的应用需要,让所有人不排挤应用零碎,进步了零碎的使用率,比照过来,零碎的应用满意度进步约20%。 4、多端业务一体化 实现多端业务一体化建设和灵活性搭配,缩小重复性的人力工作,均匀晋升了54%的工作效率。 5、治理可视化 通过零碎使治理可视化,用数据推动治理。在任务分配和绩效治理方面,都能以数据为撑持,进步治理功效。 6、低代码赋能 如果你的企业也正被数字化转型困扰,市场上的产品无奈满足转型需要。能够试下织信企业级低代码开发平台。织信曾经累计为20多个行业,30000+企业用户提供低代码技术支持。在不同的行业。提出深度场景解决方案,致力于成为企业数字化转型首选计划。

December 28, 2022 · 1 min · jiezi

关于数字化货币:深入探讨制造业数字化转型的核心与意义

对于生产制作企业来讲,当下如果不进行数字化转型的话,很大概率会被时代所摈弃的。为什么这么讲?因为在将来的很长一段时间,你能够充沛理解到,数字化转型未然成为了制造业向前的主旋律。既然数字化势在必行,那么咱们必须分明制造业数字化转型的外围是什么,而在这之前,咱们首先得先明确什么是制造业数字化转型? 一、什么是制造业数字化转型?有何意义?1、什么是制造业数字化转型? 制造业数字化转型,是策略主导下的业务改革,是数据驱动、智能助力的研发、生产、经营、服务改善,最终推动盈利模式优化和用户体验晋升。它须要推动业务与零碎双向交融,以数字化为外围,借助网络化伎俩,实现智能化赋能,保障产品和服务高效保质交付,继续晋升企业外围竞争力。 2、制造业数字化转型有什么意义? 当初的科技反动曾经是影响到了中国的每一种行业。对于中国的行业以及中国的经济构造都会造成肯定的扭转。无论是什么企业,都在往着更高科技的这一方面进行转型。数字化也成为了制造业要走的必须之路。其实当初中国的许多制造业曾经开始了数字化转型。其中就包含了人工智能新资料以及智能制作等等。这也是基于弱小的互联网为根底和弱小的5g为根底。 制造业更多的时候不再须要人力,而是通过机器以及人工智能的运行来实现制作。对于企业来说节俭了人力的老本以及晋升了工作的效率。数字化转型之后的制造业,在面对危险的时候其实更有把握。特地是在后疫情时代,随时可能暴发的疫情(即便当初放开了也一样),这也是会让制造业面临十分大的挑战,而数字化转型之后的企业,在面对这些挑战的时候就能更加慌慌张张的应答。 (征询织信Informat客服获取制造业数字化转型一整套解决方案) 二、制造业数字化转型常见窘境?1、策略方向含糊:短少数字化转型相干教训,找不到转型降级切入点; 2、价值闭环缺失:数字化转型成绩无奈掂量,管理者看不到切实成果; 3、转型意识较弱:不同层级管理者转型意识强弱水平不同且没有达成对立; 4、人才建设有余:不足数字化转型人才培养的形式和办法以及内部资源; 5、基层参与度低:中亮层的转型战路没有很好的拆解并传播给基层。 三、制造业数字化转型的外围是什么?制造业数字化转型的外围是策略与组织能力协同、数字化能力建设、数字化转型价值闭环。 1、制作企业须要建设数字化的经营模式,通过互联网、大数据等信息技术来晋升效率。同时,还须要建设基于工业互联网的智能生产体系,实现生产过程透明化和可追溯化,从而进步产品质量和生产效率。 2、在产品全生命周期内进行品质治理和管制,利用物联网技术实现产品的智能化治理。 3、通过数据采集和数据分析来优化工艺流程和设施运行状态,进步产品质量和性能。 4、利用人工智能技术对产品进行故障预测、剖析并主动解决故障问题。此外还包含如何利用云计算和大数据等技术来进步企业的敏捷性和柔性化能力等。 5、策略与组织能力协同:制造业的数字化转型工作也同样实用,为了确保策略无效执行,须要匹配相应的组织能力,其包含员工能力、员工志愿和员工治理三个方面。 6、数字化根底能力建设:数字化能力建设一是要使用新一代信息技术工具,对企业经营治理各环节实现数字化,比方能够利用低代码工具搭建数字化经营治理平台。而工具仅仅只是帮忙企业实现数字化建设的桥梁,除了正当利用工具外,还须要对企业外部常识体系的进行更新,进步企业工作人员的数字化认知。程度,以及学习其它数字化转型成功经验,从而帮忙制造业建设数字化能力。 7、数字化转型价值闭环:对数字化转型成绩的量化是价值闭环的外围工作,通过绩效评估拉通KPI指标来实现转型过程中从听到看、从延时到实时、从销售到服务、从离线到在线的价值体现,撑持制作企业从业务数字化到数字化业务的工业互联网和生态圈平台建设,打造可视、可管、可控为指标的高低一体化数字化经营治理平台,从零碎生产数据向数据发明价值转变。 8、由上至下的组织策略:这也是不容忽视的一个重点,企业外部从决策层到管理层、经营层、执行层,都应该有一个对立的策略,且组织能力与战屡协同匹配,自上而下,贯通全级,协同企业工作人员施展其价值。制造业数字化转型胜利与否,与企业的组织能力是挂钩的,必须强而无效的组织能力更好的协同企业数字化转型的战略目标。 四、“制造业数字化转型”胜利案例有哪些?1、内燃机企业数字化转型案例 这家内燃机制作公司在中国的制造业历史上也是非常的悠久,作为很多年的老企业,其实它始终是潜心研发内燃机。作为一个传统的制造业,它在当地的影响力也是十分的微小。然而在面对新时代的挑战的时候,他们也是踊跃的做出了扭转。他们次要是从以下3个方面进行了全新的降级和全新的优化。 第1个方面就是建设了信息的一体化,采纳大数据的形式来让本人的信息管理更加的不便从容。 第2个方面就是对客户的辨别。通过最新的技术,建设了客户为核心的治理理念。把所有客户的信息进行整合之后,再散发到各个部门当中。这样的目标也是建设了残缺的一套管理体系。 第3个方面就是在他们售后的晋升。通过建设网站,微信公众号,h5端等多种形式来满足客户的售后要求。 2、吉利汽车数字化转型案例 疾速崛起的国内汽车制造商吉利,则其利用数字总线理念减速了整个制作流程的优化。通过对于包含冲压、焊装、涂装和总装等车间和流程工序的 3D 仿真, 实现了生产流程的虚拟世界和物理世界的高度一致: 首先是仿真数据跟现场数据的误差只有 13 毫米;其次是所有的 CT 节奏误差管制在了 0.5 秒;再就是所有机器人在仿真零碎的数据跟现场理论完全一致。于是,吉利生产车间的监控人员在控制室里能够管制现场任何一台机器人的启动、进行,能够调动现场任意一个程序。整个流程的高精度数字化镜像,使得现有流程的优化,以及新产品上线时生产线的调整等,都能够在仿真零碎中进行设计和预演,大大缩短了实体工厂的调整工夫,进步了生产线的利用效率,升高了单车老本。在两个制作基地的试点胜利后,吉利正将这一实际迅速推广到团体更多工厂。 除此之外,吉利汽车作为一家集团型企业,依然须要大量的技术人员来满足各事业部门的日常数字化需要。在2021年引入了 织信Informat 企业级低代码平台,通过其高效的低代码开发能力,赋能技术与业务人员,大大晋升了需要交付效率,解决了需要长年沉积的难题。 通过以上两个案例,咱们也给大家简要的剖析了制造业数字化,它到底有着怎么的意义,以及它的外围是什么。同样,这2个案例也只是咱们筛选进去的局部案例,真正胜利的企业远不止于此。数字化转型也成为了目前各大制造业企业最重要的一件事。只有实现了数字化转型,在面对挑战和时机的时候,能力有更好的施展。 以上就是明天分享的“什么是制造业数字化转型?制造业数字化转型的外围与意义”全部内容,如需理解更多数字化内容,或者您还想进一步弄清楚:如何在一周的工夫里,用织信低代码疾速搭建数字化零碎?欢送增加客服企业微信获取制造业数字化转型解决方案~

December 16, 2022 · 1 min · jiezi

关于数字化货币:如何进行企业数字化转型传统企业数字化转型的3大底层逻辑

2022年传统企业倒退的关键词,不是资本,不是股市,不是楼市,不是品牌,而是五个字,数字化转型。 然而碰到这五个字,传统企业又不敢转、不会转、不想转。究其基本,次要的起因是传统企业不理解数字化转型的底层逻辑。而哪怕是你当初才弄清楚数字化转型的底层逻辑,那你也比他人后退了一大步。至多在企业数字化转型的大方向上具备了一些思考和想法了。 那传统企业数字化转型的底层逻辑是什么呢?实际上就是三个关键词: 数字化技术利用场景商业模式什么是数字化技术?数字化技术就好比是农业时代的锄头、工业时代的电力一样,也就是指数字经济时代的云计算、大数据、物联网、挪动互联网、人工智能等一些技术,俗称为“云大物移智”。 什么是利用场景?利用场景就是企业的具体业务,就好比农业时代的耕田,工业时代的电灯,比方传统的营销加上网红直播之后就成为了线上营销。 比方你的产品设计应用云平台之后,就成为协同设计。比方以前你上火车的时候,是人工去查身份证,当初呢,是人脸识别的,人工智能去辨认你的身份。比方你以前的传统洽购用了在线零碎,就是数字化洽购。比方你传统的车间进行了机器人的革新,进行了智能化的革新,就成为了智能工厂。以上这些就是利用场景。 什么是商业模式?就是农业时代耕田卖食粮,养家糊口,这就是商业模式,工业时代建筑厂房出租,这也是商业模式。 商业模式肯定要记住,它是12个字组成的,它不是一种艺术,而是一种迷信。商业模式是哪12个字呢?即:产生价值、传递价值、实现价值的形式。 比方以前做房产中介的,当初通过技术利用,让用户在手机上找房子,发明了一家又一家新的互联网公司。比方以前做装修软件的公司,投资了一家定制的家具公司,从而扭转了它的商业模式。比方以前卖飞机发动机的,以前是依照我卖一个发动机要收多少钱,当初转化为依照数据量和服务来免费。以前卖电视机的,当初靠卖电视机基本挣不了钱,靠的是收看节目的免费挣钱。这样子,商业模式产生了扭转,因为技术的利用,再加上利用的场景,最初与商业模式三者的翻新交融,就造成了咱们企业的数字化转型的底层逻辑。结语: 正当并且无效地使用数字化管理工具,不仅能够让咱们工作颠三倒四地进行,还能最大水平保障工作指标的达成。我举荐织信,它内置了100多个利用零碎模板,笼罩OA、ERP、CRM、MES、我的项目、人事、企业服务、集体及组织等多个利用场景。现成模板只需点击一键装置即可收费应用。同时领有提供可视化组件(附件、日期、文本、单选多选、函数、数据关联、团队成员抉择、联级抉择、数据仪表盘、视图、自动化、脚本)等性能,反对用户自行配置全新的利用零碎,灵便解决业务的新需要,是成为企业开启新时代和数字化转型的重要引擎。 以上就是“传统企业如何做数字化转型?弄懂这3大底层逻辑你就懂了”的全部内容,心愿对大家有所帮忙。如需理解更多传统企业数字化转型内容,或想进一步理解:一周工夫内,如何应用织信Informat低代码疾速搭建数字化利用零碎?能够自行至官网获取实操办法与解决方案~

October 21, 2022 · 1 min · jiezi

关于数字化货币:怎样才算成功的数字化转型

怎么样才算“数字化转型”胜利呢?这是很多人问咱们的一个问题。 要探讨这个问题之前,咱们要先理解下:数字化转型是什么? 数字化转型在百科上的解释是:建设在数字化转换(Digitization)、数字化降级(Digitalization)根底上, 进一步涉及公司外围业务,以新建一种商业模式为指标的高层次转型。数字化转型Digital transformation是开发数字化技术及反对能力以新建一个富裕生机的数字化商业模式。 为了防止陷入“假大空”的漩涡中无奈抽离,咱们对这段解释进行重点提炼: 建设在数字化转换、数字化降级的根底上进一步涉及公司外围业务由此可见,企业是否数字化转型胜利,能够看以下两点: 1、是否曾经实现数字化转换和数字化降级 数字化转换和数字化降级的体现在于,企业是否曾经实现信息数字化和流程数字化。信息数字化艰深点来说就是把企业中的所有信息都用计算机进行对立贮存和治理,比方员工的信息、固定资产的信息、策动计划书等,Excel、word就能进行贮存和治理,在传统企业中,根底的办公工具曾经能满足大部分需要。 流程数字化简略点来说就是对企业中包含商业、研发、生产制作等工作流程以线上的模式进行查看和治理,比方比拟常见的OA零碎,能够把员工缺勤考核的流程转移到线上,又比方我的项目流程管理系统,把我的项目流程的把控转移到线上,不必每天追着某个或某些人始终口头催进度,这些都是流程数字化的体现。对于须要数字化转型的企业来说,先实现数字化转换和数字化降级才是根底。 2、是否进一步涉及外围业务 进一步涉及外围业务这句话一眼看过来没什么问题,然而如果认真看的话,你会发现,这句话如同短少了主语,到底数字化转型须要什么进一步涉及外围业务,管理者?员工?还是老板?咱们无妨跳出概念文章一开始百度得出的解释,从数字化转型这个词登程,兴许就不难得出,数字化,也就是由数字、数据建设起适当的数字化模型就是咱们要找的主语。 在进一步涉及外围业务的过程中,咱们要从理论登程,去理解企业外围业务是什么,数字化要如何涉及外围业务、涉及的妨碍是什么,在理解完这些问题当前,再通过低成本高效率的办法去解决后面的问题。 以吉利控股集团为例。 浙江吉利控股集团是国内当先的集汽车整车、能源总成、要害零部件设计、研发、生产、销售和服务于一体,并涵盖出行服务、数字科技、金融服务、教育等业务的寰球创新型科技企业团体。在转型过程中,困扰于需要沉积(存在大量的业务需要和变更,本身的研发人力难以疾速响应,导致业务需要沉积)、研发老本(研发人员数量居高不下,导致整个公司在研发方面投入了大量的人力老本,公司经营老本亟需进行结构化调整)、数据壁垒(外部零碎简单多样,部门之间存在较大的数据壁垒,给公司信息化治理经营造成了微小的妨碍,心愿可能构建一套一站式信息化平台)三个难点中。 对于吉利来说,一个具备灵活性、可拓展性的高性价比工具是转型的重点。在一番筛选后,吉利集团选择了用织信Informat低代码开发平台自主搭建利用创立中台和系统集成中台,把外围业务的数字化搭建在管理系统中,赋能团体对立的业务、流程和数据中台,构建团体数字化生态,实现了数字化转型。 在吉利团体的这场胜利的数字化转型中,吉利团体解决了开发治理长年沉积的问题,开发周期均匀缩短61%,人力投入缩小47%。实现团体内各组织、业务部门通用治理的一体化建设和灵活性搭配,晋升工作效率。所以说,当企业把涉及外围业务的过程中的问题和解决办法梳理明确后,能力很好地实现数字化转型。 对于企业来说,上文说的两点是一个递进的关系,信息数字化→流程数字化→进一步涉及公司外围业务,这是企业数字化转型的重点,数字化转型素来都不是欲速不达的货色,只有把这些点都实现了,才算是进入数字化转型。当然,三个步骤同时做,不按程序也是能够的,只是对于企业来说老本上偏高,无论是人力、物力、财力或者工夫老本。

August 8, 2022 · 1 min · jiezi

关于数字化货币:九江银行发布手机银行50版-mPaaS提供技术支持

港股上市公司九江银行的数字化转型获得最新进展。6月16日,九江银行正式推出手机银行5.0版本,新版本从底层架构到交互界面进行了全新降级,新增“千人千面”个性化服务体系,满足多元化的用户需要,晋升用户体验。 近年来,随着科技倒退,金融行业的数字化转型热火朝天。2021年,九江银行开始深刻推动“数字九银”策略,减速推动批发业务在线化、挪动化及智能化转型。 目前,手机银行等挪动端曾经成为银行最重要的对客服务渠道之一,也是九江银行数字化转型的重中之重,承载着加大金融下沉力度,翻新金融服务,晋升用户体验的战略目标。 据悉,新版手机银行的“千人千面”服务体系,新增极简版、农村振兴版、关爱版交互界面,满足多元化用户的需要。重点推出代发、VIP、新客、商户等四大客群专区,无效扩充业余服务覆盖面。除了传统金融服务外,新版手机银行还对生存场景类服务进行全面降级,汇合生存缴费、电子社保卡、税费查问缴纳等丰盛本地生存服务。 记者理解到,九江银行和阿里云单干,通过mPaaS重构新一代手机银行利用。mPaaS是蚂蚁团体推出的挪动开发平台,为挪动端开发、测试、经营及运维提供一站式解决方案,可能无效晋升APP的交互体验,同时保障APP合规及平安。目前曾经广泛应用于金融、政务、互联网、批发等行业。 公开材料显示,九江银行是江西省第一家、中部地区第一家、全国第二家在香港联交所主板挂牌上市的地级城市商业银行,总资产冲破4000亿元,在寰球权威杂志英国《银行家》公布的2020年寰球银行1000强榜单中,跃居寰球银行排名第322位,国内银行业排名第54位。 九江银行相干负责人示意:“将来,九江银行将持续以‘数字九银’为导向,保持数字化转型倒退,加大金融下沉力度,翻新金融服务,鼎力推动场景金融和金融生态建设,欠缺性能渠道,一直晋升客户体验,做一家‘有温度的银行’。”

June 21, 2022 · 1 min · jiezi

关于数字化货币:石油化工行业数字化转型如何赋能生产管控上篇

近来,整个科技行业、互联网界都在风行数字化转型。那么到底什么是数字化转型?为什么要做数字化转型?数字化转型能带来哪些收益以及如何进行数字化转型........ 围绕这些问题,本文将联合石油化工行业的实际利用,分为高低两篇系列文章进行深度论述与解读,也欢送大家退出文末技术号独特交换探讨。 如对电力行业云上运维监控内容感兴趣的小伙伴们,可浏览此篇:「电力行业」辞别传统运维,拥抱全链路“云上监控” 一、为什么要做数字化转型降级? “数字化”在最近的热度很高,国家的十四五布局也重点提到数字经济两大块:数字产业化和产业数字化。对此,很多企业示意不晓得该如何具体发展数字化转型。首先,要弄清楚这个,就必须得先明确“数字产业化”和“产业数字化”这两个概念。 数字产业化:指数字技术带来的产品和服务,例如电子信息制造业、信息通信业、软件服务业、互联网等,都是有了数字技术后才呈现的产业。简略来说,就是比方把过来钻研的对于通信、信息技术,将其产业化,最典型的就是把通信技术,各种服务,包装成咱们当初利用的所有APP,包含打车软件,领取软件,这些都是把数字技术做成产品,这叫数字产业化。 产业数字化:是指这些产业本来就存在,然而利用数字技术后,带来了产出的增长和效率的晋升。产业的数字化其实能够了解为传统产业的数字化转型,把本来实体存在的产业,如石油炼化、桥梁土地建工等产业利用数字化技术在软件产品中还原进去,利用客观规律及软件技术,推演和欠缺理论工作流程与实时监控现场状态,达到晋升效率与反向优化实体产品的成果。 由此,能够看出产业数字化与咱们所探讨的数字化转型降级密切相关,传统产业利用数字产业化产品来进步咱们的生产效率,实现更多产品的产出,进一步提高产能,并实现老本的降落。从大方向上来说,产业数字化就是工业互联网、农业互联网等制造业的数字化。剖析到这里,咱们就不难明确国家为什么要鼎力提倡进行数字化转型。 为踊跃贯彻信息部油田板块信息化建设方针,谐云携手某大型国有石油化工股份有限公司在油气田生产治理信息化建设方面进行了积极主动的摸索。在信息化管理模式的转型过程中,利用运行环境从虚拟机降级为容器,利用架构降级为微服务工业组件架构,由根底底座对立提供公共服务,通过低代码平台拼装工业app等措施,以云平台承载业务,以工业互联网架构开发利用,重点打造了钻研设计、工程治理、气田生产、综合治理四大业务域的协同智能利用,撑持天然气勘探开发场景下的业务协同以及业务智能,为整个公司的生产运行治理提供快捷高效的互联网工作反对。 二、数字化转型带来的收益 数字化转型不仅仅是把线下企业的线下业务,一成不变的搬到IT零碎中,还会以数字的模式来表白企业经营建设情况。利用数字化转型降级,优化原有的生产管理制度,依靠数字化智能管控平台摸索新的管理模式,逐渐实现“近程化、协同化、精细化、智能化”治理,使得治理流动冲破工夫和空间限度,晋升现场实时管控能力,并大幅晋升工作效率。 谐云在助力某大型国有石油化工股份有限公司进行数字化转型3年以来,胜利建设了容器、监控、微服务和DevOps等根底平台,建设了利用集成平台,报表平台等公共平台,客户效益次要集中在以下几个方面: 资产管控&安全漏洞解决:对立代码集中管控建设,把握37个零碎代码,实现IT零碎代码资产自主,扫描发现修复580余个系统漏洞,1290余个缺点。 架构降级&性能晋升&稳定性晋升:利用采纳云原生微服务架构建设,零碎架构先进,扩大灵便,部门页面性能晋升90%+。服务无状态化革新,同时进行多实例部署,利用负载平衡和健康检查机制进行流量的导入与故障隔离复原,达成高可用,晋升服务稳定性100%+。 主机治理&资源利用率晋升:采纳容器运行利用,对立资源管控,在老旧虚拟机敞开近50台后继续上云,预计敞开虚拟机50%~70%,缩小运维工作量,晋升资源利用率35%+。 业务组件&研发效率晋升:设计研发业务组件架构,报表平台和低代码平台等公共服务,石油工程、气田PCS等利用均采纳次架构开发,其中局部公共组件一次开发多处应用,晋升了开发效率,实现业务复用,节俭局部开发工作量60%+。 管理模式&决策优化:依靠数字化智能管控平台摸索全新管理模式,逐渐实现“近程化、协同化、精细化、智能化”治理,使得治理流动冲破工夫和空间限度,晋升现场实时管控能力的同时,大幅晋升工作效率;摸索建设“三核心一火线”的集约化、扁平式管理模式,区域近程作业管理中心负责现场生产运行及作业安全监控治理;工厂化工程专家团队组成的区域近程实时作业技术核心负责工具优选、参数优化等技术决策;区域物流核心负责现场物资集中调配与治理;工程作业火线严格执行施工指令,规范化施工。 数据库容器化:目前,因为数据库国产化过程减速,为了充分利用容器的个性和长处,谐云对数据库容器化进行优化与实际,实现业界首次冲破做到数据库容器化后的网络性能简直等同于物理机的性能,5%比照传统虚拟化30%性能损失,并领有k8s底层代码开发能力,可依据理论场景提供最适宜无效的解决方案。 三、如何进行数字化转型落地设计 为某大型国有石油化工股份有限公司进行数字化转型摸索落地实际次要分为:需要梳理,架构设计,试点落地,规模推广几大阶段。 1.需要梳理 2.架构设计 针对调研的信息化建设状况,谐云设计了1+4+3+N云原生数字化转型架构。1+4+3+N是指1个对立门户+4个根底平台+3个公共平台+ N个业务应用服务,对立能力门户核心把4个根底平台、3个公共平台和利用对立纳管。全力打造信息资源集成管控、公共能力集成共享、一体化协同的企业级信息化架构。 基于云原生设计思维和现有体系交融,谐云按“三横三纵”设计造成云原生能源行业数字化架构体系。并将中台做厚晋升共享反对能力,前台做薄减速业务场景化及创新能力,技术平台做实降低成本,实现麻利的交付能力,保障业务高稳定性。 同时,该架构还基于工业互联网平台架构进行分层设计,以整体打造工业数据管理、工业数据分析、工业技术常识等资源固化复用、工业APP疾速定制能力为指标,致力于构建撑持工业设计勘探开发过程的钻研设计、工程治理、气田生产(气田PCS)、综合治理等特定场景的业务协同、业务智能、业务使能对立信息平台。 云原生能源行业数字化架构图 云原生能源行业数字化架构以容器云平台、APM平台为根底,为平台资源提供对立调度、性能高可用、状态智能感知等云原生能力;依靠容器云平台,打造下层工业利用根底底座以及能力交付核心(DevOps),构建业务组件、工业APP疾速交付以及利用机体合作稳固运行的技术撑持平台。并以现有对立数据资源核心为主,通过引入新一代数据架构,打造数据资源管控平台、数据资产平台,对立构建油气田业务数据湖。 此外,谐云还基于能力交付核心、工业利用底座、油田业务数据湖提供的数据资源、利用开发交付能力,以客户业务组件开发技术标准,构建客户对立的业务组件生态核心,实现数据资源到业务组件的生态化设计。 在此,上篇的分享内容已完结,下篇将围绕如何进行数字化转型落地试点实际及精细化生态建设这两个方面,持续延长拓展,为小伙伴们深刻解读。

April 18, 2022 · 1 min · jiezi

关于数字化货币:喜报东方证券携手博睿数据荣获金融电子化2021科技赋能金融业务突出贡献奖

近日,由《金融电子化》杂志社主办的“2021第十二届金融科技利用创新奖”评选活动揭晓获奖名单。博睿数据助力西方证券全生命周期智能数字体验我的项目荣获2021科技赋能金融业务突出贡献奖。 随着金融科技的深刻倒退,金融科技的技术利用也提到了新的策略高度。1月4日,中国人民银行印发《金融科技倒退布局(2022-2025年)》(以下简称《布局》)。《布局》根据《中华人民共和国国民经济和社会倒退第十四个五年布局和2035年近景指标大纲》制订,提出新期间金融科技倒退领导意见,明确金融数字化转型的总体思路、倒退指标、重点工作和施行保障。 《布局》中明确提出深入数字技术金融利用,健全平安与效率并重的科技成果利用体制机制,一直壮大凋谢翻新、单干共赢的产业生态,买通科技成果转化“最初一公里”。 对于金融业而言,将来深入数字技术金融利用将是重点工作之一,而最新出炉的“2021第十二届金融科技利用创新奖”评选活动也印证了这一趋势。 第十二届《金融电子化》金融科技利用创新奖评比旨在表彰2021年在金融科技翻新和业务倒退方面做出突出贡献的金融机构和科技企业。本次评比共有235家机构报送的496个我的项目参评,评审委员会围绕我的项目先进性,我的项目翻新点,我的项目对推动机构晋升服务能力的作用、经济或社会效益等维度进行评审。 西方证券作为泛滥金融科技行业中的典型代表,始终以来都走在数字化转型的前沿。此次获奖的我的项目也进一步证实了市场对于西方证券的认可与嘉奖。 在全生命周期智能数字体验,驱动业务增长的建设中,博睿数据与西方证券独特研发。在从客户端到服务端的整体业务链路性能剖析中,实现最优的零碎部署和零碎容量配置,从而达到用户连贯最快站点、实现最快拜访;同时通过业务拓扑剖析,精准疾速定位故障组件,联合智能基线告警,实现业务解决性能降落预警,进而管制业务影响,保障公司业务服务质量,进步了用户满意度。 目前,全生命周期智能数字体验解决方案已齐全推广应用于西方证券西方赢家APP、西方证券章鱼互联APP、西方私行APP、汇点期权APP,全面笼罩公司手机APP业务。 将来,博睿数据与西方证券将持续在零碎性能和性能上继续优化,以客户为核心,一直晋升用户满意度,构建继续可优化的数字体验指数模型以适应一直变动和增长的业务,让数字化治理指标更加清晰。

January 21, 2022 · 1 min · jiezi

关于数字化货币:当企业在谈论数字化时我们在谈论什么

做集体/工作治理在我看来是生存的必须项。 从学生时代开始,为了取得更高的分数,更好的学习效率,到工作之后,为了获取更高的劳动报酬,更好的降职门路,咱们都在有目的性的去实现自我价值。尤其是步入职场之后,在现如今的年龄,大部分工夫都被工作占据,或者在为了晋升工作技能而学习。 以我本人为例,生存被一个成绩向的线性路线给贯通。为了能使生存品质稳步晋升,我须要布局好集体治理,也就是工作与学习。在日常的经营工作中,我逐步养成了「逐级拆分」的思维模式,也就是经营中常说的「北极星指标」,即通过指标拆分方向,到细分执行事项。 前言 最后我的集体治理源自于我的学习习惯,因为浏览量的宏大,导致排汇效率不高,无奈得心应手地施展出书本上的常识,工作之后也因为岗位的起因须要吸纳许多研报来产出相应的工作布局,这时就非常想要一个高效可行的打算。可过后我对于集体治理的认知还处于朦胧阶段,只是有了一个初步的方向,其余全凭摸索。以下是本人摸索的一些思路和方向。 工作中的布局实际 因为我的工作岗位是经营,所以常常会接触到新的行业信息和常识,并且须要将其转化成本人的技能储备。我会依据业务进度指标来拆分所需的常识,再细化到每天要浏览且排汇什么,再依据此来产出相应的工作方向和布局,最初会在工作布局执行后记录本人的状况并复盘。 “是否无效?”“方向是否正确?”“该如何打算下一步的工作?” 这些也能够被叫做 「周报」。 除此以外,还须要去安顿每天的工作行程,要开什么会,须要提前发邮件给谁等等。 这些就须要有工具去整顿并演绎以达到高效的目标。 工作之初,我首先接触并把握的集体治理内容是信息整顿,也能够成为常识治理。 这个时候我抉择的工具是笔记类利用,微软家的OneNote。以「工作记录」为例,从第一份工作开始到明天,我会为以后所在公司建一个笔记本,以事项、工夫、会议纪要为次要的分类单位进行每天的工作记录。 截图工夫为以后工夫,点击光标后自动更新工夫 在应用了4年后,我的领会首先是带来了工作复盘的便利性,其次因为许多公司都会要求员工提交周报、月报,甚至是日报。如果有这样一份文档存有记录,月报、半年报其中的工作记录就能够准确到日为单位。特地是某些时候须要长期交付一些内容进去,比方补充上个月的某个我的项目需要,职级降职的时候须要列举本人做过什么事,就能够迅速从这些记录中疾速提取出所须要的内容。 再来说说复盘,经营岗位中不可或缺的「习惯」。有这份文档就能够回忆、看到本人的工作状态、成绩,是否陷入了某些经营的牛角尖,是否在布局初期因为某些细节而漠视了全局,是否须要在某些方向再补足一些技能或好好积淀等等。 这是我对于工作治理方面的初步尝试。 学习、生存中的尝试 在工作方面继续停顿的同时,我对于学习及生存方面的尝试也在进行,我须要一款好用的工具来提供解决方案。除了OneNote以外,我还尝试过石墨文档、印象笔记、notion等笔记类利用,来记录浏览学习时随时产生的感想和信息。以及Microsoft To Do、Google Tasks这类基于GTD思维的利用。 应用了以上各类工具后,我发现问题并没有失去很好的解决,我还是会对生存感到迷茫,偶然会对接下来的方向感到徘徊,甚至感觉本人一无是处。以Notion为例,它很弱小很全面自由度也很高,但用了不到一个月我就放弃了,因为我的状态还没有达到有思路、有方向,而后借助工具去施行就行,而是变成了我在适应、学习Notion的产品架构而后来调整本人。接着我就是一直尝试新工具,无奈保持应用就放弃,再尝试下一个。 直到往年的六月份,我感觉不能再这样上来了,而后关上Xmind,细分拆解了本人想解决的问题以及当下正在做的事。有一种张无忌学习太极的感触,“在齐全遗记集体治理是什么的时候,才真正领会到集体治理。”转眼间两年过来了,目前终于有了一套成形的集体治理计划。 计划这是我的思路 须要留神的是,每个人的生存形式无奈复制,所以我的布局只是一个思路,但愿对屏幕前的你能有所启发。 思路 第一步,如上图所示,我的形式是先把集体日常治理的范畴给提炼进去,因为我的布局能力还未成体系,在2019年我只能较好解决看书、工作、静止这三个局部。2020年在排汇了许多工夫布局、集体价值晋升的文章、书籍后,受到启发,持续细化去了解本人日常的生存三大块。到往年2021年,我对于本身的体系有了更为空虚的拆分,将一些可能Routine化的事物减少到了「生存」一栏中。 明确了范畴,那么我的下一步是给每个范畴设定指标,以年为单位进行复盘统计,所以我会大抵定下一个全年指标,而后拆分至每个月。 这样的拆分不仅仅在工作上使用切当,对于本身而言也能保障打算的正当推动性。假如我的静止指标是通过健身净增肌到体重150斤,那么我就晓得绝对于当初而言我每个月至多须要减少1斤肌肉,我就会晓得绝对于我当初每个月的增肌速率而言,还须要在饮食和分量上晋升多少个百分点。那如果我将体重定为160斤,这一年下来每个月须要至多减少1.8斤肌肉,对于目前的工夫安顿来说是不太可能的,那么这个我的项目布局就无奈成立。 到了这一步会发现集体治理的各个类目之间,有着十分强的关联作用,比方学习和工作布局未执行到位,就不会有富余的工夫安顿给健身。而如果生存事物占比太多,就会影响到学习和排汇,对于输入这一类目而言,就会升高整个的品质。 那么下一步,自然而然就是通过月度指标,去大抵推导出每周和每天的指标,以此造成本人的「Routine」。最开始是在YouTube上理解到这个词,比方健身Rontine,而往年感触下来发现这个词也特地适宜放到集体治理中,它的中文意思就是「例行公事」,Daliy Routine就是日常工作。那我的每个大指标都离不开每天小打算的执行,如果不做或者少做就会影响指标功效。 如此拆分上来,逐步就对本人的生存、学习、工作方向清晰。如果你目前也处于摸索的状态,那不要紧,一步一步尝试就能找到本人的方向。在你有了范畴和可执行的指标之后,其实心里对将来的事物会愈发分明的。 此时咱们须要落实到每天的口头上,我感触最深的一点是肯定找到那个能让你坚持下去的形式,比方我的Routine里,最次要是依赖织信来实现布局和记录。1.记录当天/昨天的打算完成度2.回顾本周一周打算3.列举明天要做事项 同时也能一站式应用织信去记录、保留学习的材料和想法,成体系之后就能够独立汇总到一个利用中去,最初依据每月的施行状况进行总结,以此来实现年度指标: 我是在往年接触到的织信,大家感兴趣能够去搜看看。因为相较于客户端我更喜爱在线利用(多端用户懂的都懂),所以目前我集体的学习、工作、生存都依赖于织信,上面我介绍一下织信这个好帮手。 我也是在知乎上理解到织信,它是一个收费的在线协同软件,对于5人以下的团队是完全免费的,基于表单零碎的多样化,能够一站式就实现以往须要Microsoft to do+OneDrive+OneNote等好几个工具实现的事。目前我。是一个人应用,还未与小伙伴或共事组成一个团队,所以还没有深度领会到合作的效率。但把视角转移为,「本人就是一个团队」后,通过全局看板与多任务治理,能够疾速高效的感触到「团队效率的晋升」。 织信的产品逻辑是基于表格的百搭,所以在产出好相应的脑图打算后,在零碎内一一建设对应的表单,继而填充数据,丰盛款式。我从一开始的简略记录到前面的轻松应用,并且它能适应你任何打算的调整与扭转(毕竟对于产品而言只是更改数据且换了种展现模式),且在各种逻辑构造发生变化后,它仍然能够进行调整。 通过自动化配置项,我能够一键将本月每日的备注或其余记录一键整顿在一个表单内,生成我的「月度回顾表」,免去了反复整顿,演绎汇合的工作。 不过我也倡议,不论是做集体治理,还是团队利用,亦或者是当成新的玩具进行尝试,都应从最根底的性能开始延展向上。 给我带来最大惊喜的是文件贮存性能,能够和任何其余模块之间产生关联,且没有厌恶的网络上传下载限速。 我应用织信这半年来的体验:它能完满适应你的打算,以及打算之外的需要,想怎么应用就怎么应用,并且性能远不止于此(官网介绍次要客户为集团型)。对于我这类数字化老手,自身需要还未造成肯定的复杂度,如果工具的构造不够简洁,反而会减少上手难度,用着用着就会感觉好麻烦,而后弃置。 最初 其实比照治理书籍内的思考逻辑,我的计划还存在许多瑕疵,例如复盘的颗粒度不够准确,没有关联到指向性的事物,而且生存中仍未「数字化」、「效率化」的事件还有很多,后续会缓缓减少到脑图中,而后建设在织信里。 回想起这些年的心路历程,顿觉愚蠢,感叹节约了太多工夫。 最初想对你说一句,哪怕看了这篇文章后仍然没有一个具体的思路,或者感觉我的计划不怎么好,都没关系,不要放弃,解决方案总比艰难多,只有你开始。

January 20, 2022 · 1 min · jiezi

关于数字化货币:虚拟货币交易平台虎符交易所如何注册邀请码填写

目前大家熟知的数字虚构货币交易平台置信必定少不了火币、币安等几个排名靠前的平台,其实除此之外还有不少相似的相干平台,比方明天要说虎符交易所平台就说其中之一,尽管可能不想火币网那样出名,然而在虚构货币市场还是有肯定的知名度的,在虚构货币交易平台排行榜上大略在20左右。所以明天就来为大家介绍下虎符交易所平台如何注册?邀请码很要害 首先找到虎符交易所平台官网,比方这个https://www.hoo.nz/invite/269... 关上之后点击右上角的注册按钮进行账号注册,这个应该就不须要我具体阐明了吧,依据跳进去的表格填写好对应信息即可,你能够抉择手机注册也能够邮箱注册,看你本人抉择。然而在这里有一点还是须要留神的,注册的时候会有个邀请码填写,这个十分重要,千万不能乱填或者填错,虎符交易所邀请码是26904747!虎符交易所邀请码是26904747!虎符交易所邀请码是26904747!重要的事件说三遍! 信息都填好了之后就点进注册,而后就能够了。紧接着在跟进跳进去的提醒再对本人的个人信息进行欠缺,比方手机认证、市民认证等等。 这些没有实现认证就光注册的话你这个账号还是没啥用的,因为不能操作交易,只有实现了认证能力进行交易操作,依据本人看中的币种进行交易交易。 如果你感觉下面过程有点麻烦也能够间接点开邀请注册网页,比方https://www.hoo.je/invite/269...这个,如果你临时没有电脑,也能够用手机间接点开,而后整体流程也跟下面差不多,依据页面上的信息填写即可实现注册。或者手机扫码注册,都行! 怎么样?看完以上的虎符交易所平台注册流程账号是不是发现挺简略的?依据提醒一步一步来即可实现操作,惟一要留神的就是在注册的时候那个邀请码26904747千万不能填错,免得产生不必要的麻烦!

September 10, 2021 · 1 min · jiezi

关于数字化货币:前-YC-负责人-Sam-Altman-联合创办加密货币公司-Worldcoin获-2500-万美元融资

Sam Altman 有一个新的守业公司,打算给地球上的每一个人提供一种非凡类型的加密货币。但首先,它要扫描每个人的眼球。 Altman 是硅谷商业孵化器 Y Combinator 的前负责人,是 Worldcoin 公司的三位创始人之一。在其打算的许多局部中,Worldcoin 公司设计了一个球状设施,能够扫描一个人的虹膜,以构建一个独特的集体标识符。 该公司失去了 Coinbase Global Inc.的风险投资部门、Andreessen Horowitz、LinkedIn 创始人 Reid Hoffman 和 Day One Ventures 的反对。它最近从投资者那里筹集了约 2500 万美元的资金。 36 岁的 Altman 在承受采访时说,他在 2019 年年底构思了这个想法。其目标是利用加密货币来偏心地扩散资金,灵感来自于被称为全民根本支出的时尚经济实践。Altman 是 Worldcoin 的第一个投资者,但他说他在日常经营中没有任何作用,次要是在须要时负责公司的参谋。 "我始终对像全民根本支出这样的事件十分感兴趣,以及寰球财产再调配将产生什么,以及咱们如何能更好地做到这一点,"Altman 说。"有没有一种办法,咱们能够利用技术在寰球范畴内做到这一点?" 该企业的负责人是 27 岁的亚历山大-布拉尼亚,他曾是加州理工学院和马克斯-普朗克协会的理论物理学学生。他与 Altman 和马克斯-诺文斯特恩独特创建了 Worldcoin,后者曾在雷-达利奥的投资公司桥水联营公司(Bridgewater Associates LP)和资金转移初创公司 Wave 工作。 在彭博社发现了他们的我的项目细节并进行询问后,阿尔特曼和布兰尼亚批准探讨他们的我的项目,该我的项目之前没有被报道过。Blania 说,Worldcoin 仍在为正式亮相做筹备,但当初,这家初创公司正在评估有朝一日将加密货币带给尽可能多的人可能须要的货色。"Blania 说:"世界上有很多人还没有机会进入金融零碎。"加密货币有机会让咱们达到那里。" Altman 从 19 岁的一个名为 Loopt 的中等规模社交网络的创始人,成长为 Y Combinator 的守业公司缔造者。他在 2014 年至 2019 年负责该公司总裁,在此期间,该加速器的一些公司,包含 Airbnb 公司、Dropbox 公司和 Stripe 公司,成为美国最有价值的守业公司之一。 ...

June 29, 2021 · 1 min · jiezi

关于数字化货币:数字人民币正开启跨境支付技术测试

香港金融管理局总裁余伟文今日撰文称,以后,金管局正与中国人民银行数字货币研究所钻研应用数字人民币进行跨境领取的技术测试920073,并作相应的技术筹备。 余伟文称,只管世界各地的境内领取服务已高度数字化,微派跨境领取服务倒退却始终滞后。除了一些通过雷同银行或平台的调拨之外,其余跨境领取普遍存在着需时长、老本高、透明度低等问题。究其原因,有各地营运时区不同、落实国内准则形式迥异、领取零碎的技术标准不一等等。 余伟文示意,金管局始终踊跃地通过倒退金融基建,提供多币种、多层面的平台,并把领取零碎与周边地区及国内零碎联网,以推动更快捷、平安的跨境领取。除了施展及持续倒退现有金融基建的劣势外,金管局亦致力钻研将簇新的金融科技利用于跨境领取。 “去年,咱们便联同了泰国中央银行开展了钻研,利用央行数码货币及区块链平台去解决跨境领取中的各种问题。”余伟文示意,联结钻研现时已进入第二阶段,包含探讨具体的业务利用计划,以及平台的可营运性和伸延性(即扩大至三个或更多的央行数码货币)。余伟文认为,久远来看,借助国内就跨境领取增强单干的趋势,有机会倒退出区域性的跨境领取平台。 余伟文示意,在跨境领取方面,最近有一个令人鼓舞的倒退。“金管局正与中国人民银行数字货币研究所钻研应用数字人民币进行跨境领取的技术测试,并作相应的技术筹备。”余伟文示意,人民币在香港地区的应用已非常常见,数字人民币定位于流通中的现金,其应用会为两地游客带来更大便当。尽管数字人民币尚未有推出的时间表,但置信它未来会为有须要进行跨境批发生产的两地居民提供更多的领取形式选项。

December 22, 2020 · 1 min · jiezi

关于数字化货币:五年时间完成业务数字化转型华为如今做得怎么样了

摘要:传统企业通过制作先进的机器来晋升生产效率,然而将来,如何结构性地晋升服务和经营效率,如何用更低的老本获取更好的产品,成了时代性的问题。数字化转型归根结底就是要解决企业的两大问题:老本和效率,并围绕“多打食粮,减少土地肥力”而发展。本文次要围绕“华为”数字化转型内容,从整体指标、数据治理要求和实际三大方面开展详述。一、 “华为”数字化转型整体指标2016年华为改革战略规划,明确要面向用户(企业客户、消费者、员工、合作伙伴、供应商)实现ROADS体验,继续晋升效率、效益和客户满意度。明确要用五年工夫实现业务数字化转型,数字化转型成为华为惟一的改革。 2017年华为提出了企业的新愿景:“把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界”。同时,华为公司董事、CIO陶景文提出了“实现全联接的智能华为,成为行业标杆”的数字化转型指标(如图1-1所示)。 ▲图1-1数字化转型指标 对内,各业务畛域数字化、服务化,买通跨畛域的信息断点,达到当先于行业的经营效率。逐渐构建以“面向客户做生意”和“基于市场的翻新”两个业务流为外围的“端到端”的数字化管理体系。治理形式从定性走向定量,实现数据驱动的高效运作。 对外,对准5类用户的ROADS体验,实现与客户做生意更简略、更高效、更平安,晋升客户满意度。华为首先从用户体验的视角表白了对行业的最新判断,并将其总结为ROADS,即实时(Real-time)、按需(On-demand)、全在线(All-online)、服务自助(DIY)和社交化(Social)。 二、 “华为”数字化转型蓝图及数据治理的要求2017年,华为基于愿景确定了数字化转型的蓝图和框架,统一规划、分档次发展,最终实现客户交互方式的转变,实现外部经营效率和效益的晋升。华为数字化转型蓝图包含5项动作(如图1-2所示)。 ▲图1-2 华为数字化转型蓝图 动作1:实现“客户交互方式”的转变,用数字化伎俩做厚、做深客户界面,实现与客户做生意更简略、更高效、更平安,晋升客户体验满意度,帮忙客户解决问题。动作2:实现“作战模式”的转变,围绕两大主业务流,以我的项目为核心,对准一线精兵团队作战,率先实现基于ROADS的体验,达到当先于行业的经营效率。动作3:实现“平台能力”提供形式的转变,实现要害业务对象的数字化并一直汇聚数据,实现流程数字化和能力服务化,撑持一线作战人员和客户的全联接。动作4:实现“经营模式”的转变,基于对立数据底座,实现数字化经营与决策,简化治理,加大对一线人员的受权。动作5:云化、服务化的IT基础设施和IT利用,对立公司IT平台,同时构建智能服务。其中,动作4波及数据治理和数字化经营,是华为数字化转型的要害,承接了突破数据孤岛、确保源头数据精确、促成数据共享、保障数据隐衷与平安等指标。华为数字化转型对数据治理的要求如下: 基于对立的数据管理规定,确保数据源头品质以及数据入湖,造成清洁、残缺、统一的数据湖,这是华为数字化转型的根底。业务与数据双驱动,增强数据联接建设,并可能以数据服务形式,灵便满足业务自助式的数据生产诉求。针对汇聚的海量内外部数据,可能确保数据安全合规。不断完善业务对象、过程与规定数字化,晋升数据主动采集能力,缩小人工录入。三、 “华为”数据治理实际华为从2007年开始启动数据治理,历经两个阶段的继续改革,系统地建设了华为数据管理体系。第一阶段近十年的继续投入为华为在2017年开始的数字化转型打下了松软的根底。同时,在数字化转型对数据治理的新要求下,正式进入第二阶段,数据治理工作也迎来了新的挑战和倒退。 1. 华为数据治理历程第一阶段:2007~2016年在这一阶段,华为设立数据管理业余组织,建设数据管理框架,公布数据管理政策,任命数据Owner,通过对立信息架构与规范、惟一可信的数据源、无效的数据品质度量改良机制,实现了以下指标。 继续晋升数据品质,缩小纠错老本:通过数据品质度量与继续改良,确保数据实在反映业务,升高经营危险。数据全流程贯通,晋升业务运作效率:通过业务数字化、标准化,借助IT技术,实现业务上下游信息疾速传递、共享。第二阶段:2017年至今在这一阶段,华为建设数据底座,汇聚企业全域数据并对数据进行联接,通过数据服务、数据地图、数据安全防护与隐衷爱护,实现了数据随需共享、麻利自助、平安通明的指标,撑持着华为数字化转型,实现了如下的数据价值。 业务可视,可能疾速、精确决策:通过数据汇聚,实现业务状态通明可视,提供基于“事实”的决策反对根据。人工智能,实现业务自动化:通过业务规定数字化、算法化,嵌入业务流,逐渐代替人工判断。数据翻新,成为差异化竞争劣势:基于数据的用户洞察,发现新的市场机会点。华为数据治理的倒退历程如图1-3所示。 ▲图1-3 华为数据治理的两个阶段 2. “华为”数据工作的愿景与指标华为公司基于多业务、全球化、分布式治理等业务战略规划和数字化转型诉求,明确了华为数据工作的愿景,即“实现业务感知、互联、智能和ROADS体验,撑持华为数字化转型”。华为数据工作的指标为“清洁、通明、智慧数据,使能卓越经营和无效增长”。为确保数据工作的愿景与指标达成,须要实现数据主动采集、对象/规定/过程数字化、数据清洁、平安共享等个性(如图1-4所示)。 ▲图1-4华为数据治理的愿景与指标 3. “华为”数据工作的建设思路和框架作为非数字原生企业,咱们认为数字化转型的要害因素之一是在事实世界的根底上构建一个逾越孤立零碎、承载业务的“数字孪生”的数字世界。通过在数字世界汇聚、联接与剖析数据,进行形容、诊断和预测,最终领导业务改良。 在实现策略上,数字世界一方面要充分利用现有IT零碎的存量数据资产,另一方面要构建一条从事实世界间接感知、采集、汇聚数据到数字世界的通道,一直驱动业务对象、过程与规定的数字化。华为数据工作建设的整体思路如图1-5所示。 ▲图1-5 华为数据工作建设的整体思路 华为通过多年实际,造成了一套数据工作框架。 数据源:业务数字化是数据工作的前提,通过业务对象、规定与过程数字化,一直晋升数据品质,建设清洁、牢靠的数据源。数据湖:基于“兼顾推动、以用促建”的建设策略,严格按六项规范,通过物理与虚构两种入湖形式,汇聚华为外部和内部的海量数据,造成清洁、残缺、统一的数据湖。数据主题联接:通过五种数据联接形式,布局和需要双驱动,建设数据主题联接,并通过服务撑持数据生产。数据生产:对准数据生产场景,通过提供对立的数据分析平台,满足自助式数据生产需要。数据治理:为保障各业务畛域数据工作的有序发展,需建设对立的数据治理能力,如数据体系、数据分类、数据感知、数据品质、平安与隐衷等。数据体系建设的整体框架(如图1-6所示),基于对立的规定与平台,以业务数字化为前提,数据入湖为根底,通过数据主题联接并提供服务,撑持业务数字化经营。 ▲图1-6 华为数据工作建设的整体框架 本文分享自华为云社区《5年实现数字化转型,这家公司如何做到的?》,原文作者:华为公司数据管理部。 点击关注,第一工夫理解华为云陈腐技术~

November 26, 2020 · 1 min · jiezi

区块链应用落地不是狼来了而是老虎来了

蔡维德、何娟 (中国亚洲经济发展协会区块链产业专业委员会) 1.我们必须要证实消息正确后才行动1970年美国和日本合作拍了一部电影叫做《虎!虎!虎!》,其中上半段讲到日本偷袭珍珠港的故事。日本偷袭珍珠港,美国几乎没有预料到,但是电影上却给了一个不同的故事。 夏威夷美国军官虽然没有得到上级消息认为日军要攻击珍珠港,可是却有许多情报信息送到指挥官表示日军即将来袭。尽管如此,夏威夷的指挥官却一再认为,“等到攻击的消息确实之后,我们才行动”。 就这样,指挥官一直等到确实的攻击消息来了之后才采取行动。结果不言而喻,当指挥官赶到了指挥基地的时候,珍珠港已经被炸的乱七八糟,像下面的图片一样,大部分的飞机都没有起飞,而在地面上被炸毁。看到这情形这军官嘴巴都合不起来,看呆了。 图 1:“虎虎虎”电影中,美国指挥官到达基地的时候,许多飞机已经在地面被日军炸毁 2.三只老虎,跑的快从2015年起笔者就一直在谈论区块链,认为这是500年来的一次巨大的金融创新[3]。在2016年2次拜访英国,和英国央行和伦敦城金融专家讨论区块链在金融的巨大创新。而这里谈的和数字代币没有任何关系,这里谈的都是国外合法合规的金融创新技术。 可是在中国当笔者谈这一话题的时候,有人回答说,“区块链在中国在2016年不会被使用,在2017年也不会被使用,10年后也不会被使用,而且以后永远不会被使用。”还有人说让国外去胡搞,几年之后就可以看到国外胡搞后的笑话。当笔者谈到这是500年最大的金融创新的时候,许多听着都忍不住哈哈大笑。 现在,4年过去了,我们看到的是怎样的国外笑话呢?是不是像夏威夷美军指挥官一样的笑话?不是电影的三只老虎,现在已经是多只老虎 [4,5,6]。而且以后新老虎还会不断出现,并且加速出现。 从2015到2018年7月之前笔者的论调是“狼来了”, 表示这会是将来;但是2018年7月之后,不再是狼来了,而是老虎来了,因为已经来临。 从2018年7月开始,IBM公司推出稳定币计划,这是被美国政府FDIC所支持的稳定币,意味着区块链的金融革命正式来临[8]。在这以前没有国家支持的稳定币发行,而且IBM在2018年8月就直接表明他们发行的是“数字法币”(CBDC)或是“数字美元”。 2019年2月,摩根大通银行也发行稳定币。巧合的是,IBM和摩根大通两个都做跨境支付。没有多久,脸书也公开开始做稳定币,也做跨境支付。分析师预测脸书市值会大增, 而且其支付系统预备进入中国市场虽然社交网站没有进入。 2019年6月5号,由14家银行也推出做稳定币,做结算用 (Utility Settlement Coins USC)。这14家银行包括瑞士、加拿大、美国、英国、日本、西班牙银行,一起推出数字加拿大币、欧元、英镑、日元、美元(聪明的读者,那个世界重要货币没有参与?)。 几天后,VISA也推出了VISA Connect——以区块链为基础的一个跨境支付系统。而且大家都做跨境支付! 读者可以想想如果这些项目都成功,以后跨境支持市场会是什么情况? 众所周知,这些都是世界著名的公司。例如摩根大通是美国最大的银行,脸书是世界上最出名的社交媒体,VISA是世界上最大的信用卡系统。当他们都采用区块链的时候,难道不是一件惊人的事情? 2019年5月国际货币基金会(IMF)也出报告[12],认为这些稳定币就是数字法币(CBDC),等于认同IBM在2018年8月宣告他们的稳定币项目就是数字美元。国际货币基金会也列举数字法币的优势。这些优势英国央行也列举过,而且英国央行还认为数字法币是国家货币政策的一个新工具,也是监管利器。因此这些稳定币的出现,不能只是当作新的金融产品的出现,这些还带来市场结构性的变化。这些稳定币不是世界政府不喜悦的数字代币,而是国外政府支持和鼓励的合法合规金融产品。例如IBM出的稳定币由美国政府FDIC担保支持,同时间美国监管单位一直在限制没有合法的数字代币。 如果国际货币基金会观点正确,14家银行发行稳定币是不是代表世界将很快会有数字加元、数字日元、数字欧元、数字美元、数字英镑? 我们是不是像美军夏威夷指挥官一样,认为必定要等到国外证实启动区块链项目才开始?现在国外项目已经如洪水一般的来了。事实上,这并不是现在才蜂拥而上。这现象早在2018年7月就开始,只是现在速度加快。 最近有知情人透露这次是一次巨大的商业竞争,国外的区块链项目由财团支持,预备在将来世界金融产业上居领导地位。 3.区块链布局区块链布局需要三方面:技术,资源,战略。 ·技术:中兴通讯的故事告诉我们,技术必须是自己的。如果中国继续使用国外技术例如超级账本,技术都在别人手中,以后产业很可能会有严重问题。 ·资源:国外这一次是多家重量级单位,例如14家银行,摩根大通和170家国际银行,IBM公司和40家银行合作。 ·战略:美国是兵分三路,从货币、市场、到监管法规,三管齐下。 中国首先就不重视自己开发区块链技术,认为使用开源的伪链就可以,主动放弃在区块链技术上领导。没有自己的技术,在国际上没有地位。 中国金融资源丰富,如果有资源给中国区块链产业,现在大部分都给了国外的伪链。 在主流金融市场,中国还没有成熟的区块链战略思想。 4.ViSA 的区块链系统历史VISA本来是使用Chain 的链,而且投资3千万美元成为Chain的股东。这公司是2015年3大区块链初创公司之一(另外两家是R3 CEV 和DAH)。但是这家Chain公司的链一直有问题。笔者在2016年就认为其共识机制有问题,在2108年在台湾参加一次国际区块链会议,美国教授也公开认为有问题。终于VISA公司放弃自己投资的公司的产品。 ViSA的区块链支付项目起于于2016年10月。ViSA B2B Connect在2017年11月首次在试点阶段推出,以测试银行对银行的连接。现在已经在30个市场推出,计划在2019年底前扩展至90多个地区。这会挑战了SWIFT跨境支付的市场。 图2: VISA系统的架构 VISA原来对区块链的态度事实上是:公开赞同,实际上怀疑或是反对 [2]。人们对区块链态度一直可以分3种: 公开赞同,事实也支持;公开赞同,私下反对,还可能是强烈反对;公开反对。这次VISA从公开赞同私下反对,到公开赞同还开张做生意,这表示已经从第2种看法演变成第一种看法。 读者可以想想,到底我们自己单位是持守那个态度? 5.VISA区块链系统特性如果我们看图2 VISA公司的系统,会发现它不是一个传统的数字代币系统。它更像是一个区块链的记账系统,有下面特性: 没有经过SWIFT,而让银行和其他银行直接对接,这挑战SWIFT的历史地位。所以参与的银行系统必须事先通过批准,但是商家并不接这链,而是经过银行。例如商家C先得到银行A的批示,让后银行A、VISA、银行B在区块链上交易,让后银行B和商家D交易完成。所以主要是一种银行和银行之间的交易系统。这样架构其实和SWIFT系统很类似。这样的系统SWIFT在2018年也实验过[6],结果是超级账本不能处理34家银行,因为超级账本的“通道”技术不能支持超过这数目的银行参与。VISA系统和SWIFT非常像,也使用超级账本,能够支持多少银行参与?另外商家也不能上链,区块链保护的主要是银行和VISA而已,商家和银行之间的包含还是要使用传统机制。这会是支付系统,而支付系统的一个特性就是必须低延迟,这是公链不能做到的。6.SWIFT的悲哀SWIFT一直是世界金融中心的中心,主导世界跨境支付多年。但是今天出现的这些老虎项目,那个把SWIFT放在他们系统里面?IBM有吗?VISA有吗?IBM不但没有,还公开宣传以后不需要SWIFT。只有在SWIFT的实验报告里面看到使用区块链在跨境支付需要SWIFT系统。这不代表世界金融结构要大变? 7.国外也认为超级账本是伪链根据国外报道[1],超级账本根本不是区块链,IBM公司也收到许多批评。IBM公司在2018年公开承认超级账本的共识机制是“Kafka共识”,一个中心化的共识机制。 这是笔者在2017年7月在深圳演讲的时候提出的问题,笔者的质疑国外后来也引用。其实这事在2017年6月1日,笔者已经把这问题告诉从纽约来北京拜访的IBM全球副总裁,也表示我们可以帮忙解决这技术问题。所以这问题IBM至少两年前就知道这问题。 今天认定超级账本不是区块链已经不是中国的专利,美国媒体公开怀疑。大家问为什么把区块链系统的分布式拜占庭将军协议改换成中心化的Kafka共识协议?2019年4月笔者在美国硅谷参加IEEE国际会议多人也在谈论这问题。 8.解决方法VISA系统还是有许多问题。例如现在VISA系统有15000家金融机构,20亿客户。这个需求和34家银行就不能支持的性能差距非常远 (441倍和5800万倍)。 超级账本不是区块链,扩展性也有限。但这VISA系统可以使用中国推出的熊猫区块链互联网模型[7,11]来解决。每个银行可以有自己的账户区块链,经过这种区块链再经过VISA公司的区块链可以形成一个区块链互联网[9,10],如图3。这种情形,增加交易链可以支持更多的银行参与。 图3:区块链互联网解决VISA系统的问题,增加交易链,许多银行可以加入 而原来VISA系统商家不能进入,只能保护VISA和银行,但是这问题也可以解决。每家商家可以有自己的账户区块链,经过交易链和银行接。这样每个参与单位都可以上链。 图4:商家和银行都可以上链 这样, VISA系统可以有 ...

July 11, 2019 · 1 min · jiezi

飞猪项目管理数字化实践

6月29日,阿里巴巴研发效能部与PMI、Teambition联合举办的阿里巴巴研发效能实践日将在杭州西溪园区举行,活动聚焦敏捷精益项目管理。活动详情及报名可点我前往。 项目管理的目的是什么?面对工作中的各种不确定性,如何利用数据帮助项目管理?又有哪些数据是项目经理需要关注的?这里分享一篇飞猪技术部高级项目管理专家姚澍的文章,希望给你带来一些启发。 前言项目管理是起源于20世纪中期美国的航空项目,经过大量专业的项目管理从业人士总结出来的一门学科,并且随着时间发展在不断演进、更新,比如,在2018最新的PMBOK第六版中就提出了敏捷适应型的项目管理方法、拉动式的进度规划、新型项目经理价值等等。当下,全球IT公司中都在广泛使用LeSS、SaFe、精益、DevOps,这些新颖的方法论都集中关注在高效的产品开发或生产阶段,依然无法完全取代更系统化的项目管理。 项目管理的目的经常听到周边的同学说,项目经理一没权威、二没前途,谁都不愿意做项目经理,因为干不好就要背锅。现实中,看到的很多项目经理项目计划拍脑袋,执行过程拍胸脯,项目战报拍马屁,最后草草收尾、拍拍手走人。似乎因为带着“管理”两个字,让大家误以为这是一个务虚的官僚主义行为,丝毫不考虑当中的科学性、知识体系、方法论,最后学敏捷只学会了站会、学精益只学会了画看板、学DevOps只学会了刷脸好办事。 为什么要有项目?为什么要项目管理?我们在管理什么?难道只是为了运动式的完成一项任务?难道只是为了每年绩效好考核?我们经常被身在其中的身份制约了视野,总是想着用多快好省的方法达到目的,结果在不知不觉当中,就走入了小巷之中。在那个窄巷当中行走,不是进,就是退,甚至无法转身。只有跳出自己的小巷思维、凌空跃起再去审视局面时,才能看到还有很多其他的选择和出路。这时,才会自然的去追问:为什么要立项?项目里为什么要有这些需求?哪些产品特性需要改变?研发团队的开发活动如何分解?谁在关键路径上?要花费多少工时?如何保证所有研发活动最后能按时按质量交付?如何保证产品上线后实现业务目标?如何监控过程中的风险、问题?最后项目的投资回报比如何?是否完成了企业的财年目标?财报中咱们今年将是亏还是盈? 这样一系列追问下来,是不是慢慢感觉自带CEO视角了? 对,没错。项目就是企业的日常活动的组织方式,在质疑要不要立项时就分辨了哪些是临时任务哪些是每日例行,就能识别出企业最核心的关键任务,采用合适的方法管理项目和日常。 初创企业里,团队很小,7、8个人一间房、通讯靠喊的时代,沟通、管理成本是相对较小的,确定优先级就可以直接执行了,甚至也没什么好失去的。然而团队体量上去之后,稍有疏忽,沉没成本太大,会直接影响企业存亡。 项目管理铁三角里的几个因素:范围、成本、工期、质量,都和企业的关注高度吻合,企业管理核心也就自然落到了关键项目的管理上。 为何要数字化管理项目互联网公司要面对很多不确定的用户、对手、市场,面对未知,我们怎么办?只有两个方法: 试验,在小范围快速实现产品原型,灰度测试或者A/B测试收取反馈,结合运营效果快速反馈,在下一个迭代优化、改进。度量,准确定义度量维度,精确、及时收集数据,运用数据分析暴露问题、验证试验结果,从而持续优化。度量离不开数据,我见过很多项目经理,在描述自己带过的项目规模时,说不出准确的数字:多少团队成员、多大项目范围(代码行、特性数量、开发工时),多长的项目周期,多少项目成本,怎样的业务目标?很多人甚至分不清楚OPEX和CAPEX,更不用说ROI。因为缺少谈数字的环境,缺少对数字的敏感,没有鼓励和培养人人习惯用数字分析来系统性思考的内部环境,导致大部分的技术甚至PD只会埋头干活,鲜少追问为什么,沟通时也用大量的篇幅主观、模糊的描述项目进展,造成理解偏差、沟通低效。 为什么要习惯在工作中谈数字呢? 数字是量化的目标。企业运作是有详细细节规划的,比如,财年的业务目标、成本预算,应该层层分解,落实到各个项目、各个节点当中去,甚至要能反向推导,这样才能预测月度、季度的运营结果。同时,在过程当中能作为组织行为的基准线,让大家自觉针对目标及时调整行为。数字更客观,能更准确描述细节。数字比感觉更可靠,人往往容易被自己的情绪、偏见、误解欺骗,会对事实作出错误的判断。论据越客观、越细致,才越能经得起推敲,不管是用来决策还是沟通,都远胜于简单的拍脑袋。数字是驱动力。项目经理的核心价值应该在数据分析上,能从大量的、有效的数据当中发现趋势,识别风险或者机会,及时调整项目策略,保障项目目标达成。遗憾的是,现实中大多数项目经理都干的是初级的信息、事实收集工作。不是说信息收集不重要,而是应该建立起通用的、自动化的、可视化的数据大盘,把精力投入到收集完之后如何整合,如何解读,如何决策。哪些数据是项目经理必须关注的如下表所示,项目的不同阶段的关注重点不一样,相应的要有高效的手段挖掘出有用的信息。 注:文中提到的Aone是阿里一站式研发协作平台,对外叫云效,下同 事实上,AONE已经能基本提供收集以上所有信息的功能。很多大型的IT企业一直不遗余力的在寻找合适的工具管理各类信息,因为历史遗留问题,不得不花费大量的时间、精力打通所有的信息通道,迁移、整合数据,而AONE已经帮助我们弯道超车,实现了完整的需求产生、生产、集成、发布、部署。在飞猪,我们更进一步,针对特定的应用场景,基于AONE的数据,二次开发,用魔法石生成了重点项目的定制化项目数据大盘。 飞猪项目数据大盘实践那么数据大盘包含了哪些内容呢? 首先,从19财年业务策略开始梳理重点战役结构,用一张图画出各战役之间的关联(以下为示意图),并明确负责的项目经理和产品经理,形成第一级的项目目录。重点在: 分清楚项目发起人和项目集经理。我们经常容易把这两个角色弄混,一个项目会出现好几个管理者,在不同场合项目经理的名字不一样。项目经理是第一责任人,必须是直接指挥、跟踪、汇报项目的执行人,明确其唯一性和权威性并广而告之很重要,能加速问题解决和减少沟通误解。整合项目结构,合并相关联的,并广泛沟通。目标明确再立项。 设定统一的项目里程碑规范。以前项目的里程碑计划很随意,可有可无,大小不一。容易造成:颗粒度太小,外部干系人看不懂;颗粒度太大,缺少对项目组内的指导。现在采用统一的M系列里程碑定义,明确项目考核的时间点和标准,严格执行重要里程碑(M1&M4)的评审制度,有效的管理干系人期望,并随时度量下一个里程碑的可实现性。这样的好处是: 用统一的术语规范的项目执行的质量标准。里程碑评审增加项目执行的严肃性和完整性,做到有始有终,防止虎头蛇尾,帮助持续改进。增加沟通有效性,项目的评审结果和跟踪直观、易读、统一。 整理AONE项目空间,明确产品线、项目组合、项目集、项目的结构关系。需求、测试、缺陷、发布全部落入AONE,在魔法石生成对应的报表结构,层层钻取细节信息。 在飞猪产品线下设置子产品线,所有需求都直接在对应的子产品线下创建,遵循统一的规范模版,这样才能保证所有需求属性一致,方便魔法石度量。所有重要项目在PMO注册、创建,不允许私建项目。简化项目结构,只允许两层项目归属关系,避免过深的项目结构带来的责任不明确。由PMO组织重点项目例会,项目集经理向项目发起人汇报项目状态,方便及时调整策略、暴露问题,解决冲突,同步信息。 建设项目经理的责任制,要求项目经理必须对项目整体表现给出信心判断,依据AONE里的项目健康度信息形成项目晴雨表,红绿灯直观表现出项目的健康状态。要注意的是: 项目状态是项目经理的主观判断,是报告里为数不多的非客观评价,但不能省略,整体判断项目健康状态,同时也给出责任人的承诺项目的趋势比单点状态更重要。对持续告警的项目,要开始专项治理。 针对需求管理,首先明确不同角色的责任和合作方式。清晰的项目边界是成功的关键。项目启动初期,应该花大量的时间和精力明确需求范围、优先级、技术方案,而不是盲目开工,毫无纪律的边讨论边干活,不断返工,最后越做越困惑。比如,下面的两个实例, 项目A,对各类需求范围的管理都很严格,需求总量只出不进,每月评审上线效果,在后期果断丢弃低优先级的需求保证项目按时完结。而项目B,各类需求都在缓慢增长,实际表现就是项目做的像日常,未来没有规划,想到什么就做什么,目标不明确。使用按优先级分类的需求累积流图,识别项目核心交付内容,通过日常监管防止项目边界蔓延,做到有始有终,清空桌面再结项。 测试计划可以使用甘特图,测试过程中要有定期(每日/每周)进展推进图。项目后半段的时候,往往是测试的白热化阶段,有些项目可能需要用日会结合缺陷报告重点推进,识别出阻塞测试的缺陷,是否需要组织特殊小分队集中解决难题,是否需要不断升级警告直到团队的高层领导桌面上,要能结合进展明确指出问题以及解决办法,而不要罗列繁琐的细节。 缺陷分析,在宏观上,要能指出质量问题是否收敛,解决速度是否够快,识别重点问题集中区;微观上要就重点问题清单,点对点分析原因、找出解决方案、给出实施计划。缺陷不仅仅是质量风险,也是工作量,不管是修复问题,还是提出新需求,都是整个项目的新增工作量。实际上,缺陷也是可以预测的,根据千行缺陷率、改动代码行数、修复工时、合适的数据预估模型,就能更合理的估计产品上线时间,而不是总倒排工期。做到符合一定质量标准的产品才允许上线,杜绝只开发不测试、只测试不修复、无纪律上线等一系列严重影响用户体验的行为。 风险管理一直是项目管理的难点。首先,我们只能管理看得到的风险,有些风险也不可避免的会实现,更不用说那些完全无法预测的风险。其次,风险管理更考验项目经理个人的经验和敏锐。AONE提供了风险管理的功能,但“重风险识别,轻用风险应对分析”的现象还是比较普遍。AONE中提供的风险汇总视图(下图左)只能单维度的展现风险严重性,缺少可能性指标,于是我们在数据大盘里加上了风险矩阵(下图右),按严重性、可能性划分出9宫格,把注意力集中在矩阵右上角,一目了然。 人力资源投入是大家都很感兴趣的一个话题。AONE暂时不提供相关统计,我们只能另外开发小工具,由团队TL每月填写各项目参与人员的数量。资源分配可以宏观上帮助研发团队规划项目投入,不仅仅对过去的资源投入分析总结,更重要是可以整体上预计未来的资源分配是否能支持业务需求。 理论上,大家填好AONE里的需求工时估计,计算出来的工作总量应该是最准确的资源耗费成本,也可以生成项目的工作量燃尽图,以此能准确的预测项目实际上线、验收的日期。但实际执行中面临挑战太大,需求拆分不明确导致工时估计落实困难,而不得不折中由TL来汇总人力资源分配信息。 经过半年的项目规范、数据运营落地实践,从S1半年的项目需求交付周期回顾,我们发现: 强管控的需求交付周期明显短于平均值。交付周期中占比较大的是需求分析阶段,表征就是项目前期需求、目标不明确,导致后期开发赶工,测试压缩,最后的结果自然就不够好。AONE的使用规范统一化非常重要,对需求的跟踪、更新不及时就会造成数据偏差。在使用好项目例会同步信息的同时,通过关联代码和需求自动汇总状态变化信息,让数据更准确。 项目管理体系的未来 我经常被问到PMO是干什么的?很多人直接把PMO和过程改进、提高研发效能相等,我觉得PMO应该承担的责任是:首先,协助分解战略,合理部署资源,把关项目立项,整合项目结构。其次,建立系统的适配的管理规范,拉通上下游,让研发团队如同工厂生产线一般有质量、有效率的交付产品;最后,赋能项目经理,提高管理水平。优化、提效应该是一以贯之的持续改进。 经过半年的数据建设,飞猪技术部运行的项目已经逐渐规范,完成了两个重点战役的M4验收,明确了项目边界,逐步培养项目经理们的数据意识,倡导大家追问业务目标,量化过程指标,每个迭代都及时收集业务反馈,保证用户价值在运营、产品、技术、客满团队之间的顺利传递,并形成闭环。当然,我们依然面临巨大的挑战: 用户价值的追问、传递必须持之以恒的坚持下去。日常需求和弱管控的项目开发支持不够。AONE中沉淀了大量的数据,需要人性化的自动收集和分析焦点问题。项目的迭代规划、定期演示尚未制度化。项目经理赋能不够,只有越来越多的优秀项目经理成长起来,才能更广泛的保证系统健康运行。这半年,有成功交付上线的项目,也有目标不明确业务效果不明显而被叫停的项目,我们为成功喝彩,也为挫败反思,至少我们已经迈出了第一步。希望有一天能真正实现项目的可视化、可度量、可预测,希望有更多的人有热情投身项目管理。未来的路还很长,我们还需努力。 在此文结尾,不得不提到龙幽、欧旋两位数据挖掘专家过去5个月中对PMO工作的倾力支持,总是容忍并及时满足需求方提出的各种琐碎、奇葩、紧急的要求,衷心感谢!! 本文作者:云效鼓励师原文链接 本文为云栖社区原创内容,未经允许不得转载。

June 12, 2019 · 1 min · jiezi

Python写的比特币和多种加密通货钱包

啥东西一个用python和urwid写的多功能数字货币钱包为什么你需要这个东西透明这是一个开源项目,所有人都可以看代码。安全你持有账户私钥,没人能偷走你的资产。可靠基于一个透明且开源运作的分布式区块链项目 :Mixin Network。主网已经于2019年2月末上线。有用不仅仅能保存比特币,还能保存其他币(Ethereum, EOS, XRP…)。快确认一笔交易只需要1秒钟。保护你的隐私匿名创建账户,匿名交易和付款。强大内置1秒闪兑交易所,可以交易比特币和主流加密资产。交易结束资产回到自己的钱包,不用放在中心化交易所,不担心交易所被攻击。 这是一个开放世界的入口通过开放式交易所可以在买卖任何ERC20 token。你自己创建都可以。有真随机数生成器保证的骰子游戏。安装Python 3:这个钱包基于Python3。macOSbrew upgradebrew install python@3Ubuntu使用第三方源安装python3sudo apt updatesudo apt install software-properties-commonsudo add-apt-repository ppa:deadsnakes/ppa遇到如下提示,敲击EnterPress [ENTER] to continue or Ctrl-c to cancel adding it.更新apt,安装 python3.7, python3.7-venvsudo apt updatesudo apt install python3.7 python3.7-venvsudo ln -s /usr/bin/python3.7 /usr/bin/python3确认python3 和Python3-env$ python3 -VPython 3.7.2下载代码库并且创建env环境git clone https://github.com/awesome-mixin-network/bitcoin-cli-wallet-python.gitcd bitcoin-cli-wallet-pythonpython3 -m venv ./激活环境source ./bin/activate安装依赖包先升级pip,然后安装依赖软件库pip install –upgrade pippip install -r requirements.txt运行代码python Bitcoin_Wallet_Mixin_consoleGUI.py

April 2, 2019 · 1 min · jiezi

第10期 DApp 榜单:日活一天不如一天,这个锅到底谁背?

作者:DD君欢迎添加作者微信 btcbtc555 与他进行交流!未经授权禁止转载!为了方便大家更直观的感受数据,本周的DApp榜单,我们在日活的增减比例上特地采用不同的颜色标识。所以在一片红彤彤的“血海”中,DD君表示真的很扎心。没错,本周的整体日活,又降了。最近的日子是真的不好过,不单单是区块链行业,只要是和投资有关的,基本上所有人都是一把辛酸泪。市场都是联动的,宏观大势不好,各行各业只能负重前行。深处灰暗,也许现在真是充值信仰的时候了。废话不多说,以下进入本周的DApp排行榜。ETH榜单原计于上周三进行的君士坦丁堡硬分叉,再次推迟,其核心开发者称将在2月27日进行分叉。此前DappDiscover曾做出预测,此次分叉若能增强以太负载,同时降低其交易手续费,ETH还有一扫颓势的可能性。但分叉未能如期进行,这对于所有的用户而言都是一次信心的耗损。与此同时,市场也对消息面的反应已消化完毕,2月27日分叉即使成功进行,以太应该也不会有太大的改观。本周的以太榜单中,排名第一的IDEX的日活也不过才500多,整体形势着实堪忧。彼得·蒂尔的《从0到1》理论里面提到要想获得成长,其提供的解决方案要比现有方案好10倍以上。以太的开发者,要做到上述这一点,难度不小。EOS榜单据DappDiscover数据统计,EOS链上目前已有219个活跃的DApp,共有43782个活跃用户,累计交易量超过1189万个EOS。在活跃用户和累计交易量(代币数量)上分别比ETH高出5倍和1000倍。目前EOS主网DApp增长速度相较十一月份要缓慢许多,市场行情惨淡是一方面原因,DApp开发者无钱可赚又是另一原因。漫漫熊市中,许多EOS的超级节点,也面临者入不敷出的困境。自身都已是朝不保夕,指望这些超级节点腾出手来帮一把这些DApp开发者更是无稽之谈了。TRON榜单上周向大家提到的游戏Epic Dragons,本周仍占据波场排行榜榜首位置,日活方面也居三大公链第一。同样是游戏的 DApp TronGoo的表现也是稳中求进。目前在Tron上称为超级代表的Tron超级节点在积极推动、扶持dapp生态建设,其中有很多超级代表以前就是游戏开发商。我们可以预见2019年Tron上面将会有更多高质量的游戏产出。1月18日,由波场举办的niTROn Summit正式于美国旧金山开幕。会上,波场创始人孙宇晨也发表了关于“波场走向未来”的开幕式主题演讲。波场在这一段时间的表现可谓是精彩十足,势头猛超以太和柚子。但大家还应记得,当初波场跌的有多惨,这段时间波场的表现只是价值回归的正常体现,切不可对其过度狂热。观点分析总有一群人在嚷嚷着都是因为公链的性能不好,速度太慢,效率太低,所以导致没人愿意在区块链上玩。但真的应该让这些公链背锅吗?灯泡(应用程序)是在有电网(基础设施)之前发明的。为了让广大消费者购买灯泡,就需要建设电网。1879年,首先出现了灯泡这个突破性应用,然后1882年才开始建设电网。飞机是在有机场之前发明的。为了让消费者广泛使用飞机,就需要建造机场。作为突破应用程序的飞机在1903年首先出现,并启发了人们在1919年成立航空公司,1928年建造机场,1930年实施空中交通管制。我们可以很容易的看见在大平台转变的历史中,首先出现一个突破性的应用程序,然后该应用程序启发了构建基础设施的阶段。先进的基础施设只是使得构建更先进的应用程序和基础设施变得容易,使消费者广泛采用这些应用程序。从经济层面上看,人类的生产活动是由“生产”和“消费”两部分构成。有效需求刺激人们去消费。出于获利的目的,市场会自发生产来满足这种需求。同时生产者会在超额利润的驱使下,自发改进技术提升生产效率。虽出于“私利”,但整个社会由此推进。我们可以得到如下的价值链:有效需求——消费——生产——技术革新——社会进步在区块链领域,有效需求即是玩家的好奇心/刺激感/金钱欲等等,只有玩家的有效需求得到满足,才能刺激玩家进行消费(玩DApp),推动整个价值链走下去,达到整个区块链产业的整体进步。所以日活以肉眼可见速度下降,这些DApp开发者是不是应该反思一下自我。你有哪些感兴趣的DApp?欢迎留言回复下一次讨论的,也许就是它。

January 22, 2019 · 1 min · jiezi

比特币闪电网络(Lightning Network)及其工作原理

当比特币于2008年由Satoshi Nakamoto首次提出时,James A. Donald对该系统的第一次公开评论包含以下内容:“我理解你的提案的方式,似乎没有达到所需的规模”。十年后,可扩展性仍然是比特币以及其他资深加密货币系统的最大问题。可伸缩性到底意味着什么?好吧,在它存在的整个过程中,比特币每秒只能处理大约7笔交易。虽然这在一开始就足够了,但该系统已经拥挤了几年了。因此,交易需要很长时间才能处理,交易费用也是偏高的。如果比特币永远成为现有支付系统的完全替代品,它显然需要能够与它们竞争。截至目前,它还差得很远。要了解情况的严重程度,只需比较比特币每秒7次的小额交易,以及Visa的平均24,000次交易,以及每秒约50,000次交易的峰值容量。多年来,比特币的社区就如何提高比特币的可扩展性提出了各种建议,但尚未达成清晰的总体共识。这就是为什么我们目前有几个类似比特币的网络从原始网络分支出来的原因。然而,目前正在测试的一种提议的解决方案可能能够正常工作。它被称为闪电网络。什么是闪电网络?在历史的某个时刻,发送电报是最快捷,最有效的长途通信方式。为此,你必须前往当地邮局,填写表格并根据其中包含的信件支付费用。然后,该消息将被发送到最近的电报局,以便传送到远端。邮差然后将电报发送到目的地。基本上,有很多人参与发送一条简短的短信,你必须付出相当多的钱。这几乎是比特币网络的当前状态。在这个类比中,闪电网络基本上像如果有一个你想要快速拨号交谈的人:只需要按“1”就可以让你朋友的电话响了。简而言之,比特币闪电网络背后的想法可能听起来像这样:我们真的不需要每一笔交易都记录在区块链上。相反,Lightning Network为比特币的区块链增加了另一层,使用户能够在该额外层上的任何两方之间创建支付渠道。这些渠道可以根据需要存在,并且由于它们是在两个人之间建立的,交易几乎是即时的,费用将极低甚至不存在。它是如何工作的?输入Danny和Jon。他们可能正在一起工作,他们可能是亲戚或一对夫妇,重点是他们需要经常,快速且以最低费用向对方汇款。因此,他们在闪电网络上建立了一个频道。首先,他们需要创建一个多功能钱包,这是一个钱包,他们可以用他们各自的私钥访问。然后,他们都将一定数量的比特币(比如每个3比特币)存入该钱包。从那时起,他们可以在两者之间进行无限制的交易。基本上,这些交易是存储在共享钱包中的资金的重新分配。例如,如果Danny想要向Jon发送1BTC,她将需要将该金额的所有权转让给他。然后,他们两个使用他们的私钥签署更新的资产负债表。 资金的实际分配发生在渠道关闭时。该算法使用最近签署的资产负债表来确定谁获得了什么。如果Danny和Jon决定在一次交易后关闭频道,Danny将获得2BTC,而Jon将获得4BTC。只有在频道关闭后,有关其初始和最终余额的信息才会广播到比特币区块链。因此,Lightning Network的工作方式是它允许用户在主区块链之外进行大量交易,然后将它们记录为单个交易。最令人兴奋的是,一旦该技术被广泛采用,你甚至不一定需要建立专门的渠道来向某个人发送资金。相反,你可以使用与你已连接的人的频道向某人发送付款。系统将自动找到最短路径。这就是闪电网最终可能为比特币购买一杯咖啡的永无止境的辩论提供答案的方法。从它的外观来看,通过Lightning频道闪电网络这样做可能会起作用,因为它几乎只是一次购买,不会产生任何费用。那安全吗?但是,值得注意的是,Lightning Network的概念意味着系统将在区块链之上工作,但实际上并不具备其安全性。因此,它很可能主要用于小微交易。需要去中心化安全性的较大转账很可能仍将在原始层上完成。最后,目前正在测试的Lightning Network的另一个有趣特征是交叉链原子交换,它是不同区块链之间的代币转移。简而言之,它是一种在不使用加密货币交换的情况下将任何给定的加密货币交换到另一种加密货币的方式。最终,这项技术可能会使不安全的集中式加密货币交换以及与交易相关的麻烦都过时。比特币和莱特币测试区块链之间交换代币的第一个测试已经证明是成功的。谁开发了它?Lightning Network最初是由Joseph Poon和Thaddeus Dryja在2015年的白皮书中描述的——当前版本的白皮书可以在这里找到。目前有三个团队共同开展闪电网络的大部分工作:Blockstream,Lightning Labs和ACINQ,以及来自比特币社区其他成员的意见。上面提到的每个初创公司都在使用他们自己的实现,以不同编程语言编写的Lightning网络协议。服务商产品Blockstream适用于C版的LN版本。Lightning Labs正在开发一个用Golang编写的Lightning Network Daemon(lnd)。ACINQ负责Scala实施。此外,目前还有正在开发其他实施方案。完整列表可在此处获得。最后,重要的是要提到最近的测试已经证明三个主要实现是完全可互操作的,这意味着它们可以彼此无缝地协同工作。何时,在哪儿以及为何使用它?加密货币社区似乎热切期待Lightning Network的推出。最初,它是专门为比特币设计的,但该技术目前正在为一系列其他加密货币开发,如Stellar,Litecoin,Zcash,Ether和Ripple。真正的比特币实际上已经被发送并且几乎总是使用Blockstream,Lightning Labs和ACINQ的实现接收,证明所有这三个实现都是可互操作的。此外,已经公布了第一版闪电网络规则概述的规范。这些规范是网络向前迈出的一大步,因为它们可以被应用程序的开发人员使用,也可以在其他编程语言中实现Lightning Network。然而,该网络仍处于起步阶段。到目前为止,还没有软件可以让网络的真实临时用户进行交易。此外,目前的实施仍然是非常错误的时机。Lightning Network开发人员已经敦促用户使用比特币的测试网了解网络,而不是发送任何真钱。开发人员还建议用户保持耐心,因为网络代码非常复杂,需要严格的测试。为了被比特币社区完全采用,Lightning Network需要证明自己是安全和可用的。考虑到这一点以及许多其他因素,专家预测,完全正常工作的闪电网络可能需要几个月到几年的时间。至于使用网络的原因,答案很简单:可扩展性。如果网络实际上将提供比特币主要问题的解决方案,它很可能会被其他加密货币采用。如果发生这种情况,可能会进一步开发交叉链原子交换技术,从而标志着建立真正去中心化的加密货币交换的第一步。Pros优点正如之前提到的,闪电网络只是迈出了第一步。它仍然处于开发阶段,它是否会像开发人员想象的那样实际工作仍有待观察。如果是这样,以下是Lightning Network的一些最重要的优势,你可以从中受益:交易速度。一旦网络上线,就不必等待你尝试进行的每笔交易的多次确认。无论网络有多繁忙,交易几乎都是即时的。如果发生这种情况,加密货币市场将朝着能够与Visa,MasterCard和PayPal等传统支付系统竞争迈出巨大的一步。交易费用。由于交易实际上将在闪电网络频道内和区块链之外进行,因此你只需支付最微小的费用(如果有的话)。这是Lightning Network的主要优势之一,因为这将完全使比特币成为商店,咖啡馆,酒吧等的一种付款方式。可扩展性。据说闪电网能够将比特币和其他加密货币的每秒交易数量达到每秒至少100万笔交易的前所未有的高度。交叉链原子交换。交叉区块链交易的第一次测试奏效了,这一切都非常令人兴奋。只要两个区块链共享相同的加密哈希函数(并且大多数主要区域链共享),用户将能够将钱从一个链转发到另一个链,而不必信任第三方中介,例如交换。该技术具有真正的革命性潜力。安全和匿名。绝大多数加密货币都没有完全匿名。发送仍然可以从一个钱包跟踪到另一个钱包。然而,当谈到闪电网络时,大部分交易都发生在主区块链之外,因此通过Lightning渠道进行的所有微支付几乎都无法追踪。Cons缺点没有全面运作。目前Lightning Network的主要缺点可能还在于它尚未完全投入运营,因此没有办法完全断言它实际上有多好。此外,它的概念在纸面上看起来很棒,但是到目前为止还不可能知道它是否会在实现后看起来很棒。渠道的复杂性。闪电网络被概念化为一种渠道网络,一旦建立,理论上应该允许无缝交易。但是,如果付款必须采取过于错综复杂的路线,则无法确定会发生什么。当然,如果你的交易需要通过几十个中间渠道,费用就会增加。渠道上限。该网络的另一个缺点是,在其当前版本中,通道被限制。也就是说,两个用户在建立频道时存储在钱包中的比特币数量是该频道中的最大资金数量。这种设置创造了一种情况,即某些用户可能需要在主要区块链中选择闪电网络渠道中的流动性和其外部的流动性。这远非理想,特别是那些资源相当有限的人。路由集中。此外,人们一直担心会形成“枢纽”——一种拥有大量资金的节点,大多数交易都将通过这些节点。许多比特币爱好者认为这是网络的进一步集中化。但是,这些中心不太可能能够获得任何重大的交易费用。同样,值得指出的是,目前上面列出的闪电网络的优点和缺点都非常具有推测性。我应该使用闪电网吗?嗯,事实上,如果你不是高级用户,那么你还不能使用Lightning Network。所以,你现在唯一可以做的就是等待,看看闪电网络是否能够实现而非炒作,它是否真正起作用和描述以及它是否安全。请记住,Lightning Network不是唯一的缩放提案,并且它绝不是该竞赛中无可争议的领导者,比特币现金(BCH)是其主要竞争对手。BCH擅长者和闪电支持者之间的辩论很激烈,看不到尽头。可能是其中一个提案出现在最前面,它们可能共存,或者可能存在完全不同的解决方案。闪电网听起来令人兴奋。如果它确实提供,请考虑你实际使用比特币的内容。如果你使用代币作为长期投资而不是其他任何东西,你可能甚至不需要Lightning Network,因为目前委托它处理大额转账似乎并不完全安全。但是,如果你将比特币视为一种替代支付方式,那么闪电网络如果符合预期,对你来说将是至关重要的。即时微支付,匿名性增加,几乎不存在费用——它似乎真正为大多数比特币的问题提供了解决方案。======================================================================分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。汇智网原创翻译,转载请标明出处。这里是原文比特币闪电网络(Lightning Network)及其工作原理

January 7, 2019 · 1 min · jiezi

区块链矿工挖矿交易的七个步骤

你有没有想过区块链的挖掘过程如何进行的,或者你的交易如何得到确认并添加到了区块链?好吧,我也是如此。由于我找不到任何明确的逐步解释这个过程文章,我决定深入研究并自己编写指南。以下是区块链交易如何通过七个步骤从你的钱包处理到区块链中。步骤1用户注销交易从他们的钱包应用程序,尝试从他们发送某个加密币或代币给其他人。步骤2交易由钱包应用程序广播,现在等待矿工在相应的区块链上接收。只要它没有被挖掘,它就会在“未经证实的交易池”中徘徊。此池是网络上等待处理的交易的集合。这些未经证实的交易通常不会收集在一个巨型池中,但更常见的是在小型细分的本地池中。步骤3网络上的矿工(有时称为节点,但不完全相同!)从这些池中选择交易并将其形成“块”。除了一些元数据之外,块基本上是交易的集合(此时,仍然是未经证实的交易)。每个矿工都构建他们自己的区块,但是多个矿工可以选择要包含在他们区块中的相同交易。示例:两名矿工,矿工A和矿工B。矿工A和矿工B都可以决定将交易X包含在他们的区块中。块具有最大数据大小。在比特币区块链中,块的最大大小是最大1MB的数据。但在将交易添加到其块之前,小型企业需要根据区块链历史检查交易是否有资格执行。如果发件人的钱包余额根据现有的区块链历史记录具有足够的资金,则该交易被认为是有效的并且可以添加到该块中。矿工通常会优先考虑设置高交易费的交易,因为这会给他们更高的回报。步骤4通过选择交易并将其添加到其区块,矿工创建一个交易块。要将此交易块添加到区块链(以使所有其他节点和矿工注册交易),该块首先需要签名。此签名是通过解决每个交易块所特有的非常复杂的数学问题来创建的。每个块都有不同的数学问题,这意味着每个矿工都会处理他们构建的块所特有的不同问题,但所有这些问题同样难以解决。为了解决这个数学问题,需要大量的计算能力(因此需要大量的电力)。这是称为挖掘的过程。如果你想了解更多有关其工作原理的信息,请继续阅读下面的内容,否则请跳至第5步。挖掘aka哈希(工作量证明算法)当尝试向区块链添加块时,每个矿工面临的数学问题是找到其块中的数据的哈希输出(也称为签名),其以一定量的连续零开始。这听起来很复杂吧?但实际上并不那么难。让我试着用一个简单的方法向你解释。在我们继续之前,解哈希函数是什么很重要。不用担心,我不会涉及太多的技术细节。哈希函数只是一个很难解决的数学问题,但答案很容易验证。哈希函数接受数字和字母的输入字符串(字面意思是任意字符串的随机字母,数字和/或符号),并将其转换为由随机字母和数字组成的新的32位字符串。这个32位数字符串是哈希输出。如果输入字符串中的任何数字或字母发生更改,则哈希输出也将随机更改。但是,相同的输入字符串将始终提供相同的输出字符串。现在考虑块内的数据作为哈希输入(一串数据)。当对此输入进行哈希处理时,它会提供哈希输出(32位数字符串)。比特币区块链的一个规则是该输出字符串需要以连续数量的零开始,以便有资格作为块签名。这是每个矿工在尝试向区块链添加区块时所寻找的东西;以一定量零开始的输出字符串。但是如果块的数据字符串没有哈希到以零的数量开头的输出字符串中呢?好吧,这就是为什么矿工们反复更改其块内的一部分数据,称为nonce。由于随机数会一直在变化,因此哈希函数的输入数据也会发生变化,从而导致不同的哈希输出。最终,矿工希望找到一个输入字符串(块数据和字符串的字符串),这些字符串哈希为符合条件的输出字符串(以零的数量开头)。下面的例子使用七个零,但这个零的数量实际上取决于区块链的区块难度。如果你还没准备好,请不要点击它。这就是矿工们需要找到符合条件的签名的方式,这也是解决这个数学问题需要如此大的计算能力的原因。猜测这么多不同的nonce需要花费大量的时间和计算能力。如果你顺利完成了很好的工作,现在让我们继续前进到第5步。注意:此过程实际上并未定义为数学问题,而是定义为确定性事项——计算机正在对数字执行预定操作以查看输出是否合乎需要。步骤5矿工首先为其区块找到符合条件的签名(解决方案),将此签名广播给所有其他矿工。步骤6其他矿工现在验证该解决方案是否与发件人块的问题相对应(如果哈希输入实际上导致该签名)。如果有效,其他矿工将确认解决方案并同意该块可以添加到区块链中。这就是“工作量证明”定义的来源。找到解决方案的矿工将其“工作量证明”(又称解决方案)发送给其他矿工,然后他们将验证解决方案是否合法。如果是,那么其他矿工将同意并且就区块链达成“共识”。现在可以将块添加到区块链中,并将其广播到网络上的所有其他节点及其签名。只要块内的交易与该时间点的当前钱包余额(交易历史)正确对应,其他节点将接受该块并将其保存到其交易数据中。步骤7如果大多数矿工达成共识,则块被添加到区块链中。每次在此块的顶部添加另一个块时,它将被视为其下方块的另一个“确认”。例如,如果我的交易包括在块502中,并且区块链是507个区块长,则意味着我的交易有5个确认(507-502)。这也是Etherscan在向你展示交易详情时所指的内容。你的交易确认越多,攻击者就越难以改变它。当新区块被添加到区块链时,所有矿工将不得不在第3步重新开始,形成一个新的交易区块。矿工们不能继续(好吧,他们可以,但这是无关紧要的)采矿也解决了他们正在研究的区块问题,原因有两个。1.它可能包含已被添加到区块链的最后一个块确认的交易,因此其中一些交易现在可能无效,使得整个块无效。2.每个块都需要添加哈希输出添加到区块链的最后一个块到其元数据中。这就是它成为区块链的原因。如果矿工继续挖掘他们已经在处理的块,其他矿工会注意到哈希输出与区块链上最新添加的块的输出不对应,因此将拒绝该块。======================================================================分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。汇智网原创翻译,转载请标明出处。这里是原文区块链矿工如何以七个步骤处理挖掘工作并进行交易

January 4, 2019 · 1 min · jiezi

理解eosio.token合约

我必须承认,学习eosio一直没有闲庭信步的感觉,我可以看到为什么很多人说它有一个陡峭的学习曲线。随着eosio软件继续经历大量快速发展,文档数量有限,很少有工作实例可供参考。我已经被困了好几次,也希望帮助改善下一个开发人员的体验。在本文中,我将通过将其分解为单独的部分来讨论eosio.token合约。什么是eosio.token合约?eosio.token合约允许创建许多不同的代币。这使任何人都能够创建和发送代币。每个代币必须由issuer帐户发行。由于帐户可以包含多方,因此你可以使用具有所有者和活动权限的普通帐户或自定义配置帐户来创建和管理代币。每个代币都是asset类型,如下所示:1000000000.0000 SYS1.0000 SYMBOL0.10 SYSasset类型是一个数字(如果我没记错的话可以达到18位小数)和一个可以在1-7个大写字母之间的符号。此合约有三个操作可用于与之交互。它们是:创建,发布和转账。创建用于定义新代币的特征。这包括代币asset符号,最大供应量以及允许发出代币的帐户。创建还会将新代币配置保留在区块链上。这意味着新代币配置的存储必须由某人放置。正如你稍后将看到的,部署此合约的帐户(在我们的案例中为’eosio.token’)也将支付代币配置存储。发布用于增加代币的有效供应。可以持续发出代币,直到达到最大供应量。在代币创建期间定义的issuer必须批准此操作才能使其成功。转账让一个帐户将代币转移到另一个帐户。部署合约你应该知道的第一件事是每个eosio智能合约都属于一个eosio帐户。合约基本上是其他帐户可以与之交互的对象。合约包含在区块链上执行代码的操作actions。合约可以直接访问区块链上的存储,删除和更新数据。将一个action推送到合约需要至少一个帐户的授权。根据合约的复杂性,可能需要进一步的帐户和权限。帐户可以由基于权限的配置中设置的单个或多个个人组成。智能合约只能由一个帐户运行,而一个帐户只能拥有一个智能合约。最佳做法是为帐户和合约提供相同(小写)的名称。在你与eosio.token合约进行交互之前,你需要创建一个具有相同名称的帐户,并将合约部署到该帐户。首先创建一个帐户$cleos create account eosio eosio.token <OWNER-KEY> <ACTIVE-KEY>然后编译合约$cd eos/contract/eosio.token$eosiocpp -o eosio.token.wast eosio.token.cpp最后将合约部署到帐户上$cleos set contract eosio.token ../eosio.token你可以验证合约是否已部署$cleos get code eosio.token合约架构合约分为两个文件eosio.token.cpp和eosio.token.hpp。.hpp文件定义合约类,操作和表,而.cpp文件实现操作逻辑。让我们首先看一下将用于实例化合约对象的合约类。(我从eosio.token.hpp中删除了一些遗留代码)/** * @file * @copyright defined in eos/LICENSE.txt /#pragma once#include <eosiolib/asset.hpp>#include <eosiolib/eosio.hpp>#include <string>namespace eosiosystem { class system_contract;}namespace eosio { using std::string; class token : public contract { public: token( account_name self ):contract(self){} void create( account_name issuer, asset maximum_supply); void issue( account_name to, asset quantity, string memo ); void transfer( account_name from, account_name to, asset quantity, string memo ); private: friend eosiosystem::system_contract; inline asset get_supply( symbol_name sym )const; inline asset get_balance( account_name owner, symbol_name sym )const; struct account { asset balance; uint64_t primary_key()const { return balance.symbol.name(); } }; struct currency_stats { asset supply; asset max_supply; account_name issuer; uint64_t primary_key()const { return supply.symbol.name(); } }; typedef eosio::multi_index<N(accounts), account> accounts; typedef eosio::multi_index<N(stat), currency_stats> stats; void sub_balance( account_name owner, asset value ); void add_balance( account_name owner, asset value, account_name ram_payer ); }; asset token::get_supply( symbol_name sym )const { stats statstable( _self, sym ); const auto& st = statstable.get( sym ); return st.supply; } asset token::get_balance( account_name owner, symbol_name sym )const { accounts accountstable( _self, owner ); const auto& ac = accountstable.get( sym ); return ac.balance; }} /// namespace eosio构造函数和操作被定义为公共成员函数。构造函数采用帐户名称(将是部署合约的帐户,也就是eosio.token)并将其设置为contract变量。请注意,此类继承自eosio::contract。表和helper函数作为私有成员提供。两个内联函数在底部定义但从未使用过。这给我们留下了重要的函数sub_balance()和add_balance()。这些将由转移操作调用。表定义的两个表是accounts和stat。accounts表由不同的account对象组成,每个account对象持有不同代币的余额。stat表由持有供应,max_supply和发行者的currency_stats对象(由struct currency_stats定义)组成。在继续之前,重要的是要知道该合约将数据保存到两个不同的范围。accounts表的范围限定为eosio帐户,stat表的范围限定为代币符号名称。根据eosio::multi_index定义,code是具有写权限的帐户的名称,scope是存储数据的帐户。范围本质上是一种在合约中划分数据的方法,以便只能在定义的空间内访问。在代币合约中,每个eosio帐户都用作accounts表的范围。accounts表是一个包含多个account对象的多索引容器。每个account对象都由其代币符号编制索引,并包含代币余额。使用其范围查询用户的accounts表时,将返回用户具有现有余额的所有代币的列表。这是我如何想象它。在上图中,有一个名为tom的eosio帐户,他有自己的范围。在他的范围内是一个名为accounts的表。在该表中是一个单独的account对象,用于他持有的每个代币,SYS和EOS。还有一个名为stat的第二个表。此表将包含现有代币的状态。新标记在其自己的符号名称范围内创建。范围内是一个包含currency_stats对象的stat表。与包含许多不同account对象的accounts表不同,stat表仅包含给定标记符号的单个currency_stats对象。操作操作在.cpp文件中实现。要创建新代币,必须发送创建操作。Create有两个参数:发行者,以及新代币的最大供应量。issuer是唯一允许增加新代币供应的人。issuer不能超过最高供应量发行。第一行代码只需要合约帐户本身的授权。这可以在推动操作时使用命令行标志-p eosio.token给出。接下来的几行提取传入的maximum_supply资产的符号并执行一些错误处理。如果任何eosio_assert失败,那么所有代码都将被回滚,并且交易不会被推送到区块链。一个stat表使用符号名称(标记符号)作为其范围构造为statstable。代码检查代币是否已存在。如果没有,则创建新代币状态并将其保存到区块链中。emplace函数中的第一个参数_self意味着此合约帐户eosio.token将支付投注存储。请注意,保存supply的符号,因为它用作定位表行的键,但供应量尚未发出。你现在可以执行下一个操作,发布。发布将采用将收到已发行代币的帐户,发出的代币数量和备忘录。发布操作在一个中执行两个操作,因为它将修改创建的代币供应并调用转账操作以发送已发布的代币。同样,前几行提取代币符号并执行错误检查。以下代码部分将使用符号名称作为范围构造stat表。这用作查找先前使用create action创建的代币的键。请注意,从statstable.find()返回的existing currency_stat是一个指向找到的对象的迭代器。为简洁起见,声明了一个名为st的新变量,并将其设置为existing迭代器指向的实际对象。这让我们可以使用.运算符访问成员变量而不是指针表示法->。创建代币的issuer者需要签署此交易,并执行更多错误处理。最后,修改现有代币的currency_stats st,并将已发放的quantity添加到supply。issuer也将此supply添加到他们的余额中,以便初始供应可以追溯到他们的帐户。紧接着,通过SEND_INLINE_ACTION()调用transfer函数,这会将资金进行转移。论点如下:1.this是行动所属的合约代码。2.transfer操作的名称。3.{st.issuer, N(active)}操作所需的权限。4.{st.issuer, to, quantity, memo}操作本身的参数。这将我们带到最后的转账操作。转账操作将从from,to,quantity和memo获取四个输入参数。from是谁将发送代币,因此quantity将从他们的余额中减去。to是谁将收到代币,因此quantity将被添加到他们的余额。quantity是要发送的代币数量,memo是一个可以与交易一起发送的字符串。memo未在本合约中使用或存储。该操作首先要求from accounts帐户权限并对from和to帐户执行发布处理。该符号从quantity提取并用于获取代币的currency_stats。require_recipient()函数将在操作完成时通知发送方和接收方。完成更多发布处理,最后调用两个私有函数sub_balance()和add_balance()以从发送add_balance()减去代币余额并增加接收方的代币余额。这是完整的’eosio.token.cpp’文件。/ * @file * @copyright defined in eos/LICENSE.txt */#include “eosio.token.hpp"namespace eosio {void token::create( account_name issuer, asset maximum_supply ){ require_auth( _self ); auto sym = maximum_supply.symbol; eosio_assert( sym.is_valid(), “invalid symbol name” ); eosio_assert( maximum_supply.is_valid(), “invalid supply”); eosio_assert( maximum_supply.amount > 0, “max-supply must be positive”); stats statstable( _self, sym.name() ); auto existing = statstable.find( sym.name() ); eosio_assert( existing == statstable.end(), “token with symbol already exists” ); statstable.emplace( _self, [&]( auto& s ) { s.supply.symbol = maximum_supply.symbol; s.max_supply = maximum_supply; s.issuer = issuer; });}void token::issue( account_name to, asset quantity, string memo ){ auto sym = quantity.symbol; eosio_assert( sym.is_valid(), “invalid symbol name” ); eosio_assert( memo.size() <= 256, “memo has more than 256 bytes” ); auto sym_name = sym.name(); stats statstable( _self, sym_name ); auto existing = statstable.find( sym_name ); eosio_assert( existing != statstable.end(), “token with symbol does not exist, create token before issue” ); const auto& st = *existing; require_auth( st.issuer ); eosio_assert( quantity.is_valid(), “invalid quantity” ); eosio_assert( quantity.amount > 0, “must issue positive quantity” ); eosio_assert( quantity.symbol == st.supply.symbol, “symbol precision mismatch” ); eosio_assert( quantity.amount <= st.max_supply.amount - st.supply.amount, “quantity exceeds available supply”); statstable.modify( st, 0, [&]( auto& s ) { s.supply += quantity; }); add_balance( st.issuer, quantity, st.issuer ); if( to != st.issuer ) { SEND_INLINE_ACTION( *this, transfer, {st.issuer,N(active)}, {st.issuer, to, quantity, memo} ); }}void token::transfer( account_name from, account_name to, asset quantity, string memo ){ eosio_assert( from != to, “cannot transfer to self” ); require_auth( from ); eosio_assert( is_account( to ), “to account does not exist”); auto sym = quantity.symbol.name(); stats statstable( _self, sym ); const auto& st = statstable.get( sym ); require_recipient( from ); require_recipient( to ); eosio_assert( quantity.is_valid(), “invalid quantity” ); eosio_assert( quantity.amount > 0, “must transfer positive quantity” ); eosio_assert( quantity.symbol == st.supply.symbol, “symbol precision mismatch” ); eosio_assert( memo.size() <= 256, “memo has more than 256 bytes” ); sub_balance( from, quantity ); add_balance( to, quantity, from );}void token::sub_balance( account_name owner, asset value ) { accounts from_acnts( _self, owner ); const auto& from = from_acnts.get( value.symbol.name(), “no balance object found” ); eosio_assert( from.balance.amount >= value.amount, “overdrawn balance” ); if( from.balance.amount == value.amount ) { from_acnts.erase( from ); } else { from_acnts.modify( from, owner, [&]( auto& a ) { a.balance -= value; }); }}void token::add_balance( account_name owner, asset value, account_name ram_payer ){ accounts to_acnts( _self, owner ); auto to = to_acnts.find( value.symbol.name() ); if( to == to_acnts.end() ) { to_acnts.emplace( ram_payer, [&]( auto& a ){ a.balance = value; }); } else { to_acnts.modify( to, 0, [&]( auto& a ) { a.balance += value; }); }}} /// namespace eosioEOSIO_ABI( eosio::token, (create)(issue)(transfer) )示例命令:$cleos push action eosio.token create ‘[“usera”,“21000000.0000 DEMO”]’ -p eosio.token usera $cleos push action eosio.token issue ‘[“usera”,“21000000.0000 DEMO”,“issuance”]’ -p usera $cleos push action eosio.token tranfser ‘[“usera”,“userb”,“1000000.0000 DEMO”,“here you go”]’ -p usera 表命令:$cleos get table eosio.token DEMO stat { “rows”: [{ “supply”: “21000000.0000 DEMO” “max_supply”: “2100000000.0000 DEMO” “issuer”: “usera” } ], “more”: false } $cleos get table eosio.token usera accounts { “rows”: [{ “balance”: “20000000.0000 DEMO” } ], “more”: false } $cleos get table eosio.token userb accounts { “rows”: [{ “balance”: “10000000.0000 DEMO” } ], “more”: false } 注意:本文是在Dawn4.1代码发布时编写的。======================================================================分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。汇智网原创翻译,转载请标明出处。这里是原文理解eosio.token合约 ...

January 2, 2019 · 4 min · jiezi

以太坊构建DApps系列教程(六):使用定制代币进行投票

在本系列关于使用以太坊构建DApps教程的第5部分中,我们讨论了如何为Story添加内容,查看如何添加参与者从DAO购买代币的功能以及在Story中添加提交内容。现在是编写DAO最终形式的时候了:投票,黑名单,股息分配和退出。我们将提供一些额外的辅助函数以便进行监测。如果你对这一切感觉迷失了,那么repo中会提供完整的源代码。投票和提案我们将发布Votes并投票。这需要两个新的结构:struct Proposal { string description; bool executed; int256 currentResult; uint8 typeFlag; // 1 = delete bytes32 target; // ID of the proposal target. I.e. flag 1, target XXXXXX (hash) means proposal to delete submissions[hash] uint256 creationDate; uint256 deadline; mapping (address => bool) voters; Vote[] votes; address submitter;}Proposal[] public proposals;uint256 proposalCount = 0;event ProposalAdded(uint256 id, uint8 typeFlag, bytes32 hash, string description, address submitter);event ProposalExecuted(uint256 id);event Voted(address voter, bool vote, uint256 power, string justification);struct Vote { bool inSupport; address voter; string justification; uint256 power;}提案将对选民进行映射,以防止人们对提案进行两次投票,以及其他一些应该不言自明的元数据。投票将是一个是或否投票,并将记住选民以及他们以某种方式投票的理由,以及投票权——他们希望投入该投票的代币数量。我们还添加了一系列Proposals,以便我们可以将它们存储在某个地方,并提供一个计数器来计算有多少提案。让我们现在构建他们的附属函数,从投票函数开始:modifier tokenHoldersOnly() { require(token.balanceOf(msg.sender) >= 10**token.decimals()); _;}function vote(uint256 _proposalId, bool _vote, string _description, uint256 _votePower) tokenHoldersOnly public returns (int256) { require(_votePower > 0, “At least some power must be given to the vote.”); require(uint256(_votePower) <= token.balanceOf(msg.sender), “Voter must have enough tokens to cover the power cost.”); Proposal storage p = proposals[_proposalId]; require(p.executed == false, “Proposal must not have been executed already.”); require(p.deadline > now, “Proposal must not have expired.”); require(p.voters[msg.sender] == false, “User must not have already voted.”); uint256 voteid = p.votes.length++; Vote storage pvote = p.votes[voteid]; pvote.inSupport = _vote; pvote.justification = _description; pvote.voter = msg.sender; pvote.power = _votePower; p.voters[msg.sender] = true; p.currentResult = (_vote) ? p.currentResult + int256(_votePower) : p.currentResult - int256(_votePower); token.increaseLockedAmount(msg.sender, _votePower); emit Voted(msg.sender, _vote, _votePower, _description); return p.currentResult;}注意函数修饰符:通过将该修饰符添加到我们的合约中,我们可以将它附加到任何将来的函数,并确保只有令牌持有者才能执行该函数。这是一个可重复使用的安全检查!投票功能做了一些健壮性检查,例如投票权是积极的,选民有足够的代币实际投票等。然后我们从存储中获取提案并确保它既没有过期也没有已经执行。对已经完成的提案进行投票是没有意义的。我们还需要确保这个人还没有投票。我们可以允许改变投票权,但这会让DAO面临一些漏洞,例如人们在最后一刻撤回投票等等。也许是未来版本的候选人?然后我们在提案中注册一个新的投票,更改当前结果以便于查找分数,最后发出Voted事件。但是什么是token.increaseLockedAmount?这一点逻辑增加了用户的锁定代币数量。该功能只能由代币合约的所有者执行(此时希望是DAO)并且将阻止用户发送超过其帐户注册的锁定金额的令牌数量。提案落实或执行后,此锁定被解除。让我们编写现在提议删除条目的函数。投票删除和黑名单如本系列第1部分所述 ,我们计划了三个条目删除功能:1.删除条目:通过投票确认后,目标条目将被删除。投票时间:48小时。2.紧急删除条目[仅限所有者]:只能由所有者触发。通过投票确认后,目标条目将被删除。投票时间:24小时。3.紧急删除图像[仅限所有者]:仅适用于图像条目。只能由所有者触发。通过投票确认后,目标条目将被删除。投票时间:4小时。单个地址条目的五个删除导致黑名单。让我们看看我们现在该怎么做。首先,删除功能:modifier memberOnly() { require(whitelist[msg.sender]); require(!blacklist[msg.sender]); _;}function proposeDeletion(bytes32 _hash, string _description) memberOnly public { require(submissionExists(_hash), “Submission must exist to be deletable”); uint256 proposalId = proposals.length++; Proposal storage p = proposals[proposalId]; p.description = _description; p.executed = false; p.creationDate = now; p.submitter = msg.sender; p.typeFlag = 1; p.target = _hash; p.deadline = now + 2 days; emit ProposalAdded(proposalId, 1, _hash, _description, msg.sender); proposalCount = proposalId + 1;}function proposeDeletionUrgent(bytes32 _hash, string _description) onlyOwner public { require(submissionExists(_hash), “Submission must exist to be deletable”); uint256 proposalId = proposals.length++; Proposal storage p = proposals[proposalId]; p.description = _description; p.executed = false; p.creationDate = now; p.submitter = msg.sender; p.typeFlag = 1; p.target = _hash; p.deadline = now + 12 hours; emit ProposalAdded(proposalId, 1, _hash, _description, msg.sender); proposalCount = proposalId + 1;} function proposeDeletionUrgentImage(bytes32 _hash, string _description) onlyOwner public { require(submissions[_hash].image == true, “Submission must be existing image”); uint256 proposalId = proposals.length++; Proposal storage p = proposals[proposalId]; p.description = _description; p.executed = false; p.creationDate = now; p.submitter = msg.sender; p.typeFlag = 1; p.target = _hash; p.deadline = now + 4 hours; emit ProposalAdded(proposalId, 1, _hash, _description, msg.sender); proposalCount = proposalId + 1;}一旦提出,建议书就会被添加到提案列表中,并记录条目哈希所针对的条目。保存说明并添加一些默认值,并根据提案类型计算截止日期。该提案添加了事件,并且提案总数增加了。接下来让我们看看如何执行提案。为了可执行,提案必须有足够的票数,并且必须超过其截止日期。执行功能将接受要执行的提议的ID。没有简单的方法可以让EVM立即执行所有待处理的提案。可能有太多人要等待执行,并且他们会对DAO中的数据进行大的更改,这可能会超过以太坊块的气体限制,从而导致交易失败。构建一个可以由具有明确规则的任何人调用的手动执行功能要容易得多,因此社区可以关注需要执行的提议。function executeProposal(uint256 _id) public { Proposal storage p = proposals[_id]; require(now >= p.deadline && !p.executed); if (p.typeFlag == 1 && p.currentResult > 0) { assert(deleteSubmission(p.target)); } uint256 len = p.votes.length; for (uint i = 0; i < len; i++) { token.decreaseLockedAmount(p.votes[i].voter, p.votes[i].power); } p.executed = true; emit ProposalExecuted(_id);}我们通过其ID获取提案,检查它是否符合未执行的要求和截止日期过期,然后如果提案的类型是删除提案且投票结果是肯定的,我们使用已经写入的删除功能,最后发出了我们添加的新事件(将其添加到合约的顶部)。assert调用与require语句具有相同的用途:断言通常在“断言”结果为真时使用。要求用于先决条件。在功能上它们是相同的,assert语句的差异在它们失败时无法接受消息参数。该功能通过为该一个提案中的所有投票解锁代币而结束。我们可以使用相同的方法添加其他类型的提案,但首先,让我们更新deleteSubmission函数以禁止在其帐户上有五个或更多删除的用户:这意味着他们一直在提交社区投票反对的内容。让我们更新deleteSubmission函数:function deleteSubmission(bytes32 hash) internal returns (bool) { require(submissionExists(hash), “Submission must exist to be deletable.”); Submission storage sub = submissions[hash]; sub.exists = false; deletions[submissions[hash].submitter] += 1; if (deletions[submissions[hash].submitter] >= 5) { blacklistAddress(submissions[hash].submitter); } emit SubmissionDeleted( sub.index, sub.content, sub.image, sub.submitter ); nonDeletedSubmissions -= 1; return true;}那更好。自动将五个删除列入黑名单。但是,如果不给黑名单地址提供赎回的机会,那是不公平的。我们还需要定义黑名单功能本身。让我们做这两件事并将不合理的费用设置为例如0.05以太。function blacklistAddress(address _offender) internal { require(blacklist[_offender] == false, “Can’t blacklist a blacklisted user :/”); blacklist[_offender] == true; token.increaseLockedAmount(_offender, token.getUnlockedAmount(_offender)); emit Blacklisted(_offender, true);}function unblacklistMe() payable public { unblacklistAddress(msg.sender);}function unblacklistAddress(address _offender) payable public { require(msg.value >= 0.05 ether, “Unblacklisting fee”); require(blacklist[_offender] == true, “Can’t unblacklist a non-blacklisted user :/”); require(notVoting(_offender), “Offender must not be involved in a vote.”); withdrawableByOwner = withdrawableByOwner.add(msg.value); blacklist[_offender] = false; token.decreaseLockedAmount(_offender, token.balanceOf(_offender)); emit Blacklisted(_offender, false);}function notVoting(address _voter) internal view returns (bool) { for (uint256 i = 0; i < proposalCount; i++) { if (proposals[i].executed == false && proposals[i].voters[_voter] == true) { return false; } } return true;}请注意,列入黑名单的帐户的令牌会被锁定,直到他们发送不合格的费用为止。其他类型的投票使用我们上面写的函数的灵感,尝试编写其他提议。对于剧透,请查看项目的GitHub仓库并从那里复制最终代码。为简洁起见,让我们继续讨论DAO中剩下的其他功能。章节的结束一旦达到故事的时间或章节限制,就应该结束故事了。任何人都可以在允许提取股息的日期之后调用结束函数。首先,我们需要一个新的StoryDAO属性和一个事件:bool public active = true;event StoryEnded(); 然后,让我们构建函数:function endStory() storyActive external { withdrawToOwner(); active = false; emit StoryEnded();}简单:它将收集的费用发送给所有者并发出事件后停用故事。但实际上,这并没有真正改变整个DAO中的任何内容:其他功能对它的结束没有反应。那么让我们构建另一个修饰符:modifier storyActive() { require(active == true); _;}然后,我们将此修饰符添加到除withdrawToOwner之外的所有函数中,如下所示:function whitelistAddress(address _add) storyActive public payable { 如果DAO中遗留了任何代币,让我们将它们取回并接管这些代币的所有权,以便以后能够在另一个故事中使用它们:function withdrawLeftoverTokens() external onlyOwner { require(active == false); token.transfer(msg.sender, token.balanceOf(address(this))); token.transferOwnership(msg.sender);}function unlockMyTokens() external { require(active == false); require(token.getLockedAmount(msg.sender) > 0); token.decreaseLockedAmount(msg.sender, token.getLockedAmount(msg.sender));}unlockMyTokens函数用于解锁所有锁定的代币,以防某些锁定代币为特定用户锁定。它不应该发生,并且应该通过大量测试来移除此功能。股息分配和提款现在故事已经结束,收集的费用需要分配给所有代币持有者。我们可以重新使用我们的白名单来标记所有取消费用的人:function withdrawDividend() memberOnly external { require(active == false); uint256 owed = address(this).balance.div(whitelistedNumber); msg.sender.transfer(owed); whitelist[msg.sender] = false; whitelistedNumber–;}如果这些股息未在一定时限内撤回,业主可以抓住其余股息:function withdrawEverythingPostDeadline() external onlyOwner { require(active == false); require(now > deadline + 14 days); owner.transfer(address(this).balance);}留个家庭作业,考虑重新使用相同部署的智能合约,清除其数据,并将代币保留在底池中并重新启动另一章而无需重新部署是多么容易或困难。尝试自己这样做,并密切关注回购,以便将来更新本系列教程!还要考虑额外的激励机制:也许账户中的代币数量会影响他们从故事结束中获得的红利?你的想象力是极限!部署问题鉴于我们的合约现在非常大,部署和/或测试它可能会超过以太坊区块的gas限制。这是限制大型应用程序部署在以太坊网络上的原因。无论如何要部署它,在编译期间尝试使用代码优化器,方法是更改truffle.js文件以包含用于优化的solc设置,如下所示:// …module.exports = { solc: { optimizer: { enabled: true, runs: 200 } }, networks: { development: {// …这将在代码中运行优化器200次以查找在部署之前可以缩小,移除或抽象的区域,这将显着降低部署成本。结论这就是我们详尽的DAO开发——但课程还没有结束!我们仍然需要为这个故事构建和部署UI。幸运的是,后端完全托管在区块链上,构建前端的复杂程度要低得多。让我们看看这个系列的倒数第二部分。======================================================================分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。汇智网原创翻译,转载请标明出处。这里是原文以太坊构建DApps系列教程(六):使用定制代币进行投票 ...

December 27, 2018 · 4 min · jiezi

以太坊构建DApps系列教程(二):构建TNS代币

在本系列关于使用以太坊构建DApps教程的第1部分中,我们引导大家做了两个版本的本地区块链进行开发:一个Ganache版本和一个完整的私有PoA版本。在这一部分中,我们将深入研究并构建我们的TNS代币:用户将使用代币对Story DAO中的提案进行投票。先决条件按照上一部分,启动并运行Ganache版本。或者,如果你没有从第一部分开始跟踪,则可以运行任何本地版本的区块链,但请确保你可以使用我们需要的工具连接到它。我们假设你有一个有效的私有区块链,能够通过终端应用程序在其控制台和操作系统终端中输入命令,或者在Windows上,通过Git Bash,Console,CMD Prompt,Powershell等应用程序输入命令。基本依赖为了开发我们的应用程序,我们可以使用几种框架和入门开发包中的一种:Dapp,eth-utils,Populus,Embark……等等。但我们会选择现在的生态系统之王Truffle。使用以下命令安装它:npm install -g truffle 这将使truffle命令无处不在。现在我们可以用truffle init启动项目。构建代币让我们直接进入它并构建我们的代币。它将是一个有点标准的千篇一律的ERC20代币。(你会看到这篇文章中那个更标准的。)首先,我们将引入一些依赖关系。OpenZeppelin库是经过实战考验的高质量的solidity合约,可用于扩展和构建合约。npm install openzeppelin-solidity 接下来,让我们创建一个新的代币文件:truffle create contract TNSToken truffle在这里生成的默认模板有点过时了,所以让我们更新它:pragma solidity ^0.4.24;contract TNStoken { constructor() public { }}到目前为止,代币合约的构造函数应该与合约本身一样被调用,但为了清楚起见,它被更改为constructor。它也应该总是有一个修饰符告诉编译器谁被允许部署和与此合约交互(public意味着每个人)。SafeMath我们将在这种情况下使用的唯一Zeppelin合约是他们的SafeMath合约。在Solidity中,我们使用import关键字导入合约,而编译器通常不需要完整路径,只需要相对的路径,如下所示:pragma solidity ^0.4.24;import “../node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol”;contract TNStoken { using SafeMath for uint256; constructor() public { }}那么,什么是SafeMath?很久以前,由于代码中的数学问题,出现了1840亿比特币的问题。为了防止类似于这些问题(并非特别只在以太坊中可能存在这一问题),SafeMath库仍然存在。当两个数字具有MAX_INT大小(即操作系统中的最大可能数量)时,将它们相加会使值wrap around重新归零,就像汽车的里程表在达到999999公里后重置为0。所以SafeMath库具有以下功能:/*** @dev Adds two numbers, throws on overflow./function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; assert(c >= a); return c;}此函数可以防止此问题:它检查两个数字的总和是否仍然大于两个操作数中的每一个。虽然在撰写Solidity合约时犯下如此愚蠢的错误并不容易,但保持安全比抱歉更好。通过using SafeMath for uint256,我们用这些“安全”版本替换Solidity(256bit unsigned - aka positive-only - whole numbers)中的标准uint256数字。而不是像这样求和数:sum=someBigNumber+someBiggerNumber,我们将这样求和:sum=someBigNumber.add(someBiggerNumber),从而在我们的计算中是安全的。来自Scratch的ERC20我们的数学计算安全了,我们可以创建我们的代币。ERC20是一个定义明确的标准,所以作为参考,我们将它添加到合约中。在这里阅读代币标准 。所以ERC20代币应该具有的功能是:pragma solidity ^0.4.24;import “../node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol”;contract ERC20 { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value);}contract TNStoken { using SafeMath for uint256; constructor() public { }}这可能看起来很复杂,但实际上非常简单。这是我们代币需要具有的函数的“目录”,我们将逐个构建它们,解释每个函数的含义。考虑上面的代币接口。在创建Story DAO应用程序时,我们将看到它如何以及为何有用。基本余额开始吧。代币实际上只是以太坊区块链中的“电子表格”,如下所示:NameAmountBruno4000Joe5000Anne0Mike300所以让我们创建一个mapping,它基本上就像合约中的电子表格:mapping(address => uint256) balances; 根据上面的接口,这需要伴随一个balanceOf函数,它可以读取此表:function balanceOf(address _owner) public view returns (uint256) { return balances[owner];}函数balanceOf接受一个参数:owner是public(可以被任何人使用),是一个view函数(意思是它可以自由使用——不需要交易),并返回一个uint256编码,地址所有者的余额放在里面。每个人的代币余额都是公开可读的。总供应量知道代币的总供应量对于其用户和代币跟踪应用程序非常重要,所以让我们定义一个合约属性(变量)来跟踪这个和另一个自由函数来读取它:uint256 totalSupply;function totalSupply() public view returns (uint256) { return totalSupply;}发送代币接下来,让我们确保一些代币的所有者可以将它们发送给其他人。我们还想知道发送何时发生,因此我们也将定义发送事件。Transfer事件允许我们通过JavaScript监听区块链中的传输,以便我们的应用程序可以知道何时发出这些事件,而不是不断地手动检查传输是否发生。事件与合约中的变量一起声明,并使用emit关键字发出。我们现在将以下内容添加到合约中:event Transfer(address indexed from, address indexed to, uint256 value);function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true;}此函数接受两个参数:_to,它是将接收代币的目标地址,以及value,即代币的数量。重要的是要记住,value是代币的最小单位数,而不是整个单位。因此,如果一个代币被声明具有10位小数的话,那么为了发送一个代币,你将发送10000000000。这种粒度级别允许我们处理极小数量。该函数是公共的,这意味着任何人都可以使用它,包括其他合约和用户,并且如果操作成功则返回true。然后该功能进行一些健全性检查。首先,它检查目标地址是否为空地址。换句话说,不得将代币必须正常发送。接下来,它通过比较它们的余额(balances[msg.sender] )和传入的发送值来检查发件人是否甚至被允许发送这么多代币。如果这些检查中的任何一个失败,该函数将拒绝该交易并失败。它将退还所发送的任何代币,但是在此之前用于执行该功能的gas将被花费。接下来的两行从发件人的余额中减去代币数量,并将该金额添加到目的地余额中。然后使用emit事件,并传入一些值:发件人,收件人和金额。现在,任何订阅了此合约上的发送事件的客户都将收到此事件的通知。好的,现在我们的代币持有者可以发送代币。信不信由你,这就是基本代币所需要的一切。但我们已经要超越了这一点,并增加了一些功能。津贴有时可能会允许第三方退出其他帐户的余额。这对于可能促进游戏内购买,去中心化交易等的游戏应用非常有用。我们通过构建一个名为allowance的多维mapping实现这一点,该mapping存储了所有这些权限。我们添加以下内容:mapping (address => mapping (address => uint256)) internal allowed;event Approval(address indexed owner, address indexed spender, uint256 value);这个事件就在那里,以便应用程序可以知道有人预先批准了其他人的余额支出,一个有用的功能,以及标准的一部分。映射将地址与另一个映射相结合,该映射将地址与数字组合在一起,它基本上形成了一个像这样的电子表格:所以Bob的余额可能由Mary支付,最多可达1000个代币,Billy最多可达50个代币。Bob可以将Mary的余额花费750代币。Billy的余额最多可以由Mary花费300个,而Joe花费1500。鉴于此映射是internal映射,它只能由此合约中的函数和使用此合约作为基础的合约使用。要批准其他人从你的帐户中扣款,你可以使用允许使用代币的人的地址,允许他们支付的金额以及你发出Approval事件的功能来调用approve功能:function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true;}我们还需要一种方法来读取用户可以从其他用户的帐户中花费多少:function allowance(address _owner, address _spender) public view returns (uint256) { return allowed[_owner][_spender];}所以它是另一个read only函数(view),这意味着它可以自由执行。它只是读取剩余的可提取余额。那么如何为别人发送?使用新的transferFrom功能:function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true;}和以前一样,有健全性检查:目标地址不能是空地址,因此不要将代币发送到不存在的地方。发送的值还需要不仅小于或等于发送值当前帐户的余额,而且还需要小于或等于消息发送者(发起此交易的地址)仍然允许为他们花费的余额。接下来,更新余额并使允许的余额与发出有关发送事件之前的余额同步。注意:代币持有者可以在不更新allowed映射的情况下allowed代币。如果代币持有者使用transfer手动发送代币,则会发生这种情况。在这种情况下,持有人的代币可能比第三方可以支付的额外费用少。通过批准和许可,我们还可以创建让代币持有者增加或减少某人津贴的功能,而不是完全覆盖该值。尝试将此作为练习,然后参考下面的源代码以获得解决方案。function increaseApproval(address _spender, uint _addedValue) public returns (bool) { allowed[msg.sender][_spender] = ( allowed[msg.sender][_spender].add(_addedValue)); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true;}function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true;}构造函数到目前为止,我们只是建立了一个代币“合约”。但是这个标记是什么?它叫什么?它有多少位小数?我们如何使用它?在一开始,我们定义了一个constructor函数。现在,让我们完成它的主体并添加属性name,symbol和decimals:string public name;string public symbol;uint8 public decimals;constructor(string _name, string _symbol, uint8 _decimals, uint256 _totalSupply) public { name = _name; symbol = symbol; decimals = decimals; totalSupply = totalSupply;}这样做可以让我们稍后重复使用同一类型的其他代币。但是,当我们确切知道我们正在构建的内容时,让我们对这些值进行硬编码:string public name;string public symbol;uint8 public decimals;constructor() public { name = “The Neverending Story Token; symbol = “TNS”; decimals = 18; totalSupply = 100 * 106 * 1018;}显示代币信息时,各种以太坊工具和平台会读取这些详细信息。将合约部署到以太坊网络时会自动调用构造函数,因此这些值将在部署时自动配置。关于totalSupply = 100106*1018,这句话只是让人们更容易阅读数字的一种方式。由于以太坊中的所有发送都是使用最小的以太单位或代币(包括小数)完成的,因此最小单位是小数点后18位小数。这就是说单个TNS代币为110**18。此外,我们想要1亿,所以10010**6或1001010101010*10。这使得数字比100000000000000000000000000更易读。替代开发方案或者,我们也可以扩展Zeppelin合约,修改一些属性,然后我们就拥有代币了。这就是大多数人所做的,但在处理可能数百万其他人的钱的软件时,我个人倾向于想知道我在代码中的确切内容,因此盲目代码重用在我的个人情况下是要最小化的。pragma solidity ^0.4.24;import “../node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol”;import “../node_modules/openzeppelin-solidity/contracts/token/ERC827/ERC20Token.sol”;contract TNStoken is ERC20Token { using SafeMath for uint256; string public name; string public symbol; uint8 public decimals; uint256 totalSupply_; constructor() public { name = “The Neverending Story Token”; symbol = “TNS”; decimals = 18; totalSupply_ = 100 * 106 * 1018; }}在这种情况下,我们使用is符号来声明我们的代币是ERC20Token。这使得我们的代币扩展了ERC20合约,后者又扩展了StandardToken,等等……无论哪种方式,我们的代币现在已准备就绪。但谁得到了多少代币以及如何开始?初始余额让我们给合约的制造者所有的代币。否则,代币将不会发送给任何人。通过在其末尾添加以下行来更新constructor:balances[msg.sender] = totalSupply_; 代币锁定看到我们打算使用代币作为投票权(即你在投票期间锁定了多少代币代表你的投票有多强大),我们需要一种方法来防止用户在投票后发送它们,否则我们的DAO将容易受到Sybil攻击的影响——拥有一百万个代币的个人可以注册100个地址,并通过将它们发送到不同的地址并使用新地址重新投票来获得1亿个代币的投票权。因此,我们将阻止发送与一个人投票额完全一样多的代币,对每个提案的每次投票都是累积的。这是我们在本文开头提到的扭曲。让我们在合约中添加以下事件:event Locked(address indexed owner, uint256 indexed amount);然后让我们添加锁定方法:function increaseLockedAmount(address _owner, uint256 _amount) onlyOwner public returns (uint256) { uint256 lockingAmount = locked[_owner].add(_amount); require(balanceOf(_owner) >= lockingAmount, “Locking amount must not exceed balance”); locked[_owner] = lockingAmount; emit Locked(_owner, lockingAmount); return lockingAmount;}function decreaseLockedAmount(address _owner, uint256 _amount) onlyOwner public returns (uint256) { uint256 amt = _amount; require(locked[_owner] > 0, “Cannot go negative. Already at 0 locked tokens.”); if (amt > locked[_owner]) { amt = locked[_owner]; } uint256 lockingAmount = locked[_owner].sub(amt); locked[_owner] = lockingAmount; emit Locked(_owner, lockingAmount); return lockingAmount;}每种方法都确保不会锁定或解锁非法金额,然后在更改给定地址的锁定金额后发出事件。每个函数还返回现在为此用户锁定的新金额。但这仍然不能阻止发送。让我们修改transfer和transferFrom:function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender] - locked[msg.sender]); // <– THIS LINE IS DIFFERENT // …function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[_from] - locked[_from]); require(_value <= allowed[_from][msg.sender] - locked[_from]); // <– THIS LINE IS DIFFERENT // …最后,我们需要知道为用户锁定或解锁了多少代币:function getLockedAmount(address _owner) view public returns (uint256) { return locked[_owner];}function getUnlockedAmount(address owner) view public returns (uint256) { return balances[owner].sub(locked[owner]);}就是这样:我们的代币现在可以从外部锁定,但只能由代币合约的所有者锁定(这将是我们将在即将到来的教程中构建的Story DAO)。让我们将代币合约设为Ownable,即允许它拥有一个所有者。使用import “../node_modules/openzeppelin-solidity/contracts/ownership/Ownable.sol"导入;然后更改此行: contract StoryDao { ……是这样的: contract StoryDao is Ownable { 完整代码此时带有自定义函数注释的代币的完整代码见文末所示。结论这部分帮助我们构建了一个基本代币,我们将在The Neverending Story中将其用作参与/共享代币。虽然代币具有效用,但它的定义是作为一种资产来控制更大的体量的安全代币。注意区别。在本系列的下一部分中,我们将学习如何编译,部署和测试此代币。======================================================================分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。汇智网原创翻译,转载请标明出处。这里是原文以太坊构建DApps系列教程(二):构建TNS代币完整代码:pragma solidity ^0.4.24;import “../node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol”;import “../node_modules/openzeppelin-solidity/contracts/ownership/Ownable.sol”;contract TNStoken is Ownable { using SafeMath for uint256; mapping(address => uint256) balances; mapping(address => uint256) locked; mapping (address => mapping (address => uint256)) internal allowed; uint256 totalSupply; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); event Locked(address indexed owner, uint256 indexed amount); string public name; string public symbol; uint8 public decimals; constructor() public { name = “The Neverending Story Token”; symbol = “TNS”; decimals = 18; totalSupply = 100 * 106 * 1018; balances[msg.sender] = totalSupply; } /** @dev _owner will be prevented from sending _amount of tokens. Anythingbeyond this amount will be spendable. / function increaseLockedAmount(address _owner, uint256 _amount) public onlyOwner returns (uint256) { uint256 lockingAmount = locked[_owner].add(_amount); require(balanceOf(_owner) >= lockingAmount, “Locking amount must not exceed balance”); locked[_owner] = lockingAmount; emit Locked(_owner, lockingAmount); return lockingAmount; } /* @dev _owner will be allowed to send _amount of tokens again. Anythingremaining locked will still not be spendable. If the _amount is greaterthan the locked amount, the locked amount is zeroed out. Cannot be neg. / function decreaseLockedAmount(address _owner, uint256 _amount) public onlyOwner returns (uint256) { uint256 amt = _amount; require(locked[_owner] > 0, “Cannot go negative. Already at 0 locked tokens.”); if (amt > locked[_owner]) { amt = locked[_owner]; } uint256 lockingAmount = locked[_owner].sub(amt); locked[_owner] = lockingAmount; emit Locked(_owner, lockingAmount); return lockingAmount; } function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender] - locked[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[_from] - locked[_from]); require(_value <= allowed[_from][msg.sender] - locked[_from]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } function increaseApproval(address _spender, uint _addedValue) public returns (bool) { allowed[msg.sender][_spender] = ( allowed[msg.sender][_spender].add(_addedValue)); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /* @dev Returns number of tokens the address is still prevented from using / function getLockedAmount(address _owner) public view returns (uint256) { return locked[_owner]; } /* @dev Returns number of tokens the address is allowed to send */ function getUnlockedAmount(address _owner) public view returns (uint256) { return balances[_owner].sub(locked[_owner]); } function balanceOf(address _owner) public view returns (uint256) { return balances[owner]; } function totalSupply() public view returns (uint256) { return totalSupply; } function allowance(address _owner, address _spender) public view returns (uint256) { return allowed[_owner][_spender]; }} ...

December 25, 2018 · 6 min · jiezi

FIBOS 发布了服务于区块链项目落地的稳定币——FOD

2018年12月21日,FIBOS 发布了稳定币——FDO,并且成功通过了社区多签。在 FIBOS 生态中有不少项目在实体经济落地时需要保障项目价值的稳健发展,所以需要以稳定币作为通证准备金。为满足生态的发展需求,FDO应运而生,有兴趣的朋友可以在 FIBOS 论坛了解详细信息:http://forum.fo/index.php?app… 目前,区块链的发展仍然处在初期,其数字资产价格波动性大,严重阻碍了自身成为价值交换的媒介,很难履行价值尺度的功能,于是稳定币出现了。稳定币的出现能大幅减少区块链资产和以法币为基础的金融资产间的隔阂,为区块链资产打开众多新的应用场景。也有业内人士把稳定币看做行业最重要的基础设施,就像移动支付对于互联网行业的重要性一样。 当然,所谓“稳定”币,也是一个相对的概念。就像美元最初也是依靠着美国的综合实力与黄金储备,逐渐成为全球认可度最高的通行“稳定”货币。当前,在加密数字货币市场中,稳定币的主要作用是满足投资者的避险需求。 随着区块链项目不断与实体经济相结合,对项目通证价值的稳定性提出了要求,因为一个价格剧烈波动的通证是无法真正服务于实体项目的发展。 FIBOS 默认提供了以 IBO 为基础经济模型的发币方式。IBO(Initial Bancor Offering) 模式以锚定区块链资产发行通证的方式,大大提高了项目通证的内在价值,有利于服务实体项目健康、稳步地发展。然而,作为Bancor准备金的区块链资产价格受市场影响波动大,又不利于实体项目的落地和发展。因此,需要一种价值相对稳定,价格变化幅度小的的区块链资产作为准备金,这也就是常说的“稳定币”。 经过综合考量,目前 FIBOS 选择USDC作为稳定币来源,通过去中心化的跨链技术生成稳定币 FOD,USDC与FOD是1:1锚定。具体而言,FOD主要用途如下:1.以FOD作为项目准备金,发行项目的智能通证。2.基于Bancor模型发行项目稳定币,与FOD是1:1锚定。3.以项目稳定币为准备金,发行项目的智能通证。 目前,基于FIBOS平台有多个项目正在规划基于稳定币发行项目通证。比如,全球最大的游戏虚拟资产交易平台,比价器项目;进口美国高端Jeep整车改装项目;拥有一万多会员的酒吧众筹项目等等。相信 FDO 的出现会让更多的项目成功落地到实体经济,促进整个生态系统的良性发展。文末附上官方地址~~~https://fibos.io/https://dev.fo/搜索关注公众号「FIBOS社区」,第一时间获取技术干货!

December 24, 2018 · 1 min · jiezi

Node.js和NoSQL开发比特币加密货币应用程序(上)

我一直在跟踪比特币之类的加密货币相关主题有几个月了,我对所发生的一切都非常着迷。作为一名Web应用程序开发人员,我一直特别感兴趣的一个主题是加密货币交易以及如何制作它们。从前端看,这些应用程序似乎是用于管理帐户,将比特币转换为美元等法定货币以及将比特币转账给其他人的工具,但它们能做更多吗?我们将看一些Node.js和NoSQL数据库Couchbase的例子,它们涵盖了以加密货币交易为模型的主题。免责声明:我不是加密货币专家,也没有参与金融服务或交易所的任何开发。我是这个主题的狂热爱好者,从本文中获得的任何内容都应该经过适当的测试和使用,风险自负。the take-Away你将从这篇特定文章中获得那些内容,将无法获得那些内容呢?让我们从你不会从本文中得到的东西开始:我们不会配置任何银行或信用卡服务来交易美元等法定货币。我们不会将任何已签名的交易广播到比特币网络,最终确定转账。也就是说,以下是你可以期待在本文中学习的一些内容:我们将创建一个分层确定性(HD,hierarchical deterministic)钱包,它可以为给定的种子生成无限量的密钥,每个密钥代表一个用户钱包。我们将根据主种子创建每个包含钱包的用户帐户。我们将创建代表交易所存款,取款和资金转账的交易,而不实际使用法定货币。我们将从比特币网络中查找余额。我们将创建在比特币网络上广播的签名交易。我们将在本文中看到许多可以更好地完成的事情。如果你发现了可以改进的内容,请务必在评论中分享。就像我说的那样,我不是这个主题的专家,只是一个粉丝。项目要求为了成功完成这个项目,必须满足一些要求:你必须安装并配置Node.js 6+。你必须安装Couchbase 5.1+并配置Bucket和RBAC配置文件。重点是我将不会介绍如何启动和运行Couchbase。这不是一个困难的过程,但是你需要一个Bucket设置一个应用程序帐户和一个用N1QL查询索引。创建具有依赖关系的Node.js应用程序在开始添加任何逻辑之前,我们将创建一个新的Node.js应用程序并下载依赖项。在计算机上的某个位置创建项目目录,并从该目录中的CLI执行以下命令:npm init -ynpm install couchbase –savenpm install express –savenpm install body-parser –savenpm install joi –savenpm install request request-promise –savenpm install uuid –savenpm install bitcore-lib –savenpm install bitcore-mnemonic –save我知道我可以在一行中完成所有的依赖安装,但我想让它们清楚地阅读。那么我们在上面的命令中做了什么?首先,我们通过创建package.json文件来初始化一个新的Node.js项目。然后我们下载我们的依赖项并通过–save标志将它们添加到package.json文件中。对于此示例,我们将使用Express Framework。express,body-parser和joi包都与接受和验证请求数据相关。因为我们将与公共比特币节点进行通信,所以我们将使用request和request-promise包。非常受欢迎的bitcore-lib软件包将允许我们创建钱包并签署交易,而bitcore-mnemonic软件包将允许我们生成可用于我们的HD钱包密钥的种子。最后,couchbase和uuid将用于处理我们的数据库。现在我们可能想要更好地构建我们的项目。在项目目录中添加以下目录和文件(如果它们尚不存在):package.jsonconfig.jsonapp.jsroutes account.js transaction.js utility.jsclasses helper.js我们所有的API端点都将分为几类,并放在每个适当的路由文件中。我们不必这样做,但为了使我们的项目更干净一点。我们去删除大量的比特币和数据库逻辑,我们将把所有非数据验证的内容添加到我们的classes/helper.js文件中。config.json文件将包含我们所有的数据库信息以及我们的助记符种子。在一个现实的场景中,这个文件应该被视为黄金般重要,并获得尽可能多的保护。app.js文件将具有我们所有的配置和引导逻辑,用于连接我们的路由,连接到数据库等。为方便起见,我们将为项目添加一个依赖项并进行设置:npm install nodemon –save-devnodemon包将允许我们每次更改文件时热重新加载项目。这不是一个必须的要求,但可以为我们节省一些时间。打开package.json文件并添加以下脚本以实现它:…“scripts”: { “test”: “echo "Error: no test specified" && exit 1”, “start”: “./node_modules/nodemon/bin/nodemon.js app.js”},…我们可以在此时开始我们的应用程序的开发过程。开发数据库和比特币逻辑在开发我们的应用程序时,在我们开始担心API端点之前,我们想要创建我们的数据库和比特币相关的逻辑。我们将把时间花在项目的classes/helper.js文件中。打开它并包含以下内容:const Couchbase = require(“couchbase”);const Request = require(“request-promise”);const UUID = require(“uuid”);const Bitcore = require(“bitcore-lib”);class Helper { constructor(host, bucket, username, password, seed) { this.cluster = new Couchbase.Cluster(“couchbase://” + host); this.cluster.authenticate(username, password); this.bucket = this.cluster.openBucket(bucket); this.master = seed; } createKeyPair(account) { } getWalletBalance(addresses) { } getAddressBalance(address) { } getAddressUtxo(address) { } insert(data, id = UUID.v4()) { } createAccount(data) { } addAddress(account) { } getAccountBalance(account) { } getMasterAddresses() { } getMasterKeyPairs() { } getMasterAddressWithMinimum(addresses, amount) { } getMasterChangeAddress() { } getAddresses(account) { } getPrivateKeyFromAddress(account, address) { } createTransactionFromAccount(account, source, destination, amount) { } createTransactionFromMaster(account, destination, amount) { }}module.exports = Helper;我们将把这个类作为我们应用程序的singleton来发送。在constructor方法中,我们建立与数据库集群的连接,打开Bucket并进行身份验证。打开的Bucket将在整个helper类中使用。让我们在完成数据库逻辑之前跳出比特币逻辑。如果你不熟悉HD钱包,它们本质上是一个由单个种子衍生而来的钱包。使用种子,你可以得到children,那些children可以再有children,等等。createKeyPair(account) { var account = this.master.deriveChild(account); var key = account.deriveChild(Math.random() * 10000 + 1); return { “secret”: key.privateKey.toWIF().toString(), “address”: key.privateKey.toAddress().toString() }}createKeyPair函数中的master变量表示顶级种子密钥。每个用户帐户都是该密钥的直接子项,因此我们根据account值派生子项。account值是人员编号,创建的每个帐户都将获得增量编号。但是,我们不会生成帐户密钥并将其称为一天。相反,每个帐户密钥将有10,000个可能的私钥和公钥,以防他们不想多次使用同一个密钥。一旦我们随机生成了一个密钥,我们就会返回它。同样,我们有一个getMasterChangeAddress函数,如下所示:getMasterChangeAddress() { var account = this.master.deriveChild(0); var key = account.deriveChild(Math.random() * 10 + 1); return { “secret”: key.privateKey.toWIF().toString(), “address”: key.privateKey.toAddress().toString() }}当我们开始创建帐户时,它们将从一开始,为交易或Web应用程序留下零,或者你想要调用它。我们还为此帐户分配了10个可能的地址。这些地址将做两件事。第一个是他们将比特币发送到其他账户,第二个是他们将收到剩余款项,也就是所谓的变更。请记住,在比特币交易中,必须花费所有未花费的交易输出(UTXO),即使它小于期望的金额。这意味着所需的金额将被发送到目的地,剩余部分将被发送回这10个地址中的一个。还有其他方法或更好的方法吗?当然,但这个将适用于这个例子。为了获得我们使用或使用HD种子生成的任何地址的余额,我们可以使用公共比特币资源管理器:getAddressBalance(address) { return Request(“https://insight.bitpay.com/api/addr/" + address);}上面的函数将采用一个地址并以十进制格式和satoshis获得余额。展望未来,satoshi价值是我们唯一的相关价值。如果我们有给定帐户的X个地址,我们可以使用如下函数获得总余额:getWalletBalance(addresses) { var promises = []; for(var i = 0; i < addresses.length; i++) { promises.push(Request(“https://insight.bitpay.com/api/addr/" + addresses[i])); } return Promise.all(promises).then(result => { var balance = result.reduce((a, b) => a + JSON.parse(b).balanceSat, 0); return new Promise((resolve, reject) => { resolve({ “balance”: balance }); }); });}在上面的getWalletBalance函数中,我们正在为每个地址发出请求,当它们全部完成时,我们可以添加余额并返回它们。能够传输加密货币需要的不仅仅是地址余额。相反,我们需要知道给定地址的未花费的交易输出(UTXO)。这可以使用BitPay中的相同API找到:getAddressUtxo(address) { return Request(“https://insight.bitpay.com/api/addr/" + address + “/utxo”).then(utxo => { return new Promise((resolve, reject) => { if(JSON.parse(utxo).length == 0) { reject({ “message”: “There are no unspent transactions available.” }); } resolve(JSON.parse(utxo)); }); });}如果没有未使用的交易输出,则意味着我们无法传输任何内容,而是应该抛出错误。足够的发送代表的是一个不同的意思。例如,我们可以这样做:getMasterAddressWithMinimum(addresses, amount) { var promises = []; for(var i = 0; i < addresses.length; i++) { promises.push(Request(“https://insight.bitpay.com/api/addr/" + addresses[i])); } return Promise.all(promises).then(result => { for(var i = 0; i < result.length; i++) { if(result[i].balanceSat >= amount) { return resolve({ “address”: result[i].addrStr }); } } reject({ “message”: “Not enough funds in exchange” }); });}在上面的函数中,我们将获取一个地址列表并检查哪个地址的数量大于我们提供的阈值。如果他们都没有足够的余额,我们应该发送这个消息。最终的实用程序相关功能,我们已经看到了一些:getMasterKeyPairs() { var keypairs = []; var key; var account = this.master.deriveChild(0); for(var i = 1; i <= 10; i++) { key = account.deriveChild(i); keypairs.push({ “secret”: key.privateKey.toWIF().toString(), “address”: key.privateKey.toAddress().toString() }); } return keypairs;}上面的函数将为我们提供所有主密钥,这对于签名和检查值非常有用。重申一下,我使用有限值来生成多少个键。你可能会也可能不想这样做,这取决于你。现在让我们深入研究一些用于存储应用程序数据的NoSQL逻辑。截至目前,我们的数据库中没有数据。第一个逻辑步骤可能是创建一些数据。虽然独立并不是特别困难,但我们可以创建这样的函数:insert(data, id = UUID.v4()) { return new Promise((resolve, reject) => { this.bucket.insert(id, data, (error, result) => { if(error) { reject({ “code”: error.code, “message”: error.message }); } data.id = id; resolve(data); }); });}基本上,我们接受一个对象和一个id用作文档密钥。如果未提供文档密钥,我们将自动生成它。完成所有操作后,我们将返回创建的内容,包括响应中的id。所以我们假设我们要创建一个用户帐户。我们可以做到以下几点:createAccount(data) { return new Promise((resolve, reject) => { this.bucket.counter(“accounts::total”, 1, { “initial”: 1 }, (error, result) => { if(error) { reject({ “code”: error.code, “message”: error.message }); } data.account = result.value; this.insert(data).then(result => { resolve(result); }, error => { reject(error); }); }); });}请记住,帐户由此示例的自动递增数值驱动。我们可以使用Couchbase中的counter创建递增值。如果计数器不存在,我们将其初始化为1并在每次下一次调用时递增。请记住,0是为应用程序密钥保留的。在我们得到计数器值之后,我们将它添加到传递的对象并调用我们的insert函数,在这种情况下为我们生成一个唯一的id。我们还没有看到它,因为我们没有任何端点,但我们假设在创建帐户时,它没有地址信息,只有帐户标识符。我们可能想为用户添加地址:addAddress(account) { return new Promise((resolve, reject) => { this.bucket.get(account, (error, result) => { if(error) { reject({ “code”: error.code, “message”: error.message }); } var keypair = this.createKeyPair(result.value.account); this.bucket.mutateIn(account).arrayAppend(“addresses”, keypair, true).execute((error, result) => { if(error) { reject({ “code”: error.code, “message”: error.message }); } resolve({ “address”: keypair.address }); }); }); });}添加地址时,我们首先按文档ID获取用户。检索文档后,我们获取数字帐户值并创建10,000个选项的新密钥对。使用子文档操作,我们可以将密钥对添加到用户文档,而无需下载文档或对其进行操作。关于我们刚刚做了什么非常严肃的事情。我将未加密的私钥和公共地址存储在用户文档中。这对生产来说是一个很大的禁忌。还记得你读过的所有关于人们钥匙被盗的地方的故事吗?实际上,我们希望在插入数据之前加密数据。我们可以通过使用Node.js加密库来实现,或者如果我们使用Couchbase Server 5.5,Couchbase的Node.js SDK会提供加密。我们不会在这里探讨它。好的,我们现在已经在数据库中获得了帐户数据和地址。让我们查询该数据:getAddresses(account) { var statement, params; if(account) { statement = “SELECT VALUE addresses.address FROM " + this.bucket._name + " AS account USE KEYS $id UNNEST account.addresses as addresses”; params = { “id”: account }; } else { statement = “SELECT VALUE addresses.address FROM " + this.bucket._name + " AS account UNNEST account.addresses as addresses WHERE account.type = ‘account’”; } var query = Couchbase.N1qlQuery.fromString(statement); return new Promise((resolve, reject) => { this.bucket.query(query, params, (error, result) => { if(error) { reject({ “code”: error.code, “message”: error.message }); } resolve(result); }); });}上面的getAddresses函数可以做两件事之一。如果提供了帐户,我们将使用N1QL查询来获取该特定帐户的所有地址。如果未提供帐户,我们将获取数据库中每个帐户的所有地址。在这两种情况下,我们只获取公共地址,没有任何敏感信息。使用参数化的N1QL查询,我们可以将数据库结果返回给客户端。我们的查询中需要注意的事项。我们将地址存储在用户文档中的数组中。使用UNNEST运算符,我们可以展平这些地址并使响应更具吸引力。现在假设我们有一个地址,我们想获得相应的私钥。 我们可能会做以下事情:getPrivateKeyFromAddress(account, address) { var statement = “SELECT VALUE keypairs.secret FROM " + this.bucket._name + " AS account USE KEYS $account UNNEST account.addresses AS keypairs WHERE keypairs.address = $address”; var query = Couchbase.N1qlQuery.fromString(statement); return new Promise((resolve, reject) => { this.bucket.query(query, { “account”: account, “address”: address }, (error, result) => { if(error) { reject({ “code”: error.code, “message”: error.message }); } resolve({ “secret”: result[0] }); }); });}给定一个特定的帐户,我们创建一个类似于我们之前看到的查询。这次,在我们UNNEST,我们执行WHERE条件,仅为匹配地址提供结果。如果我们想要我们可以做一个数组操作。使用Couchbase和N1QL,有很多方法可以解决问题。======================================================================分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。汇智网原创翻译,转载请标明出处。这里是原文Node.js和NoSQL开发比特币加密货币应用程序 ...

December 24, 2018 · 3 min · jiezi

通过node.js看看在以太坊交易中都发生了什么?

在以太坊交易中都发生了什么?以太坊可以被认为是基于交易的状态机,其中交易可以改变状态,并且状态跟踪交互。在这里,我们从高层次上检查交易的组成部分,并解释大多数乱码十六进制值是如何确定的。我们将在本教程中使用nodejs,因此我们首先安装依赖项。$ npm install web3@0.19 ethereumjs-util@4.4 ethereumjs-tx@1.3然后创建一个文件tx.js并要求依赖项。var Web3 = require(‘web3’);var web3 = new Web3(new Web3.providers.HttpProvider(‘https://ropsten.infura.io/'));var util = require(’ethereumjs-util’);var tx = require(’ethereumjs-tx’);首先,我们从一个私钥开始。以太坊使用公钥加密进行身份验证。更具体地,使用具有secp256k1曲线的椭圆曲线数字签名算法(ECDSA)。除了一些限制外,私钥只是一个随机的256位数据。例如:var privateKey = ‘0xc0dec0dec0dec0dec0dec0dec0dec0dec0dec0dec0dec0dec0dec0dec0dec0de’;导出相应的公钥:var publicKey = util.bufferToHex(util.privateToPublic(privateKey));如果你打印出publicKey,你应该得到以下内容:0x4643bb6b393ac20a6175c713175734a72517c63d6f73a3ca90a15356f2e967da03d16431441c61ac69aeabb7937d333829d9da50431ff6af38536aa262497b27与该私钥相关联的以太坊地址是公钥的SHA3-256(Keccak)哈希的最后160位。var address = ‘0x’ + util.bufferToHex(util.sha3(publicKey)).slice(26);//0x53ae893e4b22d707943299a8d0c844df0e3d5557正如你所看到的,实际上多个私钥可能具有相同的地址。以太坊帐户与每个地址相关联,并且每个帐户都具有以下属性:nonce从0开始的传出交易数的计数。balance中的以太币数量。storageRoot与帐户存储关联的哈希。codeHash管理帐户的代码的哈希,如果这是空的,那么该帐户是可以使用其私钥访问的普通帐户,否则它是一个智能合约,其交互由其代码管理。接下来我们来看一个交易,有6个输入字段:nonce从0开始的传出交易数的计数。gasPrice价格确定交易将花费的以太量。gasLimit允许用于处理交易的最大gas。to交易发送到的帐户,如果为空,交易将创建合约。估计要发送的以太网的value。data可以是对合约或代码的任意消息或函数调用以创建合约。发送1000wei(1ether =10的18次方wei)的ether并留下0xc0de消息的交易可以构造如下:var rawTx = { nonce: web3.toHex(0), gasPrice: web3.toHex(20000000000), gasLimit: web3.toHex(100000), to: ‘0x687422eEA2cB73B5d3e242bA5456b782919AFc85’, value: web3.toHex(1000), data: ‘0xc0de’};请注意,未指定发件人from地址,使用私钥签名后将从签名派生。签署交易:var p = new Buffer(‘c0dec0dec0dec0dec0dec0dec0dec0dec0dec0dec0dec0dec0dec0dec0dec0de’, ‘hex’);var transaction = new tx(rawTx);transaction.sign(p);然后可以将交易发送到网络,并由256位交易id跟踪。此交易可在Etherscan查看。交易id是交易的哈希。console.log(util.bufferToHex(transaction.hash(true)));//0x8b69a0ca303305a92d8d028704d65e4942b7ccc9a99917c8c9e940c9d57a9662接下来,我们来看一下函数调用的数据data组成。以此交易的数据为例:console.log(web3.eth.getTransaction(‘0xaf4a217f6cc6f8c79530203372f3fbec160da83d1abe048625a390ba1705dd57’).input);//0xa9059cbb0000000000000000000000007adee867ea91533879d083dd47ea81f0eee3a37e000000000000000000000000000000000000000000000000d02ab486cedbffff为了知道它正在调用哪个函数,必须事先知道合约的函数以创建哈希表。第一个32位a9059cbb是函数哈希的第一个32位。在这种情况下,函数是transfer(address _to,uint256 _value),其哈希值是:console.log(web3.sha3(’transfer(address,uint256)’));//0xa9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b每个参数后面跟256位,所以在这种情况下地址是:0x0000000000000000000000007adee867ea91533879d083dd47ea81f0eee3a37e和无符号整数是:0x000000000000000000000000000000000000000000000000d02ab486cedbffff接下来,如上所述,通过省略to字段,将创建合约。但合约的地址是如何确定的?以此交易为例:console.log(web3.eth.getTransactionReceipt(‘0x77a4f46ff7bf8c084c34293fd654c60e107df42c5bcd2666f75c0b47a9352be5’).contractAddress);//0x950041c1599529a9f64cf2be59ffb86072f00111合约地址是发件人地址的最后160位hash,其nonce可以预先确定。对于此交易,可以通过以下方式找到发件人和nonce`:var contractTx = web3.eth.getTransaction(‘0x77a4f46ff7bf8c084c34293fd654c60e107df42c5bcd2666f75c0b47a9352be5’);console.log(contractTx.from);//0x84f9d8b0e74a7060e20b025c1ea63c2b171bae6fconsole.log(contractTx.nonce);//0因此合约地址是:console.log(‘0x’ + util.bufferToHex(util.rlphash([‘0x84f9d8b0e74a7060e20b025c1ea63c2b171bae6f’, 0])).slice(26));//0x950041c1599529a9f64cf2be59ffb86072f00111现在我们已经对这些十六进制了解了一点!以太坊和智能合约具有破坏许多行业的巨大潜力。网上有很多资源,你可以在下面找到一些资源继续探索以太坊!以太坊主站点:https://www.ethereum.org/Mist以太坊的客户端之一:https://github.com/ethereum/m…Solidity:http://solidity.readthedocs.i…Web3 api:https://github.com/ethereum/w…社区讨论:https://www.reddit.com/r/ethe…======================================================================分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。汇智网原创翻译,转载请标明出处。这里是原文在以太坊交易中都发生了什么?

December 17, 2018 · 1 min · jiezi