Mina之账户模型
为了能真正提升自己的能力,而不是机械低效的Ctrl + C / Ctrl + V,先从基本概念入手,利用ChatGPT来弄懂Mina。
Mina
Mina Protocol 是一种轻量级区块链,被称为“世界上最轻的区块链”。其目标是通过极小的链上数据大小和强大的隐私保护技术解决传统区块链的扩展性和隐私问题
特点
-
固定大小的区块链
- Mina 的区块链大小始终保持约 22 KB(相当于几条推文的大小)。
- 采用 zk-SNARKs(零知识证明)的递归压缩技术,无需存储完整的区块链历史。
-
轻量化与去中心化
- 用户可以运行一个完整的 Mina 节点,硬件需求极低(如普通手机或笔记本电脑)。
- 降低了参与区块链网络的门槛,增强了去中心化。
-
zkApps(零知识应用)
- Mina 提供基于零知识证明的智能合约(zkApps),允许构建具有隐私保护功能的去中心化应用。
- zkApps 支持在不泄露数据的情况下验证交易逻辑。
-
隐私优先
- Mina 使用零知识证明保护链上交易和账户状态的隐私。
- 用户可以证明某些条件成立(如拥有资产或满足某条件),而无需暴露详细数据。
-
与 Web3 集成
- Mina 致力于成为 Web3 的轻量级入口,通过 zkApps 实现与现有区块链和互联网的无缝连接。
Mina账号模型
组成
-
Public Key(公钥)
- Mina 中的账户由公钥标识。
- 公钥是通过私钥生成的,用户通过签名交易来证明对账户的控制权。
-
Nonce
- 每当用户发送一笔交易,
nonce
值会递增,确保每笔交易的唯一性。 - 用于防止重放攻击。
- 每当用户发送一笔交易,
-
Balance(余额)
- 账户的代币余额,单位是 Mina Token。
- 用于支付交易费用(手续费)和账户操作。
-
Account State(账户状态)
- 包含账户相关的状态信息,例如 zkApp 的存储状态(如果账户是 zkApp 合约账户)。
-
Permissions(权限)
- 定义账户的操作权限,例如更新账户状态的权限、发送交易的权限等。
- zkApp 的权限控制特别重要,因为它涉及到谁可以调用合约方法。
-
Delegate(委托人)
- Mina 使用权益证明(Proof of Stake, PoS)作为共识机制,账户可以将其权益(余额)委托给验证者(Validator)。
- 委托不需要转移资金,委托权仅影响共识机制中的投票权。
-
zkApp 信息
-
如果账户是 zkApp 合约账户,它还会存储 zkApp 的相关信息:
- 合约代码(被 zk-SNARK 编译后存储)。
- 验证密钥,用于验证 zkApp 的零知识证明。
-
类型
普通账户
-
标准用户账户,用于存储 Mina Token 和发送交易。
-
典型功能:
- 接收和发送 Mina Token。
- 委托权益给验证者。
- 支付交易费用。
zkApp 合约账户
-
特殊账户,用于部署和运行 zkApps(Mina 的智能合约)。
-
具有额外的属性:
- 存储 zkApp 状态。
- 包含验证 zk-SNARK 的逻辑。
-
zkApp 合约账户只能通过零知识证明来改变其状态,确保链上的隐私和效率。
存储与状态管理
-
轻量级状态存储
- Mina 使用 zk-SNARK 技术压缩整个链的状态,因此链上的每个账户状态都可以通过零知识证明快速验证,而不需要存储完整历史记录。
-
状态更新
- 当账户的余额、nonce 或 zkApp 状态发生变化时,这些变化会被打包到新的区块,并通过 zk-SNARK 更新全网状态。
-
账户初始化
- 账户在 Mina 上首次出现时,需要被 "初始化"。
初始化通常通过发送交易或部署 zkApp 合约完成
。- 未初始化的公钥不会被视为链上的账户。
相关操作
- 账户初始化
- 当某个公钥首次接收 Mina Token 或 zkApp 部署时,该账户会在链上注册。
- 账户交易
-
Mina 的每笔交易都需要:
- 签名:用私钥签名交易,证明操作权限。
- Nonce:保证交易唯一性。
- zkApp 状态更新
- zkApp 合约账户的状态只能通过零知识证明和链上的合约逻辑来修改。
- 状态更新需要验证 zk-SNARK 的有效性。
独创性
- zk-SNARK 压缩链上状态
- Mina 的区块链大小固定,账户状态由 zk-SNARK 的递归证明管理。
- 每个账户的状态更新会通过 zk-SNARK 验证并合并到全局状态。
- 轻量化账户
- 账户模型设计高度简洁,普通账户和 zkApp 合约账户都围绕 "状态压缩" 进行优化。
- 权限控制
- zkApp 合约账户允许开发者设置精细的权限规则,确保只有经过验证的交易或方法调用能够更新账户状态
优势
-
轻量级与高效性
- 不需要存储所有历史交易,只存储必要的状态信息。
- 节省了存储和验证资源。
-
强大的隐私支持
- zk-SNARK 技术保护了账户状态更新的隐私性。
- zkApp 状态更新可以在不公开输入数据的情况下完成。
-
灵活性
- 支持普通账户和 zkApp 合约账户的多样化需求。
- 提供细粒度的权限控制,适应不同场景
更多相关内容,,,https://t.me/+XB-mhZfcnQExOTdl
相关文章:
Mina之账户模型
为了能真正提升自己的能力,而不是机械低效的Ctrl C / Ctrl V,先从基本概念入手,利用ChatGPT来弄懂Mina。 Mina Mina Protocol 是一种轻量级区块链,被称为“世界上最轻的区块链”。其目标是通过极小的链上数据大小和强大的隐私…...
STM32 ADC 配置
ADC(模数转换器)用于将模拟信号转换为数字信号,以便单片机处理。 模数转换器(Analog-to-Digital Converter, ADC)是电子系统中不可或缺的一部分,它负责将现实世界中的连续物理量,如温度、声音、…...
练9:进制转换
欢迎大家订阅【蓝桥杯Python每日一练】 专栏,开启你的 Python数据结构与算法 学习之旅! 文章目录 1 进制转换2 例题分析 1 进制转换 ①任意制转为十进制 【示例】 ②十进制转为任意制 【法一】 【法二】 2 例题分析 题目地址:https:/…...
善于运用指针--函数与指针
文章目录 前言一、函数的指针二、函数指针运用 1函数名地址2指针变量调用函数3指向函数的指针变量做函数参数二、返回指针值的函数总结 前言 如果在程序中定义了一个函数,在编译时会把函数的源代码转换为可执行代码并分配一段空间。这段空间有一个起始地址…...
Microi吾码低代码平台:前端源码的本地运行探索
文章目录 1.前端源码运行环境要求1.1 操作系统1.2 必备软件工具1.3 项目源码依赖 2.从Git仓库克隆前端源码3.安装项目依赖4.启动本地开发服务器5.常见问题与解决方案5.1 依赖安装失败5.2 端口冲突5.3 代码更新未生效 6.提升本地开发体验的技巧6.1 使用代理解决跨域问题6.2 集成…...
十一、容器化 vs 虚拟化-Docker 使用
文章目录 前言一、Docker Hello World二、Docker 容器使用三、Docker 镜像使用四、Docker 容器连接五、Docker 仓库管理六、Docker Dockerfile七、Docker Compose八、Docker Machine九、Swarm 集群管理 前言 Docker 使用 Docker 容器使用、镜像使用、容器连接、仓库管理、Do…...
实践项目2-自动计价电子秤
自动计价电子秤 一、功能说明 基于AVR单片机设计一自动计价电子秤。根据输入的价格以及检测的重量自动计算总价并打印(串口模拟)。 二、具体要求 1、开机后实时检测重量并显示; 2、通过按键输入并显示价格,具有修改功能&#…...
iOS如何操作更新推送证书
最近收到一份邮件,应该如何操作呢,证书还是跟以前一样冲钥匙串直接申请吗 Hello, As we announced in October, the Certification Authority (CA) for Apple Push Notification service (APNs) is changing. APNs will update the server certificates in sandbox on January…...
WSL2 在vscode无法连接copilot
报错情况: 本机可以使用copilot,但在WSL2上无法连接,报错信息如下: 检查网络情况: ping api.github.com 发现无法连接: github.com:Temporary failure in name resolution 在网上搜集的解决方法&#…...
HTA8998 实时音频跟踪的高效内置升压2x10W免电感立体声ABID类音频功放
1、特征 输出功率(fIN1kHz,RL4Ω,BTL) VBAT 4V, 2x10.6W(VOUT9V,THDN10%) VBAT 4V, 2x8.6W (VOUT9V,THDN1%) 内置升压电路模式可选择:自适应实时音频跟踪 升压(可提升播放时间50%以上)、强制升压 最大升压值可选择,升压限流值可设置 ACF防破音功能 D类…...
用ChatGPT-o1进行论文内容润色效果怎么样?
目录 1.引导问题发现 2.角色设定 3.整理常问修改 4.提供样例 5.小细节 小编在这篇文章中分享如何充分利用ChatGPT-o1-preview来提升论文润色的技巧。小编将持续跟进最新资源和最新的调研尝试结果,为宝子们补充更多实用的写作技巧。这些技巧将有助于您更有效地利…...
《探索 Jetpack Compose:构建现代化 Android UI 的利器》
Jetpack Compose 是谷歌推出的现代化 UI 框架,用于简化 Android 应用开发中的 UI 构建。它使用声明式编程方式,允许开发者以简洁直观的方式创建动态和响应式的 UI。本文将从基础概念到进阶用法,带你全面了解 Compose 的核心功能和使用技巧。 …...
cocos creator 的 widget组件的使用及踩坑
以下的内容基于cocos creator 3.8版本,如有错误,恳请指出。 👉官方文档的指引 应用:以上官方指引有非常清晰的使用方式,接下来说明一些注意事项: 1、与canvas搭配的使用,解决多分别率适配问题。…...
Baumer工业相机的EMVA1288 数据报告简介
项目场景: Baumer工业相机堡盟VCX系列和VLX系列为堡盟全系列相机中的主流常用相机和高端相机,性能强大、坚固可靠,易于集成,常用与一般行业的检测定位识别使用。 对应的高端相机系列具有极为丰富的强大技术功能,可轻…...
Docker 安装 中文版 GitLab
Docker 安装系列 安装GitLab、解决服务器内存不足问题、使用域名/IP地址访问项目 1、拉取 [rootTseng ~]# docker pull twang2218/gitlab-ce-zh:latest latest: Pulling from twang2218/gitlab-ce-zh 8ee29e426c26: Pull complete 6e83b260b73b: Pull complete e26b65fd11…...
uni-app 个人课程表页面
uni-app 个人课程表页面 插件参考地址 大部分代码都是参考了上述代码,只对代码做出了优化 1. 页面模板 在 schedule.vue 文件中,编写页面结构: <template><view><u-navbar title"个人中心"><view class&q…...
FPGA工作原理、架构及底层资源
FPGA工作原理、架构及底层资源 文章目录 FPGA工作原理、架构及底层资源前言一、FPGA工作原理二、FPGA架构及底层资源 1.FPGA架构2.FPGA底层资源 2.1可编程输入/输出单元简称(IOB)2.2可配置逻辑块2.3丰富的布线资源2.4数字时钟管理模块(DCM)2.5嵌入式块 …...
【OpenCV】平滑图像
二维卷积(图像滤波) 与一维信号一样,图像也可以通过各种低通滤波器(LPF)、高通滤波器(HPF)等进行过滤。LPF 有助于消除噪音、模糊图像等。HPF 滤波器有助于在图像中找到边缘。 opencv 提供了函数 **cv.filter2D()**&…...
LeetCode300. 最长递增子序列(2024冬季每日一题 30)
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的 子序列。 示例 1&…...
vue H5如何实现copy功能
vue H5如何实现copy功能 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><link rel"stylesheet" href"https://unpkg.com/vant2.12/lib/index.css" /><title></title><st…...
Golang使用etcd构建分布式锁案例
在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统。分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要。它有助于维护一致性,防止竞争条件,并确保在任何给定时间只有一个进程独占访问资源。 我们将使用Go作为编程语言&am…...
Windows 和 Ubuntu 双系统安装
复现论文的时候,个别包只有Linux版本,并且源码编译比较麻烦,所以干脆直接安装一个双系统(WinUbuntu),方便复现论文。 参考视频链接:Windows 和 Ubuntu 双系统的安装和卸载 0.所需工具 4G以上U…...
多媒体文件解复用(Demuxing)过程
多媒体文件的解复用(Demuxing)过程指的是从一个多媒体容器文件(如 MP4、MKV、AVI 等)中提取不同类型的多媒体数据流(例如视频流、音频流、字幕流等)的过程。 容器文件本身并不包含实际的视频或音频数据&…...
从 Zuul 迁移到 Spring Cloud Gateway:一步步实现服务网关的升级
从 Zuul 迁移到 Spring Cloud Gateway:一步步实现服务网关的升级 迁移前的准备工作迁移步骤详解第一步:查看源码第二步:启动类迁移第三步:引入 Gateway 依赖第四步 编写bootstrap.yaml第五步:替换路由配置第六步&#…...
qt之插件编译
QtXlsxWriter sudo apt install qtbase5-private-dev git clone https://github.com/dbzhang800/QtXlsxWriter.git cd QtXlsxWriter/ qmake make -j6 sudo make install #将生成的lib 及 include copy至项目路径的lib 及include里项目配置: QT xlsxbluetoo…...
pandas一行拆成多行
import pandas as pd df pd.DataFrame({Country:[China,US,Japan,EU,UK/Australia, UK/Netherland],Number:[100, 150, 120, 90, 30, 2],Value: [1, 2, 3, 4, 5, 6],label: list(abcdef)})# 法一 推荐 df2df.drop(Country, axis1).join(df[Country].str.split(/, expandTrue).…...
今天调了个转速的小BUG
同事说转速表有个bug,转速停止后,继电器没有恢复到初始状态。若停止之前是报警,继电器吸合,则停止后继电器还是吸合。我心想不会啊,这软件都弄了好几年了,一直也没出现过状况。 经过与调试同事的沟通&#…...
第三节、电机定速转动【51单片机-TB6600驱动器-步进电机教程】
摘要:本节介绍用定时器定时的方式,精准控制脉冲时间,从而控制步进电机速度 一、计算过程 1.1 电机每一步的角速度等于走这一步所花费的时间,走一步角度等于步距角,走一步的时间等于一个脉冲的时间 w s t e p t … ……...
从一个Bug谈前端响应拦截器的应用
一、问题场景 今天在开发商品管理系统时,遇到了一个有趣的问题:当添加重复的商品编号时,页面同时弹出了两条 "商品编号已存在" 错误提示: 这个问题暴露了前端错误处理机制的混乱,让我们从这个问题出发&…...
JS进阶DAY4|节点操作
嘿👋 今天我们要一起深入探索JavaScript中的DOM操作,这是前端开发中不可或缺的技能。🌟 准备好了吗?让我们一起跳进DOM的海洋,看看怎么用代码操控网页的结构吧! 目录 1. 增加节点 1.1 使用 appendChild 方…...
江苏省建设工程施工安全网站/今天最新新闻摘抄
https://blog.csdn.net/hbcui1984/article/details/2720204 在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件、下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载…...
网上注册公司价格/seo从零开始到精通200讲解
1.以下是成功的代码,直接复制到.pro文件中,必须要重新构建才能执行;其他执行qmake,构建,运行都不行。 注意事项:必须是重新构建; SrcIncludeFile $$PWD/*.hSrcIncludeFile $$replace(SrcIncl…...
如何简单制作奶粉/建网站seo
题目解决代码及点评 这道题和上一道题类似,第n个累加项 n-1累加项的n倍 由于有这个规律,我们可以用一个for循环实现 但是例子代码并没有这么做,大家可以回去修改下代码,使得代码…...
泉州网站建设科技公司/谷歌浏览器网页版
【docker-lnmp架构搭建】 因公司的业务架构需要,要部署一套docker-lnmp,这边自己之前只是对于docker了解只是一般,在搭建过程中也在网上参考过很多资料,期间也遇见过很多坑,很让人抓狂,多的不说了,这边我直接附上自己的搭建过程 第一步&#…...
苏州网站建设招标/seo如何优化排名
简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。 本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解…...
cs4建立网站站点/自动引流推广软件
Web Page Not Found tel:0000000000唯一可行的链接是“http:”和“https”任何人都可以帮我吗?private class HelloWebViewClient extends WebViewClient {Overridepublic boolean shouldOverrideUrlLoading(WebView webview, String url){webview.loadU…...