互助众筹FDF循环模式开发系统智能合约技术

简介: 智能合约的整个产生和执行过程都是可追溯、不可篡改的。一旦触发合约就会立即执行,自动按照合约规范进行操作。整个过程智能高效,短时间快速完成更是体现了它的准确和经济。

  实现智能合约就需要“图灵完备”的计算机编程语言。“图灵完备”这个词大家似乎了解的不多,可以简单地理解为能把世间一切可以计算解决的问题都计算出来的,这样的一种虚拟机或者编程语言就叫图灵完备。

  智能合约之所以可以在以太坊上完美应用,就是因为以太坊在其区块链上提供了一种近乎图灵完备的计算环境。只要是编程语言能够实现的计算,其都能支持,这也为智能合约在更加广泛的环境中得以应用坚实了基础。

  对比智能合约和传统合约,我们就能知道智能合约为什么会出现了。随着科技的进步,我们都会有一些通过双方签订合同来约束彼此经济活动的经历,但即使签订合同,我们也无法保证双方都能在规定期限内完整的履行合同规定的内容。

  传统合约受到诸如主客观、经济成本、适用范围、执行力度和执行时间等因素的影响,而智能合约便可以在很大程度上解决这些因素的影响。智能合约的主要特点可以简单地概括为:去中心化、智能高效(自动执行、无人为干预)、准确、低成本。

  众所周知,区块链最大的特质就是去中心化,在不信任中创造出信任。基于区块链的智能合约是将合约以数字化的形式写入到区块链中,在区块链优秀特性的加持下自然的具备了去中心化的特点,合约内容公开透明、条理清晰且不可篡改,编程语言就是规束合约的法律条文,交易双方可完全放心的进行交易。

  智能合约的整个产生和执行过程都是可追溯、不可篡改的。一旦触发合约就会立即执行,自动按照合约规范进行操作。整个过程智能高效,短时间快速完成更是体现了它的准确和经济。

  在solidity中合约之间的相互调用有两种方式:

  使用封装的方式,将合约地址封装成一个合约对象来调用它的函数

  直接使用函数来调用其他合约

  solidity提供了call()、delegatecall()、callcode()三个函数来实现合约直接的调用及交互,这些函数的滥用导致了各种安全风险和漏洞。在使用第二种方式时,如果处理不当很可能产生致命的漏洞——跨合约调用漏洞,主要就是call()注入函数导致的

  call()函数对某个合约或者本地合约的某个方法的调用方式:

  <address>.call(方法选择器,arg1,arg2,...)

  <address>.call(bytes)

  通过传递参数的方式,将方法选择器、参数进行传递,也可以直接传入一个字节数组(bytes要自己构造)

  举一个简单的例子

  contract sample_1{

  function info(bytes data){

  this.call(data);

  }

  function secret()public{

  require(this==msg.sender);

  //secret operations

  }

  }

  合约的两个函数中secret函数必须是合约自身调用的,然而有个info函数,调用了call(),并且外界是可以直接控制call函数的字节数组的

  this.call(bytes4(keccak256("secret()")));这样就调用了secret

  第二个例子

  contract sample2{

  ...

  function logAndCall(address _to,uint _value,bytes data,string _fallback){

  ...

  assert(_to.call(bytes4(keccak256(_fallback)),msg.sender,_value,_data));

  ...

  ...

  }

  在logAndCall函数中,我们的_falback参数可以控制,所以我们可以控制_to的任何方法。另外assert有三个参数,我们没必要调用完全符合三个参数类型的合约,因为在EVM中,只要找到了方法需要的参数,就会去执行,其他参数就会被忽略,不会产生任何影响

相关文章
|
消息中间件 分布式计算 大数据
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
598 0
|
Kubernetes 持续交付 Docker
利用 Docker 和 Kubernetes 实现微服务部署
【10月更文挑战第2天】利用 Docker 和 Kubernetes 实现微服务部署
|
12月前
|
数据挖掘
旅游淡季?这3招让旅行社轻松拓客!
当传统营销手段遭遇获客成本攀升、需求碎片化、服务响应滞后的三重困局时,一张小小的二维码正在重塑旅行社的客户运营逻辑——它不仅是一把打开精准营销大门的钥匙,更是构建客户忠诚度的数字桥梁。
342 15
|
编解码 缓存 自然语言处理
「Mac畅玩鸿蒙与硬件8」鸿蒙开发环境配置篇8 - 应用依赖与资源管理
本篇将介绍如何在 HarmonyOS 项目中高效管理资源文件和依赖,以确保代码结构清晰并提升应用性能。资源管理涉及图片、字符串、多语言文件等,通过优化文件加载和依赖管理,可以显著提升项目的加载速度和运行效率。
410 1
「Mac畅玩鸿蒙与硬件8」鸿蒙开发环境配置篇8 - 应用依赖与资源管理
|
存储 人工智能 搜索推荐
推荐 8 款必备生产力的实用工具与网站✨
【10月更文挑战第2天】大家好!今天我想和大家分享一些我每天使用的超级实用工具。这些工具已经成为我工作流程中不可或缺的一部分,帮助我更好地保持条理,提高效率,并完成更多任务!
377 1
推荐 8 款必备生产力的实用工具与网站✨
|
安全 算法 量子技术
量子计算安全性:保护信息的新途径
【10月更文挑战第31天】量子计算作为一种遵循量子力学规律的新型计算模式,不仅具有超越传统计算机的计算能力,还为信息安全提供了新的保护途径。本文探讨了量子计算的基本原理、其在信息安全中的应用(如量子加密和量子密钥分发)以及未来的发展趋势和挑战。
|
JavaScript API 开发工具
<大厂实战场景> ~ Flutter&鸿蒙next 解析后端返回的 HTML 数据详解
本文介绍了如何在 Flutter 中解析后端返回的 HTML 数据。首先解释了 HTML 解析的概念,然后详细介绍了使用 `http` 和 `html` 库的步骤,包括添加依赖、获取 HTML 数据、解析 HTML 内容和在 Flutter UI 中显示解析结果。通过具体的代码示例,展示了如何从 URL 获取 HTML 并提取特定信息,如链接列表。希望本文能帮助你在 Flutter 应用中更好地处理 HTML 数据。
494 1
|
存储 运维 小程序
后端开发零负担!揭秘支付宝小程序云开发的高效与安全,你的项目也能飞速上线?
【8月更文挑战第27天】支付宝小程序云开发是由阿里云提供的集成开发环境,助力开发者高效、安全地构建小程序后端服务,免去服务器搭建,显著提高开发效率并降低运维成本。它集成了云函数、云数据库及云存储等功能,便于快速搭建后端逻辑。例如,仅需简单几行代码即可创建HTTP接口或进行数据管理。这使得开发者能更专注于业务逻辑和用户体验优化,同时平台还提供了强大的安全保障措施,确保数据安全和用户隐私。无论对于初创团队还是成熟企业,支付宝小程序云开发都能有效提升产品迭代速度和市场竞争力。
422 1
|
开发框架 文字识别 前端开发
基于百度智能云的OCR接口进行图文识别
基于百度智能云的OCR接口进行图文识别
|
算法 数据挖掘 数据库