区块链开发之智能合约设计模式
Posted BBinChina
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链开发之智能合约设计模式相关的知识,希望对你有一定的参考价值。
编程范式中提到的设计模式:
Creational Patterns(创建型模式),如Singleton, Factory,AbstractFactory模式等;
Behavioral Patterns(行为模式),如Observer,Vistor,Mediator模式等;
Structural Pattern(结构型模式),如Bridge,Composite,Facade模式等;
随着Solidity大量的去中心化应用的普及,也形成了一些设计模式:
1、合约自毁(Contract Self Destruction)
场景:
当我们的贷款合同在还款结束之后,需要进行销毁时,合约销毁后:
1)合约相关交易(Transaction)会失败,即终止
2)对合约地址发起的转账资金会消失
所以指向被销毁合约的引用必须进行删除,而且在发送资金时,最好先调用Get()判断合约存在再进行发送
pragma solidity ^0.4.24;
contract SelfDestructionContract
public address owner;
public string someValue;
// 定义modifier函数修改器
modifier ownerRestricted
//合约调用者与构造者是同一人
require(owner==msg.sender);
// 构造函数
function SelfDestructionContract()
owner=msg.sender;
//api
function setSomeValue(string value)
someValue=value;
// 使用定义的函数修改器ownerRestricted来限制函数只能由合约拥有者调用
function destoryContract()
ownerRestricted
suicide(owner);
工厂合约模式(Factory Contract)
场景:
把子合约看做是资产,子合约进行相应的逻辑,比如买卖汽车时(不同汽车有折损或者收藏价值),可以对资产产权进行变换。在出售资产时,必须给函数加上payable修饰符。
pragma solidity ^0.4.24;
contract AutoShop
address[] autoAssets;
function createChildContract() public payable
address newAutoAsset = new AutoAsset(msg.sender);
autoAssets.push(newAutoAsset);
function getDeployedChildContracts() public view returns(address[])
return autoAssets;
contract AutoAsset
address public owner;
function AutoAsset(address _owner)
owner = _owner;
以上是关于区块链开发之智能合约设计模式的主要内容,如果未能解决你的问题,请参考以下文章