Hi Guest

More contents, please log on!

Bitmere.com 区块链技术 Content

rholang 基础教程

nbking2005
24 0 0
配置你的开发环境
为了可以运行这个教程里面的rholang代码,你需要一些开发环境。
这不是一个会让你感到疲惫的rholang开发工具或者技术栈。
然而它展示了一些基本的开发环境给你开始。
网上编译器
RChain社区的成员提供了一个基于公共网站的在线rholang编译器。
这个工具非常有前途,也是一种入门的简单方式。
但是它还是开发节点,有时候会不稳定。
本地节点
真正正确运行rholang代码的方法是在通过启动你自己本地机子的RNode然后使用它的rholang编译器。
首先你要为你自己的平台安装 RNode
对于初学者,这里有详细的一步一步指导你怎么使用AWS 或者Docker启动你的节点.
一旦你的RNode安装好了,你可以运行基本的独立节点。
$ rnode run -s -n
在单独的终端里,你可以在REPL模式下一次执行一行rholang。
$ rnode repl
  ╦═╗┌─┐┬ ┬┌─┐┬┌┐┌  ╔╗╔┌─┐┌┬┐┌─┐  ╦═╗╔═╗╔═╗╦  
  ╠╦╝│  ├─┤├─┤││││  ║║║│ │ ││├┤   ╠╦╝║╣ ╠═╝║  
  ╩╚═└─┘┴ ┴┴ ┴┴┘└┘  ╝╚╝└─┘─┴┘└─┘  ╩╚═╚═╝╩  ╩═╝
rholang $ Nil
Deployment cost: CostAccount(0,Cost(0))
Storage Contents:
for( x0, x1
当你运行更多行数的rholang代码时候,你可以使用RNode的eval模式来执行代码。
$ rnode eval intersection.rho
Evaluating from intersection.rho
Result for intersection.rho:
Deployment cost: CostAccount(39,Cost(1132))
Storage Contents:
@{Unforgeable(0xb19519ab773d1ec4ce96f1b71b748552e4a084dfc9942371717f5cb87e818879)}!(@{"name"}!(Nil)) | @{Unforgeable(0xb19519ab773d1ec4ce96f1b71b748552e4a084dfc9942371717f5cb87e818879)}!(@{"age"}!(Nil)) | @{"world"}!("hello") | for( x0, x1
有一些RNode的输出会出现在你运行代码的同一个终端。但是其它一些代码输出会直接出现在第一个终端。
所以在你熟悉什么输出出现在哪里前请确定好检查两边的终端。
Cryptofex IDE
一个叫做cryptofex 的开发环境已经进入了alpha版本。
Cryptofex可能最后最好的开发rholang的地方,但是现在还是很早期的软件。
Cryptofex提供rholang语法高亮特性并且可以在RChain集成节点上检测dApps。
IDE同时也提供环境创建和测试在以太网上,私人测试网上和单独模式的EVM上的智能合约。
发送与标准输出(stdout)
说声Hello

编程界有一个存在已久的传统——输出"Hello World"应该是你学习的第一个程序。下面是一个在屏幕上输出"Hello World"的最简单例子。
hello.rho
练习
请让程序输出"Rholang rocks!" 而不是 “Hello World”。
练习
尝试将"stdout"替换为别的语句。会得到什么结果?
尝试一下这个有趣的通道名称@"someChannel".这里可以比较随意。请让程序在屏幕上输出 “Sup World”。

标准输出(stdout)到底是什么东西

rho语言的核心是通道(channel,下面都称为通道)通信. 通道是你可以用来发送和接收消息的通信线路。你可以使用!字符来在通道中发送消息。

stdout 是一个特殊的通道,用于将文本发送至"标准输出",通常指你的电脑屏幕。正因为它的特殊,我们不得不将它写在第一段学习的代码里面。
使用其他通道

实际上你可以在很多通道中发送消息,而非只有stdout。 但其它通道不像 stdout 他们不会在屏幕上显示。
tupleSpace.rho
那么,在其他通道中的消息将被发送至哪里?哪里都不会去!这些消息暂时哪儿都不去,这些消息会继续待在通道内,等待其他人去取出它们。我们将在下一课程中学习如何获取这些消息。同时,消息滞留所在的地方,我们称为 “元组空间”。
请确保你的信息保留在元组空间里。你应该会看到像下面的信息。
Storage Contents:
@{"RandoChannel"}!("This won't be on the screen") | for( x0, x1
同时做两件事

在rholang中,我们不会告诉计算机做完一件事,再到另一件。相反,我们会告诉它需要做的所有事情,然后"并行地"执行它们,或者一次性全部执行。
parallel.rho
| 的发音是 “parallel”, 可简称为 “par”。
练习
向"pizza shop"通道发送消息"1 large pepperoni please"。
练习
向"Mom’s Phone"通道发送"Hi Mom"。
练习
用一个程序在屏幕上输出两个消息,"Rick"和 “Morty”。
小测试
stdout!("Programming!") 将在屏幕上输出什么?

Programming!
stdout!
Nothing

@"what"!("Up") 在什么通道上发送消息?

@"Up"
@"what"
what

rholang会先执行哪一条语句?
@"stdout"!("Dogs")
|
@"stdout"!("Cats")

输出 “Dogs”
输出 “Cats”
都不。 它们是并行的

PS. 有一个特殊的通道 stderr. 请尝试一下看看往这个通道发送消息,会发生什么?
有什么区别?
BitMere.com is Information release platform,just provides information storage space services.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
You have to log in before you can reply Login | 立即注册

Points Rules

Write the first review

nbking2005 小学生
  • Follow

    0

  • Following

    0

  • Articles

    1

币圈江左盟
Promoted