native smart contracts, a easy forgotten thing.

这篇具有很好参考价值的文章主要介绍了native smart contracts, a easy forgotten thing.。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

"内置的智能合约"是指在区块链网络中预先存在的智能合约。这些合约通常由区块链的开发者编写,并在区块链网络创建时就已经部署。这些合约的功能通常包括处理基本的交易和账户管理等核心功能。

以太坊网络就有一种内置的智能合约,叫做 ERC-20 合约1。ERC-20 是一种代币标准,定义了一套接口,任何遵循这个标准的智能合约都可以在以太坊网络上作为代币使用1。以下是一个 ERC-20 合约的简单示例1:

pragma solidity ^0.8.7;

contract ERC20Basic {
    string public constant name = "BasicToken";
    string public constant symbol = "BAS";
    uint8 public constant decimals = 18;
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
    event Transfer(address indexed from, address indexed to, uint tokens);
    mapping(address => uint256) balances;
    mapping(address => mapping (address => uint256)) allowed;
    uint256 totalSupply_;

    constructor(uint256 total) {
        totalSupply_ = total;
        balances[msg.sender] = totalSupply_;
    }

    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

    function balanceOf(address tokenOwner) public view returns (uint) {
        return balances[tokenOwner];
    }

    function transfer(address receiver, uint numTokens) public returns (bool) {
        require(numTokens <= balances[msg.sender]);
        balances[msg.sender] = balances[msg.sender] - numTokens;
        balances[receiver] = balances[receiver] + numTokens;
        emit Transfer(msg.sender, receiver, numTokens);
        return true;
    }

    function approve(address delegate, uint numTokens) public returns (bool) {
        allowed[msg.sender][delegate] = numTokens;
        emit Approval(msg.sender, delegate, numTokens);
        return true;
    }

    function allowance(address owner, address delegate) public view returns (uint) {
        return allowed[owner][delegate];
    }

    function transferFrom(address owner, address buyer, uint numTokens) public returns (bool) {
        require(numTokens <= balances[owner]);
        require(numTokens <= allowed[owner][msg.sender]);

        balances[owner] = balances[owner] - numTokens;
        allowed[owner][msg.sender] = allowed[owner][msg.sender] - numTokens;
        balances[buyer] = balances[buyer] + numTokens;
        emit Transfer(owner, buyer, numTokens);
        return true;
    }
}

这个合约定义了一种基础的 ERC-20 代币,包括了代币的名称、符号、小数位数,以及一些基本的函数,如转账(transfer)、批准(approve)和从其他地址转账(transferFrom)等

比特币(Bitcoin)的设计并没有像以太坊那样包含一个用于编写复杂智能合约的编程语言。然而,比特币确实有一种被称为比特币脚本(Bitcoin Script)的内置脚本语言1。这是一种堆栈式的、不完全图灵完备的语言,主要用于处理交易的输入和输出1。

以下是一个比特币脚本的例子,这是一个最常见的支付到比特币地址(Pay-to-Public-Key-Hash,P2PKH)的脚本1:

OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

这个脚本的工作原理如下1:

  • OP_DUP:复制栈顶的元素。
  • OP_HASH160:弹出栈顶的元素,计算它的 RIPEMD160(SHA256()) 哈希,然后将结果压入栈顶。
  • <pubKeyHash>:这是公钥哈希,它被压入栈顶。
  • OP_EQUALVERIFY:弹出栈顶的两个元素,检查它们是否相等。如果不等,脚本执行失败。如果相等,脚本继续执行。
  • OP_CHECKSIG:弹出栈顶的两个元素,检查签名是否有效。如果有效,将 true 压入栈顶。否则,将 false 压入栈顶。

然而,比特币脚本的功能相对有限,不能像以太坊的 Solidity 那样编写复杂的逻辑1。因此,比特币主要用于处理简单的交易,而不是复杂的智能合约1。文章来源地址https://www.toymoban.com/news/detail-830591.html

到了这里,关于native smart contracts, a easy forgotten thing.的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【论文研读】-An Efficient Framework for Optimistic Concurrent Execution of Smart Contracts

    区块链平台中的一个个交易都是由智能合约编写的,每一个交易想要成功上链,首先需要经过矿工(想要进行上链的节点,也就是新区块)进行挖矿,然后将挖好的区块交给验证者(区块链中已经挖矿成功的节点进行验证)进行验证,验证成功就会将区块上链;验证失败,则

    2024年01月21日
    浏览(41)
  • Transaction-based classification and detection approach for Ethereum smart contract

    摘要 :区块链技术为各行业带来创新。以太坊是目前第二大区块链平台,也是最大的智能合约区块链平台。智能合约可以简化和加速各种应用程序的开发,但也带来了一些问题。例如,智能合约被用来实施欺诈,漏洞合约被用来破坏公平性,还有许多重复的合约没有实际目的

    2024年02月06日
    浏览(38)
  • AliOS-Things引入

    目录 一、简介  1.1 硬件抽象层 1.2 AliOS-Things内核 rhino ​编辑 1.3 AliOS-Things组件 二、如何进行AliOS-Things开发 三、安装环境 安装python pip git 修改pip镜像源 安装aos-cube         AliOS-Things是阿里巴巴公司推出的致力于搭建云端一体化LoT软件。AliOS-Things是2017年推出的面向IoT领域

    2024年02月11日
    浏览(25)
  • Draw Things - 人工智能绘图工具,傻瓜式一键式安装运行

    Draw Things 是一款上手非常简单但十分强大的AI绘图工具,安装后会自动安装两个基础版的AI模型,直接就可以使用了   该软件相对于 Stable Diffusion 来说上手特别容易,不需要繁杂的配置,另外 DrawThings 也可以像 Stable Diffusion 一样来导入一些自定义的模型进行图生成   另外该软

    2024年02月12日
    浏览(96)
  • Solidity contract智能合约概览

    Contracts in Solidity are similar to classes in object-oriented languages. They contain persistent data in state variables, and functions that can modify these variables. Calling a function on a different contract (instance) will perform an EVM function call and thus switch the context such that state variables in the calling contract are inaccessible. A con

    2024年02月11日
    浏览(46)
  • Connected Contracts实用案例:平行链应用篇

    跨链互连合约是Moonbeam独特的原生跨链解决方案,不仅帮助开发团队在Moonbeam网络即可解锁不同公链的特色功能,各类去中心化应用的终端使用者能因此获得更便捷安全的跨链体验。 先前我们提及了互连合约在远程链上的应用,而Moonbeam作为Dotsama生态中的一份子,也与许多平

    2024年02月10日
    浏览(28)
  • fabric-contract-api-go快速上手

    hi,好久没有更新Fabric相关文章,今天给大家带来fabric-contract-api-go快速上手,相较于原文省略较多,希望深入理解的小伙伴可以点原文学习。 背景 Fabric提供了大量的API来开发智能合约,支持 Go, Node.js, 和Java。本文对fabric-contract-api-go进行简单梳理,可以使读者快速上手。 原文

    2024年02月19日
    浏览(38)
  • Solidity Uniswap V2 Router contract addLiquidity

            router 合约是一种高级合约,是大多数用户应用程序的入口点。通过该合约,可以更轻松地创建交易对、添加和删除流动性、计算交换中的价格变化以及执行交换。Router 适用于通过工厂合约部署的所有交易对,是一种通用合约。 GitHub - XuHugo/solidityproject: DApp go go

    2024年04月27日
    浏览(40)
  • 快速理解Laravel容器(IOC、DI、Provider、Contract)

    分享一些个人见解。 Laravel里面的某些概念,就像魔术一样,看起来很厉害,当知道魔术怎么变的,就会认为也不过如此。所以不必感觉Laravel里有些概念难以理解。 应当抛除被框架约束思维的枷锁,用PHP设计的角度去思考,关注大概,而不是在在框架层面逐行磨叽。毕竟源码

    2024年04月22日
    浏览(28)
  • 【STM32HAL库(智能家居)+DHT11传感器+ESP8266+Things Cloud云平台+手机APP】

     哔哩哔哩视频效果链接:http://【毕业设计——STM32温湿度采集系统】 https://www.bilibili.com/video/BV1Hy421i7sk/?share_source=copy_webvd_source=d711fa8bef565aeec8a4d279df8b85aa ~~大家可以给个关注,记得一键三连哦~~ 设计是一种基于STM32的无线温湿度检测系统以智能化、自动化、高效化为出发点,

    2024年04月09日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包