智能合约主要在世界状态中将状态写入(put)、读取(get)和删除(delete),还可以查询不可篡改的区块链交易记录。
读取(get)操作一般代表的是查询,目的是获取关于交易对象当前状态的信息。
写入(put)操作通常生成一个新的业务对象或者对账本世界状态中现有的业务对象进行修改。
删除(delete)操作代表的是将一个业务对象从账本的当前状态中移除,但不从账本的历史中移除。
智能合约有许多可用的API。但重要的是,在任意情况下,无论交易创建、读取、更新还是删除世界状态中的业务对象,区块链都包含了这些操作的记录,且记录不可更改。
开发
智能合约是应用程序开发的重点,正如我们所看到的,一个链码中可定义一个或多个智能合约。将链码部署到网络中以后,网络上的组织就都可以使用该链码中的所有智能合约。这意味着只有管理员才需要考虑链码;其他人都只用考虑智能合约。
智能合约的核心是一组交易定义。例如,在fabcar.js中,你可以看到一个创建了一辆新车的智能合约交易:
async createCar(ctx,carNumber,make,model,color,owner){
const car={
color,
docType:'car',
make,
model,
owner,
};
await ctx.stub.putState(carNumber,Buffer.from(JSON.stringify(car)));
}
在编写您的第一个应用程序教程中,您可以了解更多关于Fabcar智能合约的信息。
智能合约几乎可以描述所有与多组织决策中数据不可变性相关的业务案例。智能合约开发人员的工作是将一个现有的业务流程(可能是管理金融价格或交付条件)用JavaScript、GOLANG或Java等编程语言来表示成一个智能合约。将数百年的法律语言转换为编程语言需要法律和技术方面的技能,智能合约审核员们不断地实践着这些技能。您可以在开发应用程序主题中了解如何设计和开发智能合约。