区块链研究实验室 | 基于substrate创建Ink智能合约-part2

产业园区在推动科技成果转化过程中,如何实现企业与高校的精准对接?.docx 科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。 立即下载

Ink是一种智能合约语言,专门用于基于Substrate的区块链。我们将访问minting、transfer和approval函数的实现,并解释在开发中遇到的语法。Ink建立在Rust编程语言之上,因此我们将在这里探讨一些Rust概念以及它们如何与我们的智能合约一起工作。

在这篇文章继续之前,建议阅读一下上一篇文章,我们介绍了Ink,如何将它与Rust和Substrate一起安装,以及Ink语法如何在高级别上与Solidity不同。

上一篇文章对Ink智能合约的结构进行了分解;在这里我们将更详细地访问该实现。回顾如下,结构如下:


模块声明

Ink不依赖于Rust标准库 - 而是导入Ink模块来编写所有合同逻辑。 让我们快速浏览一下我们导入智能合约的内容:

我们在这里公开智能合约中需要使用哪些模块,导入storage 和memory的ink_core重要模块,以及一些env对象,关键数据,例如地址的调用者。 此外,已经从parity_codec声明了Encode和Decode,用于将事件编码为原始格式。

在模块声明之前,您还会注意到以下内容:

如果我们运行测试模块,或者如果我们在代码中使用std功能标志,则该行声明我们正在使用标准库。 否则合同将始终使用no_std进行编译。 Ink合约不使用Rust标准库,因此除非我们明确定义它,否则它将从编译中省略。

事件定义

Event,也可以看作是区块链通知也是智能合约的一个重要方面;它们在发生事情时主动地发出数据,允许DAPP以实时方式对其作出反应。因此,我们的NFTOKEN合同定义了3个事件:minting、transfer和Approval。

它们是在我们的contract! 之前定义的宏。mint事件期望在调用或发出事件时提供accountID和u64值:

accountID类型由ink core提供;如果您回忆上一节,我们通过ink_core中的env模块的破坏语法导入了这两种类型。accountID代表一个帐户(相当于以太坊的地址类型)。另一个可用的类型是balance,它是u64类型,或者64位无符号整数。

注意:我们可以使用Balance类型代替u64来表示标记值。 尽管Balance类型最好与令牌值一起使用,但我在使用类型时遇到了一些歧义,其中编译的合同不喜欢在Balance值中添加u64值。 可以想象,随着Ink的进一步发展,Balance将在未来得到增强,提供更多属性,进一步代表Balance,例如单位类型。 一旦围绕其使用的模糊性被清除,将在NFToken合同中实施余额。

我们还在事件定义下面定义了一个private deposit_event函数:

这只是一个包含Inks提供的deposit_raw_event函数的事件函数,期望将编码事件作为其唯一参数。

注意:env :: deposit_raw_event函数调用后没有分号? 在Rust中,从函数的最后一个表达式中省略分号会返回该表达式的结果,从而无需编写return,但如果您想要进一步返回该函数,则完全有效。

关于Rust的所有权机制的说明

要理解的另一个重要的Rust(因此Ink)编程概念是所有权。 我们的deposit_event功能使用所有权。 在env :: deposit_raw_event中查看Event参数之前的&used:

在rust中,&表示对对象的引用。

如果我们没有使用引用,env :: deposit_raw_event将获取事件的所有权,因此将不再可用于deposit_event()。 event将“move”到包含函数中,并且不再在外部函数的范围内。 如果我们在此之后尝试使用event,则会收到错误,因为该范围中不再存在event。

即使我们的deposit_event()函数只有一行代码,因此将event移出作用域不会对函数的其余部分产生影响,env::deposit_raw_event实际上需要一个引用。查看删除引用时收到的错误:

 

在处理Rust所有权时,编辑器非常有用,并且会在尝试编译程序之前确保解决所有权问题。 在这种情况下,它实际上告诉我们如何在帮助部分下修复此错误。

要阅读有关Rust所有权的更多信息,The Rust Book有一个很棒的部分解释了这些概念; 在努力进入Ink智能合约编程之前,建议了解Rust的所有权。

通过定义我们的事件(以及用于发出这些事件的辅助函数),现在让我们探讨 contract!的内容 宏本身。

智能合约变量

智能合约变量可以被认为是通过self在函数内访问的类属性。 以下是我们的NFToken合同的合约变量:

前两个变量的类型为storage :: Value,以及以下三个storage :: HashMap。 事实上,ink_core storage模块必须用于我们希望在链上持久存在的任何合同数据。

storage类型是通用的,因此我们在尖括号中明确提供了我们存储的数据类型。

通过定义所需的合同数据,让我们探讨一些合同实现,突出显示一些关键逻辑和语法。

智能合约部署

部署函数在任何Ink智能合约中都是强制的,并且在部署到一个链上时实例化一个智能合约时被调用。

将deploy()函数包含在impl Deploy for <contract_name>块中。 部署的实际实施非常直接; 

我们只是在这里设置默认值,添加了一些初始令牌铸币。 我们接下来将探讨minting实施。

minting实施

Minting是生成新令牌的过程。 对于我们的NFToken合同,Minting需要满足以下条件:

  1. 每个标记必须具有由token_id表示的唯一索引

  2. 需要提供AccountId来填充令牌

  3. 只有合同所有者才能铸造新的代币

  4. 声明公共函数mint()来处理对mint标记的调用:

声明公共函数mint()来处理对mint标记的调用:

Mint接受两个论点:minting账户和数量,函数签名的第一个参数始终是对self的引用。 此外,我们还可以包含mut来声明self可以更新,实质上是为合同实例提供了一个可变引用。

mint()调用私有mint impl()函数,该函数执行实际的minting过程。这种通过公共函数公开私有函数的模式对于传输和批准也是一致的。

mint_impl()将执行以下任务:

  • 设计出第一个新的TokKyId和最后一个TKEN ID。这是根据self.total创建的合同变量计算的。

  • 我们定义一个for循环,它将增加标记id并将每个标记id插入self.id_to_owner哈希映射。此循环的特定语法很有趣,采用了for-in结构,并采用了spread运算符:

Ink的HashMap实现与标准的Rust实现非常相似。 insert()将向我们的映射添加一条新记录。 查看我们可以操作HashMap的所有方法的完整参考。

关于解除引用的说明,附*

 

要获得合同变量的原始值,我们需要“取消引用”它们。 解除引用的概念在The Rust Book中有详细解释,但基本上解除引用允许我们获取指针或引用的基础值。

让我们看看我们如何计算mint_impl()中的start_id作为使用解除引用的示例:

将鼠标悬停在self.total上会显示我们需要取消对storage::value的引用以获取基础的U64值。与引用类似,编辑器非常智能,当表达式没有意义时(例如,尝试向storage::value对象添加1,这将导致错误),编辑器就会意识到这一点。

尽管可能不建议将取消引用作为修复方法,但一旦在编辑器中指出错误,程序员就应该知道这一点。

一旦新的令牌被分配给id_to_owner,所有者_to_token_count映射也会更新,反映出所有者拥有的新令牌数量。此外,total-minted也会更新以反映新铸造的代币。

您可能已经注意到我们更新owner_to_token_count哈希映射的方式在首次检查时可能会有些混乱。 以下是执行此操作的代码行:

第一行代码尝试使用get()从哈希映射中检索现有令牌计数,或者如果找不到,则将0的值赋给from_owner_count。下一行应该很熟悉,我们使用insert()插入新记录或覆盖现有记录。

但unwrap_or()实际上做了什么? 好吧,get()实际上返回一个Option枚举,而不是返回令牌计数本身,然后我们可以在值存在的情况下解包。 如果某个值不存在,我们可以提供一个替代值,作为unwrap_or()的参数,在上述情况下为0。

让我们进一步简要探讨这个概念; 它不仅用于合同的其他领域,它也是Rust的基本设计模式。

了解Rust选项枚举

正如我们已经确定的那样,从HashMap契约变量中获取值实际上会产生Option枚举。 Rust中的Option枚举提供了两个可能的值:Some或None。 这基本上避免了空值,在值不存在的情况下返回None。

现在,我们的NFToken智能合约中使用的一个常见约定是首先检查HashMap中是否存在值,并在返回None选项的某些情况下返回false。 在存在Some值的情况下,我们然后在Option值上使用unwrap修饰符来获取Some包装的值。

is_token_owner()函数是遵循此模式的一个示例:

与使用unwrap_或()(如前一个示例中)不同,unwrap()只是假设所有者是Some选项; 我们已经处理了owner是一个none值的情况,因此可以安全地假设存在一个要unwrap的值。

为了结束is_token_owner(),我们检查检索到的令牌所有者是否与我们在函数调用中提供的AccountId匹配:

我们现在已经涵盖了mint_impl()的大部分内容。函数的最后一行发出一个事件,我们将其定义为一个私有函数: 

我们的私有事件发出函数通过断言简单地检查传入的值是否有效,然后调用早先声明的SaveItIGIVER事件()函数。

我们的铸造实施已经向我们介绍了在合同实施的其余部分中使用的概念和约定。让我们访问传递函数文本。

转移实施

转让代币可以说是我们合同中最重要的特征,允许我们将代币转移到账户和从账户转移代币。 public transfer()函数可用于发送传输请求,并具有以下签名:

此函数调用private transfer_impl()函数来执行实际的传输逻辑。确保满足以下条件进行转移:

  1. 我们立即检查调用者是否是令牌所有者,如果不是,则返回false

  2. 更新id_to_token映射,将token_id索引的值覆盖到新所有者的帐户

  3. 更新令牌计数,减少发件人的计数并增加接收者的计数

  4. Transfer事件通过emit_transfer()发出

可以说,这是一个比生成过程更简单的函数,这种传输实现允许令牌单独发送。这里的基本机制只是更新id_to_owner映射,跟踪谁拥有什么。从这里开始,发件人和收件人owner_to_token_count记录也会更新,以跟踪个人帐户所拥有的令牌。

NFTOKEN的最后一个功能是能够批准另一个帐户代表您发送令牌。让我们看看这是如何工作的。

批准实施

批准是一种机制,通过该机制,令牌所有者可以指派其他人代表他们转移令牌。 为此,专门用于批准或拒绝特定token_id的帐户的附加功能。

注意:在进一步开发Ink语言之前,合同目前仅限于每个令牌一次批准。

公共approvals()函数在被调用时接受三个参数:

  • 我们正在添加或删除批准的token_id

  • 我们希望批准或拒绝AccountId

  • 批准的布尔值,表示我们是要批准还是拒绝AccountId

Approvals()的签名如下所示:

审批流程归结为以下逻辑,确保只有令牌所有者才能进行审批,并且可以成功插入或删除审批:

  • 我们首先通过id_to_owner映射检查令牌的所有者是否存在。 这里的None值表明令牌不存在,在这种情况下我们退出该函数。

  • 在成功获取令牌的情况下,我们检查调用者(env.caller())是否确实是我们正在配置批准的令牌的所有者。 如果没有,我们退出该函数,再次返回false。

  • 接下来,我们尝试获取现有的批准记录:

  • 如果不存在批准记录,我们会参考批准,以查看调用者是打算批准还是拒绝提供的帐户。 如果调用者确实希望批准,则将提供的帐户添加到批准中。 如果没有,将无法删除任何内容,因为找不到记录 - 我们返回false。

  • 如果存在批准记录,则使用unwrap()解包该值,并再次检查调用者的意图。 如果打算拒登,我们会通过HashMap remove()方法从批准中删除记录。 另一方面,如果调用者打算插入(或更新)批准,我们会再次插入记录,覆盖现有记录。

  • 最后,发出Approval事件,我们返回true:

最后,以上是关于Ink NFToken合同实施的讨论。  

本文转载公众号:区块链研究实验室,专注区块链技术,产品社群,经济模型等全方位的知识体系输出,为大家带来不一样的社群学习体验。欢迎联系作者微信加入社群:csschan1120

项目实战:用西门子S7协议开发基于PLC的上位机.pdf 立即下载

相关推荐

产业园区如何高效挖掘企业技术需求并促进精准匹配?.docx

产业园区如何高效挖掘企业技术需求并促进精准匹配?

如何运行Substrate智能合约节点

如何运行Substrate智能合约节点 项目介绍 Substrate Contracts Node 是一个专为智能合约设计的简化版Substrate区块链,通过pallet-contracts集成智能合约功能。它非常适合那些寻求快速上手开发和测试环境的用户。此项目启用了pallet-contracts的不稳定特性,调整了共识算法至手动封印(manual-seal),允许开发者在每次交易时即时生成区...

gitblog_00740的博客 657

国央企创新负责人如何降低科技成果转化服务成本并提升资源配置效率?.docx

国央企创新负责人如何降低科技成果转化服务成本并提升资源配置效率?

Substrate 入门必读:助力开发者打造强大、灵活的区块链

Substrate 代码的位置在 Polkadot SDK 存储库中:Substrate 是一个用于构建区块链的 Rust 语言框架,目前已经有 100 多个基于 Substrate 的区块链在开发构建中运行。以上视频是本文的简短版本。你可以查看 sub0 Asia 2024 中关于 Substrate 的演讲介绍。

CryptoBuffett的博客 1952

数字政府政务数据治理服务平台方案.pptx

数字政府政务数据治理服务平台方案.pptx

该数据集收录了国内主要期货商品和股指指数的日频行情 商品期货覆盖有色、黑色、能化、农产品等板块,包含铜、螺纹钢、原油、豆粕等活跃合约 股指指数部分涵盖沪深300、上证50、中证500等品种 每个品种提

该数据集收录了国内主要期货商品和股指指数的日频行情。商品期货覆盖有色、黑色、能化、农产品等板块,包含铜、螺纹钢、原油、豆粕等活跃合约。股指指数部分涵盖沪深300、上证50、中证500等品种。每个品种提供统一字段:合约代码、交易日期、开盘价、最高价、最低价、收盘价、结算价、成交量和持仓量。数据按交易日顺次排列,未做复权处理,直接反映交易所原始发布信息。 数据源:CMES金融数据库

10M polkadot substrate : 你的第一份合约

Rust 区块链 blockchain Substrate 波卡 polkdadot

wx468116118的博客 603

KernelSU.zip

KernelSU.zip

10O polkadot substrate : 开发智能合约

Rust 区块链 blockchain Substrate 波卡 polkdadot

wx468116118的博客 1098

产业园区运营负责人如何精准匹配产业需求与科技成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

单相PWM整流器基于直流电流控制+虚拟dq两种闭环控制仿真【2个仿真+参考资料】

内容概要:本文介绍了单相PWM整流器的两种闭环控制策略仿真研究,即基于直流电流控制和虚拟dq变换的闭环控制方法。资源包含两个独立的Simulink仿真模型及相关参考资料,旨在对比和分析两种控制策略在动态响应、稳态精度及抗干扰能力等方面的性能差异。通过构建完整的主电路、控制回路与信号处理模块,展示了如何实现单位功率因数运行、直流侧电压稳定控制以及交流侧电流正弦化等关键目标,适用于电力电子变换器控制系统的学习与科研验证。; 适合人群:电气工程、自动化及相关专业的研究生、科研人员以及从事电力电子与新能源系统开发的工程师,具备一定的电路理论、自动控制原理和Simulink仿真基础者更佳。; 使用场景及目标:①深入理解单相PWM整流器的工作原理及其闭环控制机制;②掌握直流电流控制与虚拟dq控制两种方法的设计思路与实现步骤;③为相关课题的仿真建模、算法优化与论文写作提供参考依据和技术支持; 阅读建议:建议结合仿真模型与参考资料同步学习,重点分析控制器参数整定过程、坐标变换环节的实现方式,并尝试修改负载条件或输入扰动以测试系统鲁棒性,从而加深对控制策略本质的理解。

区块链研究实验室 | 基于substrate创建Ink智能合约

Parity的Substrate区块链框架,在最终版本开发中取得不错的进展。Ink是Parity为基于Substrate的区块链编写智能合约的解决方案。 与Substrate一样,Ink建立在Rust之上,因此遵循Rust语言规则和语法。本文将介绍一个示例在智能合约中复制一个ERC721令牌,通常称为以太坊区块链上的ERC721令牌。 这是系列文章的第1部分,将介绍创建和部署此Ink智能合约的...

willam1的专栏 1208

BQ27220燃料计量芯片与Arduino库kode_bq27220实战指南

燃料计量(Fuel Gauge)是嵌入式电池管理系统的核心技术,通过电压、电流、温度多维建模实现荷电状态(SOC)与健康状态(SOH)的动态估算。其原理基于电化学阻抗补偿算法(如CEDV),区别于简单电压查表法,具备自学习与老化适应能力。该技术显著提升便携设备续航预测精度与低功耗可靠性,广泛应用于TWS耳机、可穿戴设备及医疗电子等场景。本文围绕TI BQ27220高精度燃料计量IC及其配套Arduino库kode_bq27220展开,覆盖硬件连接规范、I²C初始化要点、SOC/SOH实时读取、EDV阈值配置

weixin_35671843的博客 331

netbeans尚未部署该模块_区块链研究实验室 | 在Substrate链上部署Ink智能合约-part3...

围绕Parity的Substrate区块链框架的开发正在顺利进行,现在可以部署基于Ink的智能合约。 在访问通过Polkadot JS客户端调用智能合约函数的方法之前,本文将介绍Ink智能合约的编译和部署过程。这是一个由3部分组成的系列文章的最后一部分,该系列探讨了从安装到部署的Substrate区块链的Ink智能合约创建过程。 上一篇专门介绍Ink合同编写过程的文章可以在这里找到:区块链研究实验...

weixin_33335851的博客 432

【机器学习】实验2,基于回归分析的大学综合得分预测(完整代码实现+分析)

大学排名是一个非常重要同时也极富挑战性与争议性的问题,一所大学的综合实力涉及科研、师资、学生等方方面面。目前全球有上百家评估机构会评估大学的综合得分进行排序,而这些机构的打分也往往并不一致。在这些评分机构中,世界大学排名中心(Center for World University Rankings,缩写CWUR)以评估教育质量、校友就业、研究成果和引用,而非依赖于调查和大学所提交的数据著称,是非常有影响力的一个。

高丽大学人工智能硕士在读|专注大模型、RAG、OCR与AI工程实践 1978

如何用Bertalign快速搞定多语言句对齐?5分钟上手教程(附避坑指南)

本文详细介绍了如何利用Bertalign工具快速实现多语言句对齐,从安装配置到实战应用的全流程指南。通过LaBSE句向量技术,Bertalign显著提升了对齐准确率,支持25种语言的任意组合,特别适合处理复杂句式。文章还提供了常见问题的解决方案和性能优化技巧,帮助用户高效完成多语言文本对齐任务。

weixin_42538752的博客 352

区块链研究实验室| 关于polkadot的substrate与runtime编译教程-part1

本文旨在介绍如何开始构建可支持您自己的Runtime模块的自定义Substrate链: 我们将通过substrate安装和设置来学习 探索substrate配置以及如何使用Polkadot JS浏览链状态 专注于介绍runtime模块的结构,这是一种为链添加功能的方法。 在substrate进行开发 substrate和并发runtime模块是用rust开发的,ru...

willam1的专栏 509

GNSS-RTK/INS紧组合里,那个‘杆臂改正’到底怎么算?一个公式讲清INS与天线位置的关系

本文深入解析GNSS-RTK/INS紧组合导航系统中的杆臂改正(Lever Arm Correction)原理与实现方法。详细介绍了杆臂效应的物理本质、数学建模及误差扰动分析,揭示了IMU与GNSS天线位置关系的核心公式,并提供了工程实现中的常见误区与验证方法。通过Python代码示例和紧组合量测模型处理流程,帮助开发者准确理解并应用这一关键技术。

weixin_33137081的博客 357

Substrate 学习记录(三):Rust 所有权、结构体 + ink! 智能合约

Rust 所有权、结构体 + ink! 智能合约前言一、Rust 的所有权二、引用三、Slice四、Rust 结构体1.定义并实例化结构体2.方法语法五、ink! 智能合约1.Setup2.Creating an ink! Project3.Building Your Contract4.Running a Substrate Canvas Node5.Deploying Your Contract6.Calling Your Contract 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人

qq_41701201的博客 1138

银行一表通监管报送系统详解

国家金融监管总局对于“一表通”的总体描述为:通过建立一套明细级、标准化的数据体系和汇总计算规则,将银行机构传送至监管可信区的业务明细数据汇总生成财务指标、监管指标和监管报表,大幅提升监管数据时效性,统一数据标准,实现数据间的穿透和整合,同时改变机构多头报送数据模式,减轻机构报送负担。

银行信息系统应用架构详解 2520

共享单车数据抓取与分析:使用Python爬虫抓取共享单车使用数据与地图信息

通过本篇博客,我们展示了如何使用Python爬虫抓取共享单车的使用数据和地图信息,并通过简单的数据分析得出有价值的见解。在实际应用中,数据的收集与分析不仅能帮助城市管理者更好地规划单车站点,还能为用户提供更精准的单车使用体验。未来,我们可以将此分析与机器学习模型相结合,进一步预测单车的使用趋势,优化调度算法,实现更加智能的共享单车管理。

2201_76125261的博客 2206

ink 合约篇(一)| 部署 ink 合约

快速上手 ink! 合约开发篇(一) —— ink! 合约的编译部署到调用ink! 合约简介简介WASM简介在合约调用前需要经历哪些步骤编译部署调用总结参考链接关于作者 ink! 合约简介 简介 WASM简介 在合约调用前需要经历哪些步骤 编译 部署 调用 总结 参考链接 关于作者 作者的联系方式: 微信:thf056 qq:1290017556 邮箱:1290017556@qq.com 你也可以通过 github | csdn | @新浪微博 关注我的动态 ...

Huifeng Tang 的博客 1万+

TMF8801 ToF激光测距传感器原理图设计,已量产(距离传感器)

这张 TMF8801 小板的外围结构就很有代表性。核心传感器是 U1 TMF8801,但真正构成量产价值的是外围那一圈:U2 把 VCC 整理成 3V,R1/R2/R5 与 R3/R4/R6 两组 10K 电阻稳定默认态,Q2 2N7002 和 U3 SN74LVC2G07DCKR 处理控制链路,传感器边上还有 C1/C4/C5 三颗 100nF 紧贴去耦。

不脱发的程序猿 159

在Substrate链上跑evm智能合约(Frontier)

文章目录frontier简介部署使用rpc接口查看账户余额连接metamask连接polkadot-js使用polkadot-js查看账户余额使用polkadot-js部署智能合约Moonbeam简介部署连接polkadot-js使用metamask查看账户状态使用remix部署智能合约 frontier 简介 Frontier 是 Substrate 的以太坊兼容层。它允许您运行未经修改以太坊 dapp。 以太坊兼容层的目标是能够: 通过兼容层运行一个普通的 web3 应用程序,使用本地节点,其中额外的

KK下山去买菜 9399

Docker:快速部署 Temporal 工作流引擎的技术指南

Temporal是一个开源的分布式工作流引擎,适用于复杂业务流程(如订单处理、支付流程等),提供状态持久化、自动重试、多语言SDK支持等特性。部署简单,支持Docker Compose,包含核心服务、Web UI及数据库。以TypeScript为例,开发者可快速编写工作流(如订单处理)和Worker,通过CLI或SDK启动和管理。Temporal简化了分布式系统的可靠性设计,适合电商、自动化任务等场景。

木头 642

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

solidity 合约权限授权_使用 Ink!开发 Substrate ERC20 智能合约

1 环境搭建1.1 安装Substrate节点$ git clone git@github.com:paritytech/substrate.git$ cd substrate(master)$ git checkout -b v2.0.0-rc4 v2.0.0-rc4切换到一个新分支 'v2.0.0-rc4'(v2.0.0-rc4)$ cargo build --release1.2 ...

weixin_39605706的博客 1853

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 区块链研究实验室 | 基于substrate创建Ink智能合约
下一篇: 区块链研究实验室 | PlasmaMVP使用javascript实现资金撤回教程
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值