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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/692559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 驱动开发基础知识——APP 怎么读取按键值(十二)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;Vir2021GKBS &#x1f43c;本文由…

道可云元宇宙每日资讯|上海开放大学发布“智慧学习中心元宇宙”

道可云元宇宙每日简报&#xff08;2024年2月19日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 上海开放大学发布“智慧学习中心元宇宙” 上海开放大学首次发布了“智慧学习中心元宇宙”&#xff0c;初步构筑了上海开放大学5g元宇宙孪生学习环境&#xff0c;13所…

前端简单知识复习

1.symbol类型 Symbol 是 ECMAScript 6 中引入的一种新的基本数据类型&#xff0c;它表示独一无二的值。Symbol 值是通过 Symbol() 函数创建的。 Symbol 值具有以下特点&#xff1a; 独一无二性&#xff08;唯一性&#xff09;&#xff1a;每个通过 Symbol() 函数创建的 Symb…

Java面试题之Spring相关问题(持续更新)

1.spring是如何简化开发的&#xff1f; 基于POJO的轻量级和最小侵入编程&#xff1b;通过依赖注入和面向接口实现松耦合&#xff1b;基于切面&#xff08;AOP&#xff09;和惯例进行声明式编程&#xff1b;通过切面和模板减少样式代码&#xff0c;RedisTemplate&#xff0c;xx…

Python初学者必知的50个基础问题与解答

以下是一些常见的Python基础学习问题及其答案,希望对大家有所帮助&#xff1a; Python是什么类型的编程语言&#xff1f; Python是一种通用、高级、解释型的编程语言. Python中如何注释代码&#xff1f; 使用#符号添加单行注释,或使用三引号(""")添加多行注释.…

基于RBAC的权限管理的理论实现和权限管理的实现

权限管理的理论 首先需要两个页面支持&#xff0c;分别是角色管理和员工管理&#xff0c;其中角色管理对应的是角色和权限的配合&#xff0c;员工管理则是将登录的员工账号和员工所处的角色进行对应&#xff0c;即通过新增角色这个概念&#xff0c;让权限和员工并不直接关联&a…

Error creating bean with name ‘formContentFilter‘ defined in class path

问题描述 运行之前能正常的项目出现以上报错&#xff0c;提示创建“formContentFilter”时错误&#xff1b;org.springframework.boot版本2.4.8 org.springframework.beans.factory.BeanCreationException. Message: Error creating bean with name formContentFilter define…

202428读书笔记|《风吹哪页读哪页》——答案在路上,自由在风里,身处井隅,心向璀璨

202428读书笔记|《风吹哪页读哪页》——答案在路上&#xff0c;自由在风里&#xff0c;身处井隅&#xff0c;心向璀璨 文前篇章一 三餐四季篇章二 山水一程篇章三 心之安处篇章四 通关时刻篇章五 瞬间长大 《风吹哪页读哪页》飞扬文室编著&#xff0c;有很多非常经典又惊艳的句…

[hgame 2024 week1] crypto/pwn/reverse

第1周是入门题,作了3项的454道 Crypto 奇怪的图片 好像是个misc走错门了,给了一个程序和一堆图片,程序很长,但是看起来并不复杂 先用随机数生成一个图,和一个key(两个图),然后依次给这个图画上flag前i个字符,比如第1张是h,第2张是hg,依次类推.并且生成的图片名字是随机的,时…

4款AI写作软件推荐,让文章撰写更加轻松! #学习方法#知识分享

国外ChatGPT爆火&#xff0c;AI写作在国内也引起不小的瞩目&#xff0c;目前国内的AI写作工具少说也有几十上百个&#xff0c;要在这么多AI写作中找出适合自己的工具&#xff0c;一个一个尝试是不太现实的&#xff0c;所以今天就给大家推荐一些款AI写作工具。帮助你少走弯路&am…

【洛谷题解】P1051 [NOIP2005 提高组] 谁拿了最多奖学金

题目链接&#xff1a;[NOIP2005 提高组] 谁拿了最多奖学金 - 洛谷 题目难度&#xff1a;普及- 涉及知识点&#xff1a;判断条件&#xff0c;累加 题意&#xff1a; 分析&#xff1a;直接统计&#xff0c;判断条件&#xff0c;输出即可&#xff08;水&#xff09; AC代码&am…

Stable Diffusion 绘画入门教程(webui)

文章目录 一、前言二、做出的效果三、SD使用流程1、大模型2、关键字3、调参数 一、前言 随着mj和sd绘画软件发布之后&#xff0c;AI绘画开始爆火&#xff0c;很多小伙伴已经挖掘出很多的玩法&#xff0c;哪怕最基础的AI美女、AI壁纸、真人漫改等等都赚的盆满钵满&#xff0c;当…

【Flink】FlinkSQL读取hive数据(批量)

一、简介: Hive在整个数仓中扮演了非常重要的一环,我们可以使用FlinkSQL实现对hive数据的读取,方便后续的操作,本次例子为Flink1.13.6版本 二、依赖jar包准备: 官网地址如下: Overview | Apache Flink 1、我们需要准备相关的jar包到Flink安装目录的lib目录下,我们需…

LeetCode 2744.最大字符串配对数目

给你一个下标从 0 开始的数组 words &#xff0c;数组中包含 互不相同 的字符串。 如果字符串 words[i] 与字符串 words[j] 满足以下条件&#xff0c;我们称它们可以匹配&#xff1a; 字符串 words[i] 等于 words[j] 的反转字符串。 0 < i < j < words.length 请你返…

NC文件不规则裁剪(利用shp文件裁剪)(三)

文章目录 前言实例数据代码部分需要的库加载文件写入地理信息裁剪NC结果 完整代码奉上 前言 Hello大家好呀&#xff0c;最近正好需要用到多个SHP去裁剪NC&#xff0c;按照我以前的两种办法&#xff08;办法1和办法2&#xff09;操作的话&#xff0c;我自己都会破防&#xff0c…

Halcon中打开摄像机

&#xff08;带货广告&#xff1a;需要该套测试设备或者工业相机的及其相关产品的&#xff0c;请私聊我&#xff09; 1、相机说明 使用Basler相机&#xff0c; 2、打开Halcon助手 3、检测相机 4、连接摄像机和采集画面 5、自动生成代码 生成代码后&#xff0c;保存工程到本…

用java整理所有磁盘上的图片/文档到我们指定的磁盘下文件里面,并删除原来的路径下的图片

图片 package com.lpc.utils;import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.List;public class ImageFinder {public static void main(String[] a…

FreeRtos任务调度

一.创建任务函数 xTaskCreate( (TaskFunction_t )start_task, /*要执行的函数&#xff0c;开始任务*/(const char* )"start_task", /*任务名字&#xff0c;建议个函数名一样*/(uint16_t )START_STK_SIZE, (void* …

【PX4-AutoPilot教程-TIPS】PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法

PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法 问题描述解决方法 问题描述 无人机在Gazebo中飞行时&#xff0c;无人机始终处于画面中央&#xff0c;会带着视角乱晃&#xff0c;在Gazebo中进行任何操作视角都无法固定。 观察Gazebo左侧Wo…

最全软件测试面试问题和回答,全文背熟不拿下offer算我输!

求职&#xff0c;类似于打仗&#xff0c;是一场挑战自己的战斗&#xff0c;也是一场跟用人单位的博弈&#xff0c;更是一场千人过独木桥的厮杀、混战。《孙子谋攻篇》中早就说了&#xff1a;"知己知彼&#xff0c;百战不殆&#xff1b;不知彼而知己&#xff0c;一胜一负&a…