ABI全称ApplicationBinaryInterface(应用程序二进制接口),简单来说就是以太坊的调用合约时的接口说明。从外部施加给以太坊的行为都称之为向以太坊网络提交了一个交易,调用合约函数其实是向合约地址(账户)提交了一个交易,这个交易有一个附加数据,这个附加的数据就是ABI的编码数据。1.函数选择器一个函数调用数据的前4字节,指定了要调用的函数。这就是某个函数签名的Keccak哈希的前4字节(高位在左的大端序)(译注:这里的“高位在左的大端序“,指最高位字节存储在最低位地址上的一种串行化编码方式,即高位字节在左)。这种签名被定义为基础原型的规范表达,基础原型即是函数名称加上由括
ABI全称ApplicationBinaryInterface(应用程序二进制接口),简单来说就是以太坊的调用合约时的接口说明。从外部施加给以太坊的行为都称之为向以太坊网络提交了一个交易,调用合约函数其实是向合约地址(账户)提交了一个交易,这个交易有一个附加数据,这个附加的数据就是ABI的编码数据。1.函数选择器一个函数调用数据的前4字节,指定了要调用的函数。这就是某个函数签名的Keccak哈希的前4字节(高位在左的大端序)(译注:这里的“高位在左的大端序“,指最高位字节存储在最低位地址上的一种串行化编码方式,即高位字节在左)。这种签名被定义为基础原型的规范表达,基础原型即是函数名称加上由括
案例分析角色分析:包括主持人、选民功能分析:仅主持人能授权给每个选民1票,即每个参与投票的选民拥有1票投票权。选民可以选择将票数委托给其它选民,当然,收委托的选民仍然可以将票数继续委托给其它选民,即存在a—>b–>c–>d,但是,一旦将票数委托给其它选民后,自己将不再有投票的权利选民和主持人可以选择任意的提案项目进行投票代码实例pragmasolidity^0.6.1;contractballot{//选民结构structVoter{uintweight;//可以投票的数量boolisVoted;//是否已投addressdelegate;//授权给他人uintindex;//选择的提案编号}
案例分析角色分析:包括主持人、选民功能分析:仅主持人能授权给每个选民1票,即每个参与投票的选民拥有1票投票权。选民可以选择将票数委托给其它选民,当然,收委托的选民仍然可以将票数继续委托给其它选民,即存在a—>b–>c–>d,但是,一旦将票数委托给其它选民后,自己将不再有投票的权利选民和主持人可以选择任意的提案项目进行投票代码实例pragmasolidity^0.6.1;contractballot{//选民结构structVoter{uintweight;//可以投票的数量boolisVoted;//是否已投addressdelegate;//授权给他人uintindex;//选择的提案编号}
SOLID设计原则包含以下5种原则:单一职责原则(SingleResponsibilityPrinciple,SRP)开闭原则(OpenClosedPrinciple,OCP)里式替换原则(LiskovSubstitutionPrinciple,LSP)接口隔离原则(InterfaceSegregationPrinciple,ISP)依赖反转原则(DependencyInversionPrinciple,DIP)单一职责原则理解单一职责原则的描述是,一个类或者模块只负责完成一个职责(或功能)。当然,单一职责原则不止是可以针对于模块或类,对于很多粒度都有效果,如函数、类、接口、模块等等,模块通常
SOLID设计原则包含以下5种原则:单一职责原则(SingleResponsibilityPrinciple,SRP)开闭原则(OpenClosedPrinciple,OCP)里式替换原则(LiskovSubstitutionPrinciple,LSP)接口隔离原则(InterfaceSegregationPrinciple,ISP)依赖反转原则(DependencyInversionPrinciple,DIP)单一职责原则理解单一职责原则的描述是,一个类或者模块只负责完成一个职责(或功能)。当然,单一职责原则不止是可以针对于模块或类,对于很多粒度都有效果,如函数、类、接口、模块等等,模块通常
背景在我们日常工作中,代码写着写着就出现下列的一些臭味。但是还好我们有SOLID这把‘尺子’,可以拿着它不断去衡量我们写的代码,除去代码臭味。这就是我们要学习SOLID原则的原因所在。设计的臭味僵化性具有联动性,动一处,会牵连到其他地方脆弱性不敢改动,动一处,全局瘫痪顽固性不易改动粘滞性耦合性太高不必要的复杂性代码设计过于复杂不必要的重复提高复用性,减少重复晦涩性代码设计不易理解SRP-单一职责原则一个类只做一件事情。当然一件事情,不是说类中只有一个方法。而是类中的方法都是属于同一种职责。不能因为第二职责的原因去改动这个类。一个很好的例子:在我们封装request库时,我们需要实现以下4个方法
背景在我们日常工作中,代码写着写着就出现下列的一些臭味。但是还好我们有SOLID这把‘尺子’,可以拿着它不断去衡量我们写的代码,除去代码臭味。这就是我们要学习SOLID原则的原因所在。设计的臭味僵化性具有联动性,动一处,会牵连到其他地方脆弱性不敢改动,动一处,全局瘫痪顽固性不易改动粘滞性耦合性太高不必要的复杂性代码设计过于复杂不必要的重复提高复用性,减少重复晦涩性代码设计不易理解SRP-单一职责原则一个类只做一件事情。当然一件事情,不是说类中只有一个方法。而是类中的方法都是属于同一种职责。不能因为第二职责的原因去改动这个类。一个很好的例子:在我们封装request库时,我们需要实现以下4个方法
介绍 SOLID原则是由5个设计原则组成的,分别为:(S)单一职责原则、(O)开闭原则、(L)里式替换原则、(I)接口隔离原则和(D)依赖反转原则;单一职责原则 SRP 单一职责原则的英文是SingleResponsibilityPrinciple,缩写为SRP; 它的意思是一个类或者模块只负责完成一个职责,也就是说不要设计大而全的类,要设计粒度小、功能单一的类; 换个角度讲,就是一个类如果包含两个或两个以上业务不相干的功能,那它就不满足单一职责原则,比如一个类包含了用户的操作和订单操作; 如何判断一个类是否单一呢?其实还是要根据实际情况来分析,例如:我们可以先写个大概的类来满足现有
介绍 SOLID原则是由5个设计原则组成的,分别为:(S)单一职责原则、(O)开闭原则、(L)里式替换原则、(I)接口隔离原则和(D)依赖反转原则;单一职责原则 SRP 单一职责原则的英文是SingleResponsibilityPrinciple,缩写为SRP; 它的意思是一个类或者模块只负责完成一个职责,也就是说不要设计大而全的类,要设计粒度小、功能单一的类; 换个角度讲,就是一个类如果包含两个或两个以上业务不相干的功能,那它就不满足单一职责原则,比如一个类包含了用户的操作和订单操作; 如何判断一个类是否单一呢?其实还是要根据实际情况来分析,例如:我们可以先写个大概的类来满足现有