码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • native smart contracts, a easy forgotten thing.


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

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

    1. pragma solidity ^0.8.7;
    2. contract ERC20Basic {
    3. string public constant name = "BasicToken";
    4. string public constant symbol = "BAS";
    5. uint8 public constant decimals = 18;
    6. event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
    7. event Transfer(address indexed from, address indexed to, uint tokens);
    8. mapping(address => uint256) balances;
    9. mapping(address => mapping (address => uint256)) allowed;
    10. uint256 totalSupply_;
    11. constructor(uint256 total) {
    12. totalSupply_ = total;
    13. balances[msg.sender] = totalSupply_;
    14. }
    15. function totalSupply() public view returns (uint256) {
    16. return totalSupply_;
    17. }
    18. function balanceOf(address tokenOwner) public view returns (uint) {
    19. return balances[tokenOwner];
    20. }
    21. function transfer(address receiver, uint numTokens) public returns (bool) {
    22. require(numTokens <= balances[msg.sender]);
    23. balances[msg.sender] = balances[msg.sender] - numTokens;
    24. balances[receiver] = balances[receiver] + numTokens;
    25. emit Transfer(msg.sender, receiver, numTokens);
    26. return true;
    27. }
    28. function approve(address delegate, uint numTokens) public returns (bool) {
    29. allowed[msg.sender][delegate] = numTokens;
    30. emit Approval(msg.sender, delegate, numTokens);
    31. return true;
    32. }
    33. function allowance(address owner, address delegate) public view returns (uint) {
    34. return allowed[owner][delegate];
    35. }
    36. function transferFrom(address owner, address buyer, uint numTokens) public returns (bool) {
    37. require(numTokens <= balances[owner]);
    38. require(numTokens <= allowed[owner][msg.sender]);
    39. balances[owner] = balances[owner] - numTokens;
    40. allowed[owner][msg.sender] = allowed[owner][msg.sender] - numTokens;
    41. balances[buyer] = balances[buyer] + numTokens;
    42. emit Transfer(owner, buyer, numTokens);
    43. return true;
    44. }
    45. }

    这个合约定义了一种基础的 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()) 哈希,然后将结果压入栈顶。
    • :这是公钥哈希,它被压入栈顶。
    • OP_EQUALVERIFY:弹出栈顶的两个元素,检查它们是否相等。如果不等,脚本执行失败。如果相等,脚本继续执行。
    • OP_CHECKSIG:弹出栈顶的两个元素,检查签名是否有效。如果有效,将 true 压入栈顶。否则,将 false 压入栈顶。

    然而,比特币脚本的功能相对有限,不能像以太坊的 Solidity 那样编写复杂的逻辑1。因此,比特币主要用于处理简单的交易,而不是复杂的智能合约1。

  • 相关阅读:
    RAID2.0优势
    使用注解方式和XML配置方式完成AOP编程
    cetnos7上快速安装xtrabackup
    学C的第二十二天【深度剖析数据在内存中的存储:1. 数据类型介绍;2. 整型在内存中的存储】
    OpenCV/C++ 图片锐化
    arcgis js 缓冲区分析(GP服务)
    Springboot+Mybatis-puls整合
    【linux命令讲解大全】124.e2fsck:检查和修复第二扩展文件系统的工具
    Unix Network Programming Episode 79
    自动化运维——ansible (五十三) (02)
  • 原文地址:https://blog.csdn.net/raidtest/article/details/136146489
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号