BTA | 杨德升:掌握这些技术点,现在就能做一个Dapp!


区块链大本营出品

整理 | Aholiab


3月30日~3月31日,由优快云、火星财经主办,中关村区块链产业联盟、柏链道捷、区块链大本营、TokenSky联合主办的区块链技术及应用峰会(BTA)·中国,在北京喜来登长城饭店盛大举行。


作为时下最热门的行业话题,区块链以其颠覆性的技术理念,正在对各个行业施以影响,吸引了全球技术圈、投资者、创业者的关注。为了深入理解区块链及其背后的技术本质,本次大会邀请了80+区块链技术领导人物、100+区块链投资商业大咖,就区块链的发展趋势进行探讨,让人们有机会全面了解这一全新的生态。


作为本届大会的重要嘉宾之一,以太坊智能合约 DApps「以太红包」作者、原ofo技术副总裁杨德升,在「区块链核心技术峰会」中分享了题为《深入以太坊DApp架构和开发实战》的主题演讲。


杨德升:毕业于上海交通大学,以太坊智能合约 DApps「以太红包」作者,原 ofo 技术副总裁、周伯通招聘联合创始人 CTO、曜辉科技联合创始人 CTO、开源社区 ThinkSNS 核心开发者,拥有一项互联网技术发明专利,在社交产品、互联网技术、高性能架构、区块链技术等方面有丰富的经验。


在演讲中,他以以太坊的核心设计理念、以太坊的能力边界和基础架构为出发,通过对区块链/以太坊的本质、智能合约的工作原理、DApps的架构拆解等话题的展开,对其进行深入解读。并提出,Dapp的应用场景,应该是从纯数字世界,到无人值守的物理设备(CDN、IoT),再到人类社会和现实世界的倒金字塔结构。


以下是杨德升的演讲实录:



前面几位嘉宾分享的都是比较前沿的技术,我之前的工作是比较偏落地、有实际业务承载的项目,现在在区块链方向发展。今天我想跟大家分享四个概念:


  • 以太坊的核心概念、设计理念;

  • 以太坊的能力边界;

  • 以太坊应用的基础架构;

  • 以太坊应用的发展方向。


希望我对以上四点的阐述,能帮助大家做出好的选择,并对DApps落地的常见做法,有简要的掌握。



区块链、以太坊的本质


区域链(Block chain)是一种利用去中心化和去信任方式集体维护一本数据簿的技术方案。该方案让参与系统中的任意多个节点,通过一串使用密码学方法相关联产生的数据块,每个数据中都包含了一定时间内的系统全部信息交流的数据,并生成数据指纹用于验证其信息的有效性和链接下一个数据库块。



而以太坊则是一个记录「以太币余额+链上代码+EMV虚拟机状态」的分布式账本,也可以看做一种编程语言,支持完备的公有链。开发者能够基于它建立和发布下一代分布式应用。



智能合约的工作原理


智能合约包含几个基本概念,理解这几个基本概念,我们就能搞清楚以太坊到底是怎么工作的。


账户


以太坊的账号系统分为两种:1)外部拥有账户(EOA),也称为「普通账户」;2)合约账户(Contract Account)。这两种账户与我们所熟知的账户概念有相似之处,却也有很大的区别,更不同与比特币中的UTXO。



普通账户:我们存放以太币的账户,可以随意生成、余额可以转账,与大家熟知的账户概念类似。它拥有以下特性:


  • 拥有以太币余额的balance(以太币存放的地方,与比特币的UTXO模式不同);

  • 用于确定每笔交易只能被处理一次的计数器(nonce);

  • 发送交易(以太币转账、发布合约、调用智能合约);

  • 通过私钥控制;

  • 没有相关的代码。


合约账户:功能与数据的合集,存在于以太坊的特定地址。与普通账户类似,有自己的余额,有私钥和公钥,代码完全公开,人和人都可以对智能合约产生交互,并且在合约中做一些验证。它具有以下特点:


  • 拥有以太币余额;

  • 拥有相关的代码;

  • 通过交易或消息调用的方式触发并由以太坊虚拟机(EVM)解释执行。

当被执行时:

  • 运行在随机复杂度(图灵完备性);

  • 只能操作其拥有的特定储存,例如可以拥有其永久的状态;

  • 可以调用其他合约。


抽象来看,无论是那种账号的背后都是一个统一的以太坊的状态,以太坊也可以被看成是基于交易(Transaction)的状态机,一个一个的状态不断地变化着。


以太坊虚拟机(Ethereum Virtual Machine,EVM)


EVM是以太坊的一部分,是智能合约得以执行的一个运行环境,这一点做互联网技术的应该很好理解。EVM在执行每一步智能合约代码的时候,执行的结果都是每一个区块打包的重要部分,它被写在定义里。


除此之外,EVM也可以理解为一个以太坊的客户端,以及一个完全隔离的沙箱,它不能访问线程、文件系统和外部网络。


智能合约


智能合约就是代码+数据(功能+状态);Solidity(智能合约开发工具)在设计时参考 JavaScript、Python 等高阶语言。此外,如同现实中的合同一样,智能合约一旦发布是不可更改的,例如交易时间、交易金额、违约条款、补充协议等。


不过智能合同可以被销毁,再做一个新的。




交易和消息(Transactions & Messages)


交易(Transactions):通俗来讲,就是一个账户向另一个账户发送一笔被签名的消息数据包的过程,区块链会记录并存储相应的数据。包括:是谁发给谁、金额、有无其他额外消息等。交易需要花手续费。



智能合约是看得见摸得着的数据包,而交易只能用我们的肉身来发现。在整个以太坊网络里,交易只有两种类型:一种是通过普通账户发起一个对普通账户的交易;另一个是通过普通账户发起一个一个对合约账户的交易。



消息:所谓的「消息」是一个内部的概念,是一个永不串行且只在以太坊执行环境中存在的虚拟对象,我们是看不到的。不像交易还有一个结构,消息只能由合约发送到其他合约。


Gas


大家对于Gas应该不陌生,也就是我们常说的中介费/燃油费。由于每个网络中的全节点都会进行相同的计算并储存相同的值。由于合约执行会在所有节点中被多次重复,而且任何人都可以发布执行合约,这使得合约执行的消耗非常昂贵,所以为防止以太坊网络发生蓄意攻击或滥用的现象,以太坊协议规定交易或合约调用的每个运算步骤都需要收费。


Gas还涉及到三个概念——gasUsed、gasPrice、gasLimit。


  • gasUsed为该交易消耗的总Gas数量;

  • gasPrice为该交易中单位Gas的价格(用以太币计算),用户可以自行设置的gasPrice的价格,由于网络拥堵等多种情况,此价格会动态变化;

  • gasLimit是交易发起者愿意为本笔交易支付的最大Gas个数。


它们的关系为:Gas = gasUsed * gasPrice



由于Gas最终是给旷工,旷工打包交易区块的时候,从所有交易的池子里选择最高的,打包速度由市场来决定,出价越高打包的速度越快。


对于开发者来说,每一笔交易都需要精雕细琢:我该给多少Gas合适?我该怎么推荐给我的用户?哪个gasPrice最合适?大家可以通过 ETH Gas Station 网站(https://ethgasstation.info/)查看市场状况。


这里也交代一下Gas的消耗过程。按照操作,我们从发起方发起交易,代码一行一行执行,每执行一行代码或产生一个操作就扣一行Gas,直到交易完成。那剩下的Gas怎么办?答案是会原封不动返还给发起交易的人。



Dapps架构揭秘


Dapps是一个应用,与一般的互联网应用对比可以看出。互联网应用用户首先看到UI页面,往下是接口层,而所有代码在基础设施上完成,例如数据库、阿里云等。


区块链的Dapps也类似,只是基础设施变成了区块链,硬件变成了矿工的节点,再往上,业务层代码变成了智能合约,最上面是你自己本身的业务。



最上层没什么要讨论的,按照自己的业务去做就好了,我们主要讲讲中间这部分,也就是你的应用如何连接到区块链的节点上。有以下3种做法。


  1. 借助 DApps 浏览器(浏览器 + 外挂钱包),类比于互联网中借助微信支付、支付宝。

  2. 在自己的应用中内置钱包,类比于直连银行。

  3. 把服务器拉进来。需要服务器的情况往往有3种:


1)集成第三方服务;

2)作为缓存引擎;

3)存储大块数据存储。


说到这里,大家其实就可以动手做一些自己的应用了,推荐大家使用以下的工具:


  • Truffle:目前最流行的以太坊开发框架,用JavaScript编写,支持智能合约的编译、部署和测试;

  • Ganache:个人电脑上使用的区块链软件,它和以太坊主链的节点逻辑一致;

  • OpenZeppelin:一种构建安全智能合约的开源架构,遵循MIT许可,通过它可以构建大部分的合约;

  • MyEtherWallet:钱包应用,它的代码非常值得参考。



Dapps的场景与应用方向


我个人把整个人类社会分为三层:最下面一层是纯数字的世界,不需要有什么物理设备的存在——交易金融、跨境支付、玩游戏、天气等场景,都没有一个物理的实体存在。区块链在这一层表现的很好,尽管还存在一些小问题。


再往上是「无人值守的物理设备」,这一层里包含大家所熟知的IoT。最上面一层是人类社会,也是现实世界——租房、买车、衣食住行等场景。虽然之前很多ICO项目是关于这一类的,但我认为区块链往这里渗透还有很长的路要走。




区块链的技术发展趋势


参照以太坊的架构图,未来一年可以期待的方向有三个。




第一个是闪电网络。闪联网络有几种做法,而以太坊就做了两点,一个太慢,一个太贵,每笔交易支付Gas的费用的受不了。第二个是Whisper,是指去中心化的即时通信。第三个是Swarm,基于IPFS,理论上来说可以传送大块文件,价格非常低,在链上也不需要做服务器存储。


这三个方向加上现有的智能合约,未来的空间会非常大。




想跟区块链大咖蒋涛和孟岩一起工作吗?

快来快来,优快云区块链大本营招采编 2 名 (待遇不低于行业水平)

邮件发送:puge@youkuaiyun.com(注明:姓名+区块链+采编应聘)


扫码加入区块链大本营读者群,群满加微信 17600222208 入群


Action=GetMachineAttribute|Response=OK|MachineID=HHT-02|MachineType=Handler|MachineVendor=鸿劲|MachineModel=HT9040S|MachineSN=B29554|LinkedMachine=|TheRemark=9040虚拟机|isActive=True|LinkedMachine2=|LotProcessed=1|PMPlanName=Monthly|LastPMDate=2025/8/15 17:15:12|NextPMDate=2025/9/15 17:16:42|LinkedMachType=|LinkedMachModel=|LinkedMachineDriver=|LinkedMachType2=|LinkedMachModel2=|LinkedMachineDriver2=|RunningLot=|LinkedMachLastPM=|LinkedMachNextPM=|TwinsID=|LinkedMachineVendor1=|LinkedMachineVendor2=|IP=0.0.0.0|SiteLocation=NJP2|MachineSerialNO=B29554|LinkedMachineSerialNO1=|LinkedMachineSerialNO2=|Action=MesAccountPasswordVerify|Response=OKAction=GetLotAttributes|Response=OK|[LOT:LotNum]=SAGMJ35F17|[LOT:MotherLot]=SAGMJ35F17|[LOT:OriQTY]=76|[LOT:NowQTY]=75|[LOT:WORKORDER]=SAG250831_8YEXN.1|[LOT:CustCode]=SAG|[LOT:CustPart]=CHP-005800004|[LOT:PartNum]=SAG_FCHP-005800004|[LOT:CustLot]=RX000276|[LOT:StartDate]=2025-08-31|[LOT:StartDateTime]=2025-08-31 23:47:33|[LOT:WaferPCS]=75|[LOT:ProcessSPEC]=SAG_FT1FT2_FCHP-005800004-A13-1|[LOT:ProcessRevision]=4|[LOT:FabSite]=|[LOT:LotStatus]=-8|[LOT:WipNow]=FT2R0|[LOT:WipStep]=FT2T0|[LOT:HoldCount]=0|[LOT:WipStage]=C|[LOT:InvBatch]=FT8670319192805280AF|[LOT:PE_Comment]=|[LOT:WaferSequence]=|[LOT:WipMachine]=|[LOT:LastCP]=FT2|[LOT:DateCode]=2534|[LOT:ProdCat]=FT|[LOT:FGBin]=BIN1|[LOT:SiteLocation]=SHAF|[LOT:LotCat]=M|[LOT:TrackInCheck]=Lot Trackin checkList is still Pending for Lot [SAGMJ35F17]|[LOT:CustShipLotID]=|[LOT:LastTrackInTime]=2025/9/1 16:17:36|[LOT:LotExtraCode]=[WO:WorkOrderID]=SAG250831_8YEXN.1|[WO:DateCode]=2534|[WO:PONumber]=6300000750|[WO:QTY]=76|[WO:PCS]=76|[WO:AddCode1]=FT1+FT2|[WO:AddCode3]=CHP-005802002|[WO:AddCode4]=MGS|[WO:AddCode5]=CHP-005902002|[WO:AddCode6]=CHP-005402002|[WO:AddCode7]=CHP-005402004|[PN:PartNum]=SAG_FCHP-005800004|[PN:CustPart]=CHP-005800004|[PN:WaferSize]=Tray|[PN:DPW]=1|[PN:TestedDies]=1|[PN:isCOP]=False|[PN:FabDevice]=CHP-005800004|[PN:WaferFormat]=####|[PN:CPxTestedDies]=FT2:1;FT1:1|[PN:PackageName]=BGA 72X72|[PN:PackingType]=Tray|[PN:PackingDeviceName]=SAG_TRAY_BGA5037L_72X72_12|[PN:LeadCount]=5037|[WipTray]=3+1|[FlexibleItems@PackingDevice:PKD_BACKUP 1]=3-FA-01-000012|[FlexibleItems@PackingDevice:PKD_BACKUP 2]=3-FA-01-000013|[FlexibleItems@PackingDevice:PKD_BACKUP 3]=3-FA-01-000014|[FlexibleItems@PackingDevice:PKD_BubbleBag]=3-FA-01-000005|[FlexibleItems@PackingDevice:PKD_DryingAgent]=3-DE-01-000004|[FlexibleItems@PackingDevice:PKD_FORM]=3-FA-01-000045|[FlexibleItems@PackingDevice:PKD_FORM2]=3-FA-01-000015|[FlexibleItems@PackingDevice:PKD_HumidityIndicatorCard]=3-HI-01-000005|[FlexibleItems@PackingDevice:PKD_InterBox]=3-IB-01-000018|[FlexibleItems@PackingDevice:PKD_InterLabel]=3-LB-01-000058|[FlexibleItems@PackingDevice:PKD_MBB]=3-AB-01-000003|[FlexibleItems@PackingDevice:PKD_Medium box]=3-OB-01-000029|[FlexibleItems@PackingDevice:PKD_OuterBox]=3-OB-01-000030|[FlexibleItems@PackingDevice:PKD_OuterLabel]=3-LB-01-000058|[FlexibleItems@PackingDevice:PKD_QASeal]=3-LB-01-000047|[FlexibleItems@PackingDevice:PKD_Tray]=BGA72X72(以实物为准)|[FlexibleItems@PackingDevice:PKD_Tray Packing Belt]=3-CM-03-000066|[ProcessSpec:ProcessNotice]=|[ProcessSpec:WaferNotch]=180-Degree|[ProcessSpec:ProcessCode]=SAG|[ProcessSpec:isOTP]=False|[ProcessSpec:isCUP]=False|[ProcessSpec:isTrimed]=|[ProcessSpec:CustTestSpec]=NA|[ProcessSpec:GrossDie]=1|[ProcessSpec:WaferSize]=12|[ProcessSpec:ReportNotch]=|[ProcessSpec:LastCP]=FT2|[ProcessSpec:IsAutomotive]=False|[ProcessSpec:IsFrozen]=False|[ProcessSpec:WaferFormat]=####|[ProcessSpec:TrackInBlock]=|[ProcessSpec:WholeFlow3]=TB1-LS0-IQC-FT1-FT2-FV1-LS1-WV1-LS2-WP1-WPF|[ProcessSpec:WholeFlow5]=TB1T0-LS0T0-IQCT0-FT1T0-FT1R0-FT2T0-FT2R0-FV1T0-LS1T0-WV1Q1-LS2T0-WV1M0-WV1Q0-WP1T0-WP1T1-WP1Q0-WPFG0|[ProcessSpec:EngOrMass]=Mass|[ProcessSpec@TB1T0:ProcessTime1]=0.00|[ProcessSpec@TB1T0:ProcessTime2]=0.00|[ProcessSpec@TB1T0:ProcessTime3]=0.00|[ProcessSpec@TB1T0:ProcessTime4]=0.00|[ProcessSpec@LS0T0:ProcessTime1]=0.00|[ProcessSpec@LS0T0:ProcessTime2]=0.00|[ProcessSpec@LS0T0:ProberDevice]=SAGLSBGA72X72P5037TH2000|[ProcessSpec@LS0T0:ProcessTime3]=0.00|[ProcessSpec@LS0T0:ProcessTime4]=0.00|[ProcessSpec@IQCT0:ProcessTime1]=0.00|[ProcessSpec@IQCT0:ProcessTime2]=0.00|[ProcessSpec@IQCT0:ProcessTime3]=0.00|[ProcessSpec@IQCT0:ProcessTime4]=0.00|[ProcessSpec@FT1T0:ProcessRemark]=MGS100_pgm|[ProcessSpec@FT1T0:Sites]=1|[ProcessSpec@FT1T0:ProcessTime1]=0.00|[ProcessSpec@FT1T0:ProcessTime2]=0.00|[ProcessSpec@FT1T0:ProberDevice]=SAGCKBGA72X72P5037S1X1N025F|[ProcessSpec@FT1T0:RecipeID]=MGS100_93K_FT1FT3_RH7_A14_20250625|[ProcessSpec@FT1T0:OSBins]=7|[ProcessSpec@FT1T0:RecipeVersion]=MGS100_FT1_25C_1site_A14.flo|[ProcessSpec@FT1T0:ProcessTime3]=20.00|[ProcessSpec@FT1T0:ProcessTime4]=20.00|[ProcessSpec@FT1T0:StepNick]=FT1|[RecipeID]=FT1T0:MGS100_93K_FT1FT3_RH7_A14_20250625(MGS100_FT1_25C_1site_A14.flo)|[TestProgramID]=MGS100_93K_FT1FT3_RH7_A14_20250625|[ProcessSpec@FT1R0:ProcessTime1]=0.00|[ProcessSpec@FT1R0:ProcessTime2]=0.00|[ProcessSpec@FT1R0:ProcessTime3]=0.00|[ProcessSpec@FT1R0:ProcessTime4]=0.00|[ProcessSpec@FT2T0:ProcessRemark]=MGS100_pgm|[ProcessSpec@FT2T0:Sites]=1|[ProcessSpec@FT2T0:ProcessTime1]=0.00|[ProcessSpec@FT2T0:ProcessTime2]=0.00|[ProcessSpec@FT2T0:ProberDevice]=SAGCKBGA72X72P5037S1X1H085F|[ProcessSpec@FT2T0:RecipeID]=MGS100_93K_FT1FT3_RH7_A14_20250625|[ProcessSpec@FT2T0:OSBins]=7|[ProcessSpec@FT2T0:RecipeVersion]=MGS100_FT1_85C_1site_A14.flo|[ProcessSpec@FT2T0:ProcessTime3]=150.00|[ProcessSpec@FT2T0:ProcessTime4]=150.00|[ProcessSpec@FT2T0:StepNick]=FT2|[RecipeID]=FT2T0:MGS100_93K_FT1FT3_RH7_A14_20250625(MGS100_FT1_85C_1site_A14.flo)|[TestProgramID]=MGS100_93K_FT1FT3_RH7_A14_20250625|[ProcessSpec@FT2R0:ProcessTime1]=0.00|[ProcessSpec@FT2R0:ProcessTime2]=0.00|[ProcessSpec@FT2R0:ProcessTime3]=0.00|[ProcessSpec@FT2R0:ProcessTime4]=0.00|[ProcessSpec@FV1T0:ProcessTime1]=0.00|[ProcessSpec@FV1T0:ProcessTime2]=0.00|[ProcessSpec@FV1T0:ProcessTime3]=0.00|[ProcessSpec@FV1T0:ProcessTime4]=0.00|[ProcessSpec@LS1T0:ProcessTime1]=0.00|[ProcessSpec@LS1T0:ProcessTime2]=0.00|[ProcessSpec@LS1T0:ProberDevice]=SAGLSBGA72X72P5037TH2000|[ProcessSpec@LS1T0:ProcessTime3]=0.00|[ProcessSpec@LS1T0:ProcessTime4]=0.00|[ProcessSpec@WV1Q1:ProcessTime1]=0.00|[ProcessSpec@WV1Q1:ProcessTime2]=0.00|[ProcessSpec@WV1Q1:ProcessTime3]=0.00|[ProcessSpec@WV1Q1:ProcessTime4]=0.00|[ProcessSpec@LS2T0:ProcessTime1]=0.00|[ProcessSpec@LS2T0:ProcessTime2]=0.00|[ProcessSpec@LS2T0:ProberDevice]=SAGLSBGA72X72P5037TH2OQC|[ProcessSpec@LS2T0:ProcessTime3]=0.00|[ProcessSpec@LS2T0:ProcessTime4]=0.00|[ProcessSpec@WV1M0:ProcessTime1]=0.00|[ProcessSpec@WV1M0:ProcessTime2]=0.00|[ProcessSpec@WV1M0:ProcessTime3]=0.00|[ProcessSpec@WV1M0:ProcessTime4]=0.00|[ProcessSpec@WV1Q0:ProcessTime1]=0.00|[ProcessSpec@WV1Q0:ProcessTime2]=0.00|[ProcessSpec@WV1Q0:ProcessTime3]=0.00|[ProcessSpec@WV1Q0:ProcessTime4]=0.00|[ProcessSpec@WP1T0:ProcessTime1]=0.00|[ProcessSpec@WP1T0:ProcessTime2]=0.00|[ProcessSpec@WP1T0:ProcessTime3]=0.00|[ProcessSpec@WP1T0:ProcessTime4]=0.00|[ProcessSpec@WP1T1:ProcessTime1]=0.00|[ProcessSpec@WP1T1:ProcessTime2]=0.00|[ProcessSpec@WP1Q0:ProcessTime1]=0.00|[ProcessSpec@WP1Q0:ProcessTime2]=0.00|[ProcessSpec@WP1Q0:ProcessTime3]=0.00|[ProcessSpec@WP1Q0:ProcessTime4]=0.00|[ProcessSpec@WPFG0:ProcessTime1]=0.00|[ProcessSpec@WPFG0:ProcessTime2]=0.00|[ProcessSpec@WPFG0:ProcessTime3]=0.00|[ProcessSpec@WPFG0:ProcessTime4]=0.00|[ProcessSpec@FT1T0:HandlerDevice@PassBins]=1,2,3,4,5,6,8,9,15|[ProcessSpec@FT1T0:HandlerDevice@RetestBins]=6,7,8,9,15|[ProcessSpec@FT1T0:HandlerDevice@TestTemp]=25|[ProcessSpec@FT1T0:HandlerDevice@SpecialBins]=|[ProcessSpec@FT1T0:HandlerDevice@ConformingHandler]=HT-1028C|[ProcessSpec@FT1T0:HandlerDevice@SoakTime]=0|[ProcessSpec@FT1T0:HandlerDevice@GbibBin]=0-1023|[ProcessSpec@FT1T0:HandlerDevice@ForcePerPin]=20|[ProcessSpec@FT1T0:HandlerDevice@CCDCheck]=False|[ProcessSpec@FT1T0:HandlerDevice@TestFlow]=|[ProcessSpec@FT2T0:HandlerDevice@PassBins]=1,2,3,4,5,6,8,9,15|[ProcessSpec@FT2T0:HandlerDevice@RetestBins]=6,7,8,9,15|[ProcessSpec@FT2T0:HandlerDevice@TestTemp]=85|[ProcessSpec@FT2T0:HandlerDevice@SpecialBins]=|[ProcessSpec@FT2T0:HandlerDevice@ConformingHandler]=HT-1028C|[ProcessSpec@FT2T0:HandlerDevice@SoakTime]=180|[ProcessSpec@FT2T0:HandlerDevice@GbibBin]=0-1023|[ProcessSpec@FT2T0:HandlerDevice@ForcePerPin]=20|[ProcessSpec@FT2T0:HandlerDevice@CCDCheck]=False|[ProcessSpec@FT2T0:HandlerDevice@TestFlow]=|[ProcessShortFlow]=TB1-LS0-IQC-FT1-FT2-FV1-LS1-WV1-LS2-WP1-WPF|[FlexibleItem_ProcessSpecAttributes:AutoRetest]=NA|[FlexibleItem_ProcessSpecAttributes:BinCharactersInMapping]=NA|[FlexibleItem_ProcessSpecAttributes:BinTypeInMapping]=FinalTest-N/A|[FlexibleItem_ProcessSpecAttributes:Bl_Software_Revision]=NA|[FlexibleItem_ProcessSpecAttributes:CableRequest]=NA|[FlexibleItem_ProcessSpecAttributes:Continuous_Fail]=5|[FlexibleItem_ProcessSpecAttributes:Cust_TestSpec]=NA|[FlexibleItem_ProcessSpecAttributes:Docking]=HardDocking|[FlexibleItem_ProcessSpecAttributes:DUTBoard]=NA|[FlexibleItem_ProcessSpecAttributes:EQCStandard]=NA|[FlexibleItem_ProcessSpecAttributes:External_Power]=NA|[FlexibleItem_ProcessSpecAttributes:GPIB_Bin]=0-1023|[FlexibleItem_ProcessSpecAttributes:HandlerKit]=KT-SAGBGA72X72L1X1|[FlexibleItem_ProcessSpecAttributes:Humidity_Level_CDC_FT]=NA|[FlexibleItem_ProcessSpecAttributes:Humidity_Level_FT]=MSL4|[FlexibleItem_ProcessSpecAttributes:IndexTime]=1.3|[FlexibleItem_ProcessSpecAttributes:Ink_Special_LotNo]=NA|[FlexibleItem_ProcessSpecAttributes:Instruction_Photo_Link]=NA|[FlexibleItem_ProcessSpecAttributes:LoadBoard]=LB-BR166-FT1|[FlexibleItem_ProcessSpecAttributes:LoadFile]=MA|[FlexibleItem_ProcessSpecAttributes:LotRetest]=All Fail|[FlexibleItem_ProcessSpecAttributes:LS_Mark_picture]=http://192.168.10.216/vt_mes/GenericFileAttach/V019/20200112_133101_7461.png|[FlexibleItem_ProcessSpecAttributes:Major_Fail]=NA|[FlexibleItem_ProcessSpecAttributes:Map_Reference]=NA|[FlexibleItem_ProcessSpecAttributes:N2]=No|[FlexibleItem_ProcessSpecAttributes:OD_mux]=50|[FlexibleItem_ProcessSpecAttributes:OnlineEQCTestNum]=NA|[FlexibleItem_ProcessSpecAttributes:OtherCard]=NA|[FlexibleItem_ProcessSpecAttributes:PE_Owner]=Blue.yan|[FlexibleItem_ProcessSpecAttributes:PIB]=NA|[FlexibleItem_ProcessSpecAttributes:ProberCard]=NA|[FlexibleItem_ProcessSpecAttributes:ProberModel]=P12|[FlexibleItem_ProcessSpecAttributes:ProberRequest]=普通机台|[FlexibleItem_ProcessSpecAttributes:ProductionNotice]=LS+IQC+FT1+FT2+包装, *****FT1&FT2 良率异常,BIN7数量超标及时联系PTE处理,FT1 AUTO3(bin6,8,9,15)所有BIN复测2次后过账PASS Bin,FT2 AUTO3(bin6,8,9,15)所有BIN复测1次后过账PASS Bin,有BIN7需要复测2次**** ^1.物料检测标准:测试前IQC 检测100%; ^2.此device 来的物料流程: 在原来的Tray盘上面,芯片100% leadscan 来料检测 --〉 ^转tray的动作,全部换成BR指定的tray --〉 在BR指定的tray 盘上面,芯片100%leadscan检测 --〉 ^FT1 25C测试 --〉 FT1 25C测试非OS(BIN7)fail 芯片,release 到FT2 85C测试 --〉 ^ FT2 BIN1~BIN4所有PASS芯片,release 到burn-in ^3.FT1/FT2 stage BIN7/BIN9 fail(OS Fail + 外观异常fail) 的芯片,出货按照按照FT1/FT2 Fail 标签出货|[FlexibleItem_ProcessSpecAttributes:ReferenceX]=44|[FlexibleItem_ProcessSpecAttributes:ReferenceY]=18|[FlexibleItem_ProcessSpecAttributes:RepairInstruction]=NA|[FlexibleItem_ProcessSpecAttributes:ReportDatabase]=NA|[FlexibleItem_ProcessSpecAttributes:Responsive_To_Humidity]=Yes|[FlexibleItem_ProcessSpecAttributes:Responsive_To_Temperature]=Yes|[FlexibleItem_ProcessSpecAttributes:Setup_Dummy]=NA|[FlexibleItem_ProcessSpecAttributes:Setup_KBU]=NA|[FlexibleItem_ProcessSpecAttributes:Setup_KGU]=NA|[FlexibleItem_ProcessSpecAttributes:SiteRelative]=HONTECH-GPIB-8.cfg|[FlexibleItem_ProcessSpecAttributes:Site-Site]=5|[FlexibleItem_ProcessSpecAttributes:SocketType]=ST-SAGBGA72X72P2919L|[FlexibleItem_ProcessSpecAttributes:SoftBin_Definition]=AMC&GXL_B|[FlexibleItem_ProcessSpecAttributes:Special_Bin]=NA|[FlexibleItem_ProcessSpecAttributes:StopYield]=90|[FlexibleItem_ProcessSpecAttributes:Temperature]=25|[FlexibleItem_ProcessSpecAttributes:Tester_MTP_Request]=NA|[FlexibleItem_ProcessSpecAttributes:Tester_RDI_Revision]=NA|[FlexibleItem_ProcessSpecAttributes:TesterConfig]=5*UHC4T(226,426,227,427,228,428,230,430,231,431); 2*DPS64/1*DSP128(225,229,425,429,303,304,307,308); 10*PS1600B(101-132,201-224.401-424);|[FlexibleItem_ProcessSpecAttributes:TesterModel]=93000|[FlexibleItem_ProcessSpecAttributes:TestProgram_MD5]=FT1:933aa59371e665ccd82b73f2d5958496;FT2:933aa59371e665ccd82b73f2d5958496;|[FlexibleItem_ProcessSpecAttributes:Tower]=NA|[FlexibleItem_ProcessSpecAttributes:TrimCard]=NA|[FlexibleItem_ProcessSpecAttributes:ValidationStandard]=NA|[FlexibleItem_ProcessSpecAttributes:Wafer_Sequence]=1-25|[FlexibleItem_ProcessSpecAttributes:ZPK_Al_FoilBag]=SF-AL-00002|[FlexibleItem_ProcessSpecAttributes:ZPK_BoxModel]=SF-IB-00018|[FlexibleItem_ProcessSpecAttributes:ZPK_Bubble]=SF-BB-00014|[FlexibleItem_ProcessSpecAttributes:ZPK_DryingAgent]=SF-DA-00005|[FlexibleItem_ProcessSpecAttributes:ZPK_HumidityCard]=SF-HI-00007|[FlexibleItem_ProcessSpecAttributes:ZPK_Indication_Label]=N/A|[FlexibleItem_ProcessSpecAttributes:ZPK_LabelPaper]=SF-LB-00010|[FlexibleItem_ProcessSpecAttributes:ZPK_PackerSet]=N/A|[FlexibleItem_ProcessSpecAttributes:ZPK_PP]=SF-PP-00003|[FlexibleItem_ProcessSpecAttributes:ZPK_SealPocket]=N/A|[FlexibleItem_ProcessSpecAttributes:ZPK_SVR]=真空参数2,真空时间6S.|[FlexibleItem_ProcessSpecAttributes:ZQA_FQ_Spec]=FQ1:数量小于等于238颗时,抽检5颗,^数量大于238颗,且小于等于35000颗时抽检238(2盘)颗,^数量大于35000时,抽检833颗(7盘),检验结果0收1拒;|[FlexibleItem_ProcessSpecAttributes:Tester_Software_Revision]=FT1:7.5.4.5;FT2:7.5.4.5;|[SubBundleIDs]=VT-SH2027,VT-SH2027,VT-SH5424,VT-SH5424,VT-SH1433,VT-SH1433,VT-SH5424,VT-SH5424,VT-SH3154,VT-SH3154,VT14467,VT-SH1186,VT-SH1682,VT-SH1682,VT-SH1433,VT-SH1433,VT07795,VT07795,VT-SH5433,VT-SH3154,VT-SH2027,VT-SH3154,VT-SH5433,VT-SH5433,VT-SH1186,VT-SH1186,VT-SH1186,VT07795,VT14467,VT-SH2027,VT14467,VT14467,VT-SH1682,VT-SH1682,VT07795,VT-SH5433|[MinimalWaferSequence]=0|[SYS:QueryTime]=2025-09-03 16:05:59|[RunCardInput:FT1T0/Bin1-Final]=75|[RunCardInput:FT1T0/Bin1-FT]=72|[RunCardInput:FT1T0/Bin1-FTsummary]=72|[RunCardInput:FT1T0/Bin1-RT1]=3|[RunCardInput:FT1T0/Bin1-RT1summary]=3|[RunCardInput:FT1T0/Bin7-Final]=1|[RunCardInput:FT1T0/Bin7-FT]=4|[RunCardInput:FT1T0/Bin7-FTsummary]=4|[RunCardInput:FT1T0/Bin7-RT1]=1|[RunCardInput:FT1T0/Bin7-RT1summary]=1|[RunCardInput:FT1T0/Bin7-RT2]=1|[RunCardInput:FT1T0/Bin7-RT2summary]=1|[RunCardInput:FT1T0/CurrentQTY]=Yes|[RunCardInput:FT1T0/HandlerRecipe]=Yes|[RunCardInput:FT1T0/IN-Final]=76|[RunCardInput:FT1T0/IN-FT]=76|[RunCardInput:FT1T0/IN-FTsummary]=76|[RunCardInput:FT1T0/IN-RT1]=4|[RunCardInput:FT1T0/IN-RT1summary]=4|[RunCardInput:FT1T0/IN-RT2]=1|[RunCardInput:FT1T0/IN-RT2summary]=1|[RunCardInput:FT1T0/NoRetestBins]=Yes|[RunCardInput:FT1T0/OP工号-Final]=4938|[RunCardInput:FT1T0/OP工号-FT]=4938|[RunCardInput:FT1T0/OP工号-FTsummary]=4938|[RunCardInput:FT1T0/OP工号-RT1]=4938|[RunCardInput:FT1T0/OP工号-RT1summary]=4938|[RunCardInput:FT1T0/OP工号-RT2]=4938|[RunCardInput:FT1T0/OP工号-RT2summary]=4938|[RunCardInput:FT1T0/OS-Final]=1.316%|[RunCardInput:FT1T0/OS-FT]=5.263%|[RunCardInput:FT1T0/OS-FTsummary]=5.263%|[RunCardInput:FT1T0/OS-RT1]=25.000%|[RunCardInput:FT1T0/OS-RT1summary]=25.000%|[RunCardInput:FT1T0/OS-RT2]=100.000%|[RunCardInput:FT1T0/OS-RT2summary]=100.000%|[RunCardInput:FT1T0/TestProgram]=Yes|[RunCardInput:FT1T0/TestTemperature]=Yes|[RunCardInput:FT1T0/VisualInspection]=Yes|[RunCardInput:FT1T0/Yield-Final]=98.684%|[RunCardInput:FT1T0/Yield-FT]=94.737%|[RunCardInput:FT1T0/Yield-FTsummary]=94.737%|[RunCardInput:FT1T0/Yield-RT1]=75.000%|[RunCardInput:FT1T0/Yield-RT1summary]=75.000%|[RunCardInput:FT1T0/Yield-RT2]=0.000%|[RunCardInput:FT1T0/Yield-RT2summary]=0.000%|[RunCardInput:FT1T0/结批日期-Final]=2025-09-01|[RunCardInput:FT1T0/结批日期-FT]=2025-09-01|[RunCardInput:FT1T0/结批日期-FTsummary]=2025-09-01|[RunCardInput:FT1T0/结批日期-RT1]=2025-09-01|[RunCardInput:FT1T0/结批日期-RT1summary]=2025-09-01|[RunCardInput:FT1T0/结批日期-RT2]=2025-09-01|[RunCardInput:FT1T0/结批日期-RT2summary]=2025-09-01|[RunCardInput:FT1T0/结批时间-Final]=09:02:39|[RunCardInput:FT1T0/结批时间-FT]=08:33:43|[RunCardInput:FT1T0/结批时间-FTsummary]=08:33:43|[RunCardInput:FT1T0/结批时间-RT1]=08:46:20|[RunCardInput:FT1T0/结批时间-RT1summary]=08:46:20|[RunCardInput:FT1T0/结批时间-RT2]=09:02:39|[RunCardInput:FT1T0/结批时间-RT2summary]=09:02:39|[RunCardInput:FT2T0/Bin1-Final]=57|[RunCardInput:FT2T0/Bin1-FT]=54|[RunCardInput:FT2T0/Bin1-RT1]=3|[RunCardInput:FT2T0/Bin2-FTsummary]=11|[RunCardInput:FT2T0/Bin3-FTsummary]=1|[RunCardInput:FT2T0/Bin5-FTsummary]=42|[RunCardInput:FT2T0/Bin5-RT1summary]=3|[RunCardInput:FT2T0/Bin6-Final]=18|[RunCardInput:FT2T0/Bin6-FT]=19|[RunCardInput:FT2T0/Bin6-FTsummary]=19|[RunCardInput:FT2T0/Bin6-RT1]=18|[RunCardInput:FT2T0/Bin6-RT1summary]=18|[RunCardInput:FT2T0/Bin7-FT]=2|[RunCardInput:FT2T0/Bin7-FTsummary]=2|[RunCardInput:FT2T0/CurrentQTY]=Yes|[RunCardInput:FT2T0/HandlerRecipe]=Yes|[RunCardInput:FT2T0/IN-Final]=75|[RunCardInput:FT2T0/IN-FT]=75|[RunCardInput:FT2T0/IN-FTsummary]=75|[RunCardInput:FT2T0/IN-RT1]=21|[RunCardInput:FT2T0/IN-RT1summary]=21|[RunCardInput:FT2T0/NoRetestBins]=Yes|[RunCardInput:FT2T0/OP工号-Final]=1391|[RunCardInput:FT2T0/OP工号-FT]=1391|[RunCardInput:FT2T0/OP工号-FTsummary]=1391|[RunCardInput:FT2T0/OP工号-RT1]=1391|[RunCardInput:FT2T0/OP工号-RT1summary]=1391|[RunCardInput:FT2T0/OS-Final]=0.000%|[RunCardInput:FT2T0/OS-FT]=2.667%|[RunCardInput:FT2T0/OS-FTsummary]=2.667%|[RunCardInput:FT2T0/OS-RT1]=0.000%|[RunCardInput:FT2T0/OS-RT1summary]=0.000%|[RunCardInput:FT2T0/TestProgram]=Yes|[RunCardInput:FT2T0/TestTemperature]=Yes|[RunCardInput:FT2T0/VisualInspection]=Yes|[RunCardInput:FT2T0/Yield-Final]=100.000%|[RunCardInput:FT2T0/Yield-FT]=97.333%|[RunCardInput:FT2T0/Yield-FTsummary]=97.333%|[RunCardInput:FT2T0/Yield-RT1]=100.000%|[RunCardInput:FT2T0/Yield-RT1summary]=100.000%|[RunCardInput:FT2T0/班别-Final]=D|[RunCardInput:FT2T0/班别-FT]=D|[RunCardInput:FT2T0/班别-FTsummary]=D|[RunCardInput:FT2T0/班别-RT1]=D|[RunCardInput:FT2T0/班别-RT1summary]=D|[RunCardInput:FT2T0/结批日期-Final]=2025-09-01|[RunCardInput:FT2T0/结批日期-FT]=2025-09-01|[RunCardInput:FT2T0/结批日期-FTsummary]=2025-09-01|[RunCardInput:FT2T0/结批日期-RT1]=2025-09-01|[RunCardInput:FT2T0/结批日期-RT1summary]=2025-09-01|[RunCardInput:FT2T0/结批时间-Final]=19:58:42|[RunCardInput:FT2T0/结批时间-FT]=19:56:07|[RunCardInput:FT2T0/结批时间-FTsummary]=19:56:07|[RunCardInput:FT2T0/结批时间-RT1]=19:56:07|[RunCardInput:FT2T0/结批时间-RT1summary]=19:56:08|[RunCardInput:LS0T0/CurrentQTY]=Yes|[RunCardInput:LS0T0/LoginBadgeID]=4929|[RunCardInput:LS0T0/MachineDevice]=Yes|[RunCardInput:LS0T0/NowDate]=2025-08-31|[RunCardInput:LS0T0/NowTime]=23:54:09|[RunCardInput:LS0T0/Pin-1-dot]=Yes|[RunCardInput:LS0T0/txtInputOutYield]=Out:76, In:76, Yield:100.00%|[RunCardInput:LS0T0/txtShift]=N|[RunCardInput:START/SubLotQTY]=Yes|Action=GetLotHistory|Response=wrongAction=GetstdfAttributes|Response=OK|Mir.setup_t=|Mir.start_t=FT2|Mir.finish_t=|Mir.stat_num=|Mir.mode_cod=|Mir.rtst_cod=0;1;2;3;4;5;6|Mir.prot_cod=R|Mir.burn_tim=|Mir.cmod_cod=|Mir.lot_id=RX000276|Mir.part_typ=CHP-005800004|Mir.node_nam=HHT-02|Mir.tstr_typ=93000-SOC|Mir.job_nam=MGS100_FT1_85C_1site_A14.flo|Mir.job_rev=|Mir.sblot_id=SAGMJ35F17|Mir.oper_nam=|Mir.exec_typ=|Mir.exec_ver=|Mir.test_cod=FT2|Mir.tst_temp=85|Mir.user_txt=|Mir.aux_file=|Mir.pkg_typ=|Mir.famly_id=|Mir.date_cod=|Mir.facil_id=|Mir.floor_id=|Mir.proc_id=|Mir.oper_frq=|Mir.spec_nam=|Mir.spec_ver=|Mir.flow_id=RP0;RP1;RP2;RP3;RP4;RP5;RP6|Mir.setup_id=|Mir.dsgn_rev=|Mir.eng_id=|Mir.rom_cod=|Mir.serl_num=|Mir.supr_nam=|Sdr.head_num=|Sdr.site_grp=|Sdr.site_cnt=|Sdr.hand_typ=|Sdr.hand_id=|Sdr.card_typ=|Sdr.card_id=|Sdr.load_typ=|Sdr.load_id=|Sdr.dib_typ=|Sdr.dib_id=|Sdr.cabl_typ=|Sdr.cabl_id=|Sdr.cont_typ=|Sdr.cont_id=|Sdr.lasr_typ=|Sdr.lasr_id=|Sdr.extr_typ=|Sdr.extr_id=|Wcr.wafr_siz=|Wcr.die_ht=|Wcr.die_wid=|Wcr.wf_flat=|Wcr.center_x=|Wcr.center_y=|Wcr.pos_x=|Wcr.pos_y=D|Action=GetCustCode|ANG,ANF,BTA,URT,STK,BTC,BTE,SXP,Action=GetParameter|Device_Name=CHP-005800004|Device_CODE=FT1+FT2; 这个json解析出来的字符串在strdd 中,怎么获取其中的某个参数?
09-04
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值