迈克尔逊语言的 Jupyter 内核
项目描述
迈克尔逊核
迈克尔逊语言的 Jupyter 内核
特征
- 带有运行时类型检查器的自定义解释器
- 语法高亮
- 自动完成
Tab - 替换文档字符串
Shift+Tab - 宏支持
- 详细执行记录
- 调试助手
如何安装
选项1:在线尝试!
由出色的 Binder 提供支持:https ://mybinder.org/v2/gh/baking-bad/michelson-kernel/binder?filepath=michelson_quickstart.ipynb
选项2:在docker中运行
- 从 dockerhub 获取最新镜像(仅在发布新版本时)
docker pull bakingbad/michelson-kernel
- 使用经过验证的 docker 镜像创建容器:
docker run --rm -it -p 127.0.0.1:8888:8888 -v $(pwd):/home/jupyter/notebooks bakingbad/michelson-kernel
- 在浏览器中打开容器输出中的链接
- 将笔记本保存在映射文件夹中,以免丢失它们
选项3:安装python包
pyenv install 3.7.0
pyenv local 3.7.0 # per folder
pyenv global 3.7.9 # per system
- 确保您安装了多个加密库(请参阅pytezos 文档):
sudo apt install libsodium-dev libsecp256k1-dev libgmp-dev
- 使用 pip 安装包
pip install michelson-kernel
- 安装 Jupyter
pip install jupyter
- 检查 Jupyter 现在是否支持 Michelson 内核
jupyter kernelspec list
- 运行 jupyter
jupyter notebook
打开命令输出中的链接,使用 Michelson 内核创建新笔记本。
选项 4:从源安装
- 按照“选项 3”中的步骤 1-2 确保您拥有 PyTezos 库所需的正确 Python 版本和数据包
- 确保安装了以下软件包:
libssl-dev zlib1g-dev uuid-dev - 获取源代码,构建和安装
git clone https://github.com/baking-bad/michelson-kernel
cd michelson-kernel
make
- 按照“选项 3”中的步骤 4-6
如何卸载
- 运行以下命令
jupyter kernelspec uninstall michelson -f
- 检查 Jupyter 是否不再支持 Michelson 内核
jupyter kernelspec list
- 卸载 Python 包
pip uninstall michelson-kernel
这个怎么运作
- REPL 实施的技术细节
https://forum.tezosagora.org/t/michelson-repl-in-a-jupyter-notebook/1749 - 演示 REPL 功能的交互式教程
https://mybinder.org/v2/gh/baking-bad/michelson-kernel/binder?filepath=michelson_quickstart.ipynb - 相同,但渲染版本
https://nbviewer.jupyter.org/github/baking-bad/michelson-kernel/blob/binder/michelson_quickstart.ipynb
示例笔记本
位于当前存储库的单独分支中:
https ://github.com/baking-bad/michelson-kernel/tree/binder
帮手名单
这些指令不是 Michelson 原语,因此不能在 Jupyter 之外使用。
在 Jupyter 编辑器中,帮助程序以蓝色突出显示。
DUMP
如果有的话,返回带有值、类型和注释的整个堆栈。
DUMP n
n从堆栈中返回顶部项目。
PRINT "fmt"
将格式化的字符串打印到标准输出,允许引用任意堆栈元素:
PRINT "This is the top element {0}, and this is the second {1}"
DROP_ALL
清除堆栈。
EXPAND { code }
展开 Michelson 宏:
EXPAND { PAPAIIR }
INCLUDE path
从文件系统(绝对或相对路径)INCLUDE "test.tz"或从 Tezos 网络之一加载 Michelson 源INCLUDE "mainnet:KT1VG2WtYdSWz5E7chTeAdDPZNy2MpP8pTfL"。初始化parameter、storage和code部分。如果从网络加载,当前存储也被写入STORAGE变量,以后可以访问。
PATCH prim value
为上下文相关的 Michelson 指令中的 on 设置值:AMOUNT, BALANCE, NOW, SOURCE, SENDER, CHAIN_ID.
DEBUG bool
启用或禁用详细输出:DEBUG False或DEBUG True。
BIG_MAP_DIFF
获取堆栈顶部,在该元素中搜索临时big_map实例,并显示如果它是合约执行结束时 big_map_diff 会是什么样子。
BEGIN %entrypoint (param_expr) (storage_expr)
模拟合同执行开始。要求parameter和storage部分已初始化。此外,清除堆栈。
该%entrypoint参数可以省略,%default将在这种情况下使用。
如果参数或存储中有任何临时 big_map 实例,此帮助程序也会分配。如果您之前已从网络加载它,
您可以使用STORAGE变量。storage_expr
COMMIT
模拟合约执行结束。需要一个Pair操作列表和堆栈顶部的有效存储。返回内部操作、新存储和 big_map_diff 的列表。
RESET
清除堆栈,删除所有 big_map 实例。
RESET "network"
和不带参数的版本一样,还要初始化NETWORK和CHAIN_ID变量。
可用于设置真实网络上下文以访问区块链数据。
RUN %entrypoint (param_expr) (storage_expr)
需要code部分初始化。内部调用BEGIN,然后执行code,并以 . 结束COMMIT。
查看文章和教程了解更多技术细节,也可以查看实现。
接触
- 电报聊天:@baking_bad_chat
- 松弛频道:#baking-bad
学分
- 该项目由 Tezos 基金会支持
- 来自 Tezos repo 的 Michelson 测试集用于确保解释器的可操作性
- Nomadic Labs 的 Michelson 结构化文档用于内联帮助