自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 「Dfinity」Ingress Message Lifecycle | Inside the Internet Computer

「Dfinity」Ingress Message Lifecycle | Inside the Internet Computer原创,转载请注明出处及作者。——2022.2.25 by QiuYeDx前言本文将讲述Internet Computer的消息生命周期(Ingress Message Lifecycle)。阅读完本文,您将了解Internet Computer如何处理update方法调用,(从它到达一个节点直到它被执行的全过程)。我们将尤其讨论必须满足的条件以及我们如何确保对相关方

2022-03-04 09:56:02 198

原创 3.2「Dfinity前端」如何为你的dapp定制前端?(React+JSX)

3.2「Dfinity前端」如何为你的dapp定制前端?(React+JSX)步骤:创建一个新项目新建项目并将命令终端当前目录移至项目根目录;为项目安装 React 框架通过运行以下命令安装 React 模块:npm install --save react react-dom通过运行以下命令安装所需的TypeScript语言编译器加载程序:npm install --save-dev typescript ts-loader通过运行以下命令安装所需的CSS加载器:npm

2022-03-04 09:36:16 971 3

原创 3.1「Dfinity前端」Front-end概览

3.1「Dfinity前端」Front-end概览Internet Computer区块链允许您通过使用他们的 JavaScript 代理(agent),为您的 dapps托管 Web 3.0前端。通过使用 dfx 提供的asset canister将静态文件上传到 Internet Computer,您将能够在去中心化技术上运行您的整个应用程序。这里有一些教程的快速链接,其中包含开发前端 dapp 的不同阶段的示例代码:A tutorial on building a React dapp&nbs

2022-03-04 09:33:28 1778

原创 2.5「Dfinity」开发者免费领取Cycles并部署canister到I.C.主网

2.5「Dfinity」开发者免费领取Cycles并部署canister到I.C.主网Cycles Faucethttps://faucet.dfinity.org/一、授权GitHub账号领取免费cycles领取免费cycles点击以上按钮可前往免费领取的页面(官方给开发者的福利)。步骤很简单,页面也一步步介绍地很详细。只需要登陆你的GitHub账号(新账号不一定可以),授权之后填写你本地dfx identity的principal即可。principal获取命令:dfx identit

2022-03-04 09:32:24 253

原创 2.4「Dfinity」canister cycles相关问题

2.4「Dfinity」canister cycles相关问题一、使用dfx创建canister自定义cycles充值数量创建 canister 时可以指定给每个canister分配多少cycles,比如分配1T:dfx deploy --with-cycles=1000000000000二、可以从不用的canister回收cyclesdfx canister --network=ic stop --all或canisterIDdfx canister --network=ic delete

2022-03-03 10:52:47 264

原创 2.3「Motoko进阶」Http_Response相关问题

2.3「Motoko进阶」Http_Response相关问题Http_Response简介我们传统的访问canister的方法是通过agent代理访问,需要在支持JavaScript的环境中正常运行。但其实canister还支持Http Request访问,只需要一个URL就可返回相应的数据。由于边缘节点与canister之间单次请求有cycleLimit,所以小型数据可通过无callback的http_response方法直接返回,而大型数据需要分片后,通过含callback的http_respon

2022-03-03 10:51:58 2363

原创 2.2「Dfinity」Candid常用文本语法指引

2.2「Dfinity」Candid常用文本语法指引Why?作为一名Dfinity Dapp后端开发者,我们在调试canister的时候经常会需要手动输入一些参数,但是经常会遇到输入格式不正确的情况,从而无法被canister正确获取。这个时候就需要看一下Candid文本语法的标准啦。What?PS:下文的类型均为candid定义的类型,虽然可以对应到Motoko的类型,但不是Motoko中的类型。一、text类型写法:在text内容的两端用双引号括起来即可。示例:"""Hello""

2022-03-03 10:50:27 379

原创 2.1「Motoko进阶」使用Ledger Actor动态创建canister

2.1「Motoko进阶」使用Ledger Actor动态创建canister示例:直接进入正题,现在,我举个使用Ledger Actor动态创建canister的例子。假如我们想在A.mo的actor中动态创建B.mo中的actor类,则:一、先创建Types.mo模块,在其中写入以下代码:module IC{ public type canister_settings = { freezing_threshold : ?Nat; controllers

2022-03-03 10:49:07 264

原创 1.16「Motoko」StableMemory

1.16「Motoko」StableMemory简介Byte-level access to (virtual) stable memory.——ExperimentalStableMemory库截至目前,每个canister最多可分配4GiB,即65536页内存,每页内存为64KiB(65536bytes)。我们可以使用grow()函数申请内存页,使用size()函数获取当前已分配页数。let size : () -> (pages : Nat64)let grow :

2022-03-03 10:48:40 140

原创 1.15「Motoko」CertifiedData

1.15「Motoko」CertifiedData互联网计算机允许canister智能合约在update方法执行期间存储少量数据,以便在query方法被调用处理时,canister可以获得关于该数据的凭证。该模块提供了一个针对高级用户和库实现者的低级 API 接口。请参阅*Internet Computer Functional Specification*和相应的文档,了解如何使用这个来进行查询调用,以防篡改。Setlet set : (data : Blob) -> ()设置认证的数据

2022-03-03 10:47:29 112

原创 1.14「Motoko」HeartBeat

1.14「Motoko」HeartBeat前言HeartBeat(心跳),原本是Rust SDK独有的功能(虽然有些问题),但就在近日,Motoko也悄咪咪地支持了HeartBeat,可以让canister按一定的频率自主执行一些代码或向外发出信号,就像有生命的心脏在跳动……正文Internet Computer canisters可以选择通过暴露一个特定的canister_heartbeat函数(参见HeartBeat)来接收常规心跳信息。对于定期执行或基于时间的执行,WebAssembly 模

2022-03-03 10:47:08 192

原创 1.13「Motoko——Managing cycles」

1.13「Motoko——Managing cycles」互联网计算机的使用是按**cycle**来衡量和支付的。互联网计算机保持每个canister智能合约cycle的平衡。此外,cycle可以在canister之间转移。在以互联网计算机为目标的 Motoko 程序中,每个actor代表一个互联网计算机canister,并具有相关的cycle平衡。cycle的所有权可以在actor之间转移。cycle通过消息有选择地发送和接收,即共享函数调用。调用方可以选择通过调用传输cycle,被调用方可以选择接

2022-03-03 10:46:20 193

原创 1.12「Motoko——Imperative control flow」

1.12「Motoko——Imperative control flow」控制流有两个关键类别:声明性(declarative):当某些值的结构引导控件和下一个要计算的表达式的选择时,如 if 和 switch 表达式;命令式(Imperative):根据程序员的命令突然改变,禁止常规控制流; 例如 break 和 continue ,以及 return 和 throw 。命令式(Imperative)控制流通常与状态更改和其他side-effects(如错误处理和输入/输出)密切相关。Ear

2022-03-03 10:45:28 251

原创 1.11「Motoko——Sharing data and behavior」

1.11「Motoko——Sharing data and behavior」回想一下,在 Motoko 中,可变(mutable)的状态对于actor来说总是私有(private)的。但是,两个actor可以共享消息数据,这些消息可以引用(refer to)actor,包括他们自己和彼此。此外,如果这些函数是共享(shared)的,消息可以引用(refer to)单个函数。通过这些机制,两个actor可以通过异步(asynchronous)消息传递来协调它们的行为。带有actor的Publishe

2022-03-03 10:43:39 368

原创 1.10「Motoko——Stable variables and upgrade methods」

1.10「Motoko——Stable variables and upgrade methods」Stable变量和升级方法:互联网计算机的一个关键特性是它能够使用 WebAssembly 内存和全局数据库而不是传统的数据库来持久存储canister智能合约的状态。这意味着,在没有明确用户指令的情况下,每条消息前后都会魔术般地恢复到canister中的整个状态。这种自动的、用户透明的状态保持叫做正交持久性。虽然方便,正交持久性提出了一个挑战,当涉及到升级的canister的代码。如果没有一个明确的表

2022-03-02 11:58:28 339

原创 1.9「Motoko——Actor classes」

1.9「Motoko——Actor classes」Actor classes:Actor classes能够允许你以编程的方式创建canister智能合约。目前,actor classes不得不定义在一个单独的.mo源文件中。为了说明如何定义并导入(import) actor classes,接下来的例子演示一个以Nat类型为键映射到Text类型的分布式map。它提供简单的插入put(k, v)和查询函数get(k),用于处理这些键和值。为了分配该示例的数据,一系列键值被划分到n个容器(bucket

2022-03-02 11:57:41 233

原创 1.8「Motoko」探究async与await特性以及遇到trap的回滚规则

1.8「Motoko」探究async与await特性以及遇到trap的回滚规则async与await:我们已经知道,actor中的public (shared)函数的返回值类型都必须为"a future",即以async修饰的其它类型,如async Nat。要访问async 值的结果,future的接受者要使用await表达式。可以总结为:「await 作为广义上的左值,要接受一个async _ 作为右值」遇到trap时程序回滚到何处?A trap是一种不可

2022-03-02 11:56:51 168

原创 1.7「Motoko——Modules and imports」

1.7「Motoko——Modules and imports」Importing from the Motoko base library:最常见的导入场景之一是本指南中的示例、示例存储库中的Motoko项目以及涉及从Motoko库导入模块的教程中所示的场景。通过从基本库导入模块,可以重用这些模块中定义的值、函数和类型,而不是从头开始编写类似的值、函数和类型。以下两行从Array和Result模块(Modules)导入函数:import Array "mo:base/Array"; import

2022-03-02 11:55:38 263

原创 1.6「Motoko——Structural equality」

1.6「Motoko——Structural equality」2021.5.4Motoko笔记Equality (==) —and by extension inequality (!=)— is structural: two values a and bare equal, a == b, whenever they have equal contents, regardless of the physical representation, or

2022-03-02 11:54:43 157

原创 1.5「Motoko——Pattern Matching」

1.5「Motoko——Pattern Matching」2021.5.4Motoko笔记模式匹配(Pattern Matching)是一种语言特性,它使结构化数据的测试和分解变得容易。虽然大多数编程语言提供了构建结构化数据的熟悉方法,但模式匹配使您能够分解结构化数据,并通过将它们绑定到指定的名称来将其片段引入范围。在语法上,这些模式类似于结构化数据的构造,但通常出现在输入方向的位置,例如函数参数位置、switch表达式中的case关键字之后以及let或var声明之后。考虑以下函数调用:func f

2022-03-02 11:49:04 258

原创 1.4「Motoko——Principals and caller identification」

1.4「Motoko——Principals and caller identification」2021.5.4Motoko笔记Motoko的共享函数支持一种简单的调用方标识形式,允许您检查与函数调用方关联的IC(Internet Computer)主体。与调用关联的主体是标识唯一用户或容器(canister)的值。可以使用与函数调用方关联的主体在程序中实现基本形式的访问控制。在Motoko中,shared关键字用于声明共享函数。共享函数还可以携带{caller:Principal}类型的可选参数

2022-03-02 11:47:25 163

原创 1.3「Motoko——Actors and async data」

1.3「Motoko——Actors and async data」2021.5.3Motoko笔记Internet Computer的编程模型由内存隔离容器组成,这些容器通过二进制数据编码的异步消息传递进行通信。容器一次处理一条消息,防止出现竞争情况。容器使用回调来注册需要对其发出的任何容器间消息的结果执行的操作。Motoko用一个众所周知的更高层次的抽象:actor模型来抽象互联网计算机的复杂性。每个容器都表示为一个类型化的参与者。参与者的类型列出了它可以处理的消息。每个消息都被抽象为一个类型化

2022-03-02 11:46:13 224

原创 1.2「Motoko——Local objects and classes」

1.2「Motoko——Local objects and classes」2021.5.3Motoko笔记1.【声明一个Object类】例1:object counter { var count = 0; public func inc() { count += 1 }; public func read() : Nat { count }; public func bump() : Nat { inc(); read()

2022-03-02 11:44:54 165

原创 1.1「Motoko——Basic concepts and terms && Mutable state」

1.1「Motoko——Basic concepts and terms && Mutable state」1.【从声明到块表达式】“声明列表(Declarations)”:let x = 1; let y = x + 1; x * y + x这三行语句是一个声明列表。而一个声明列表自身不是一个表达式,所以我们不能用声明列表本身来作为声明另外一个值的初始化值。“块表达式(Block expressions)”:我们可以在声明列表的两端加上一对花括号来将其转换成块表达式。

2022-03-02 11:43:39 286

原创 【Q&A 2021.4.26更新·在阿里云Ubuntu系统上利用Apache2+PHP7.0+MySQL搭建WordPress博客遇到的一些问题及解决方法】

目录Q1:初步搭建成功后,WP插件无法安装(error:“无法创建文件”)Q2:一切按照正规方法搭建完博客以后,却发现非常重要的功能——可视化自定义主题——不知为何无法正常使用,同时还伴有其他与图片/音频上传、媒体库显示等异常尾声:Q1:初步搭建成功后,WP插件无法安装(error:“无法创建文件”)A1:报错的原因是第三方用户对服务器文件访问(写入)权限不够。解决方法:在终端中运行以下命令,查询已有的一些用户名:cat /etc/passwd一般会出现一个用户名后面对应的

2021-04-26 19:54:45 204 2

原创 【快速入门Dfinity】有了转译得到的wasm文件,怎么才能构建一个项目呢?

目录1.Package the binary so dfx can install and run it:2.Test the app locally:3.Stop and delete the canister:「经过5个小时左右的翻文档和反复调试,最终摸索出了当前版本适用的正确方法(完全按照文档来不行)」复现过程:1.Package the binary so dfx can install and run it:echo ‘{“canisters”:{“...

2021-04-24 21:28:29 240

原创 【快速入门Dfinity】将C源文件编译为Wasm二进制文件

目录1.安装Clang并set up几个aliases2.对.c文件进行编译(.c包含了一个功能函数,没有main函数)1.安装Clang并set up几个aliases例如,在Debian上:sudo apt-get install clang lld gcc-multilibalias wld=“wasm-ld-8 --no-entry --export-dynamic --allow-undefined”alias wcc=“clang --target=wasm3.

2021-04-24 21:25:50 447

原创 【快速入门Dfinity】在本地和IC上部署一个project

【准备工作】创建一个名为hello的新项目:dfx new hello/*The dfx new xxx command creates a new hello project directly, template files, and a new hello Git repository for your project.*/转到项目目录:cd hello【在本地部署/Start(local)】新建一个终端,转到项目目录,然后通过运行以下命令,在第二个终端...

2021-04-24 21:20:41 717

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除