草庐IT

Aleo隐私智能合约编程__第四章__部署进链上Aleo Testnet3网络

浪子小鬼 2023-05-18 原文

文章目录

  • 相关资料链接
    • 官方部署文档 https://developer.aleo.org/testnet/getting_started/deploy_execute_demo/
    • 查看链上所有的程序 https://explorer.hamp.app/programs
    • 测试网领水 https://twitter.com/AleoFaucet
    • Aleo SDK在线工具 https://aleo.tools/
    • snarkOS源码 https://github.com/AleoHQ/snarkOS
    • leo源码 https://github.com/AleoHQ/leo
    • Aleo CSDN http://t.csdn.cn/BUUAx

安装相关软件

  • 安装cargo、snarkos、leo
# 1. 下载安装Rust工具链管理器(内涵Rust编译工具)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
# 查看是否安装成功,未输出找不到此命令则表示安装成功
cargo --version
# 2. 下载安装aleo隐私应用部署工具
git clone https://github.com/AleoHQ/snarkOS.git --depth 1
cd snarkOS
cargo install --path . --locked
# 查看是否安装成功,未输出找不到此命令则表示安装成功
# 3. 下载安装aleo隐私应用编译工具
git clone https://github.com/AleoHQ/leo --depth 1
cd leo
cargo install --path . --locked
# 查看是否安装成功,未输出找不到此命令则表示安装成功
leo

账户数据准备

  1. 生成Aleo项目账户

    • 通过 https://aleo.tools/ 网站 Account 栏目的 Generate按钮生成Aleo项目账户,然后将 Private Key、View Key、Address 记录下来,在这里我们把这三个值分别命名为 private_key , view_key , wallet_dddress . 如下图所示。
  2. 领水,在自己的推特账户上发表如下信息(填写自己的Aleo账户地址),从而获得测试网Gas,用于之后的测试网链上部署隐私应用的Gas。 如下图所示。

    @AleoFaucet
    
    Please send 10 credits to address Aleo账户地址
    

  3. 验证是否领水成功

    • 等待5分钟后查看自己是否领水成功,领水成功的话,如下图红框内所示会得到 @AleoFaucet 的一个引用,然后点击红框内的内容。如下图所示。
  4. 点击上图红框内内容后,就会跳转到下图,然后点击下图红框内的内容。如下图所示。

  5. 点击上图红框内链接后,会返回一个Json字符串,如下图所示。将第三个value的内容复制下来,在这里我们称呼这个内容为 record_ciphertext ,是我们加密后的链上数据的记录。或者按下面的方式将Json字符串进行格式化后再进行复制。如下图所示。

  6. 复制上图的 Json字符串通到 https://json.cn 网站进行格式化,或者安装谷歌插件 https://chrome.google.com/webstore/detail/json-beautifier-editor/lpopeocbeepakdnipejhlpcmifheolpl 后再打开红框内的链接即可得到如下图所示格式化后的数据。 将下图黄色背景的内容复制下来,在这里我们称呼这个内容为 record_ciphertext ,是我们加密后的链上数据的记录。如下图所示。

  7. 游览器上打开 https://aleo.tools/ ,选择 Record 栏目,然后将 record_ciphertext 数据复制粘贴到 Record (Ciphertext) 方框内,然后在View Key方框里输入自己的 view_key 的值, 网站就会自动解密得到 Record (Plaintext) 方框内的内容。在这里我们将Record (Plaintext) 方框内的内容称为 record_plaintext ,是我们解密后的链上数据的记录。如下图所示。

  8. 记录好 private_key , wallet_dddress , record_plaintext 三个值,在接来下部署隐私应用的时候需要用到。

部署隐私应用

wallet_dddress="" # 填入自己的Aleo账户地址
private_key="" # 填入自己的Aleo账户的私钥

app_name="helloworld_${wallet_dddress:0-6:6}" # 设置隐私应用名称,需要在Aleo网络里全网唯一,不能重名。因此我们截取Aleo账户地址的部分字符串加入隐私应用名称内,以防止重名。
leo new "${app_name}" # 创建一个隐私应用
cd "${app_name}" && leo run && cd - # 进入隐私应用目录,进行编译,返回上层目录

# 定义 Record 的明文
record_plaintext="{
  owner: aleo1xvlh6eyfxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.private,
  gates: 10000000u64.private,
  _nonce: 41689884563743409008191298xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgroup.public
}"

# 执行部署操作
snarkos developer deploy "${app_name}.aleo" --private-key "${private_key}" --query "https://vm.aleo.org/api" --path "./${app_name}/build/" --broadcast "https://vm.aleo.org/api/testnet3/transaction/broadcast" --fee 600000 --record "${record_plaintext}" 
# 如下所示的日志,表示部署成功。
# 将交易ID记录下来(重要,查询交易记录以及进行进行下一次交易时都可能需要用到),例如 at1j97a8qmy6k2udaw9h9w34nu7wwahpkljnvvfpjvklht5uzwgsv8ss30g43 。
📦 Creating deployment transaction for 'helloworld_gk5x0t.aleo'...

✅ Successfully deployed 'helloworld_gk5x0t.aleo' to https://vm.aleo.org/api/testnet3/transaction/broadcast.
at1j97a8qmy6k2udaw9h9w34nu7wwahpkljnvvfpjvklht5uzwgsv8ss30g43
  • 通过网站 https://explorer.hamp.app/programs 查看被部署进网络里的隐私应用。
  • 输入 交易ID 进行查询,例如我这里部署成功后的交易ID为 at1j97a8qmy6k2udaw9h9w34nu7wwahpkljnvvfpjvklht5uzwgsv8ss30g43 。查询结果如下图所示。

有关Aleo隐私智能合约编程__第四章__部署进链上Aleo Testnet3网络的更多相关文章

  1. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  2. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  3. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  4. ruby - 如何以编程方式删除实例上的 "singleton information"以使其编码(marshal)? - 2

    我创建了一个由于“在运行时执行的单例元类定义”而无法编码的对象(这段代码的描述是否正确?)。这是通过以下代码执行的:#defineclassXthatmyusesingletonclassmetaprogrammingfeatures#throughcallofmethod:break_marshalling!classXdefbreak_marshalling!meta_class=class我该怎么做才能使对象编码正确?是否可以从对象instance_of_x的classX中“移除”单例组件?我真的需要一个建议,因为我们的一些对象需要通过Marshal.dump序列化机制进行缓存。

  5. Ruby 元编程问题 - 2

    我正在查看Ruby日志记录库Logging.logger方法并从sourceatgithub提出问题与这段代码有关:logger=::Logging::Logger.new(name)logger.add_appendersappenderlogger.additive=falseclass我知道类 最佳答案 这实际上删除了方法(当它实际被执行时)。这是确保close不会被调用两次的保障措施。看起来好像有嵌套的“class 关于Ruby元编程问题,我们在StackOverflow上找到一

  6. ruby - Paperclip:以编程方式分配图像并设置其名称 - 2

    使用Paperclip,我想从这样的URL抓取图像:require'open-uri'user.photo=open(url)问题是我最后得到一个像“open-uri20110915-4852-1o7k5uw”这样的文件名。有什么方法可以更改user.photo上的文件名?作为一个额外的变化,Paperclip将我的文件存储在S3上,所以如果我可以在初始分配中设置我想要的文件名就更好了,这样图像就会上传到正确的S3key。像这样:user.photo=open(url),:filename=>URI.parse(url).path 最佳答案

  7. ruby - 如何以编程方式检查证书是否已被吊销? - 2

    我正在开发一个xcode自动构建系统。在执行一些预构建验证时,我想检查指定的证书文件是否已被撤销。我了解securityverify-cert验证其他证书属性但不验证吊销。我如何检查撤销?我正在用Ruby编写构建系统,但我对任何语言的想法都持开放态度。我阅读了这个答案(Openssl-Howtocheckifacertificateisrevokedornot),但指向底部的链接(DoesOpenSSLautomaticallyhandleCRLs(CertificateRevocationLists)now?)进入的Material对我的目的来说有点过于复杂(用户上传已撤销的证书是一

  8. ruby - 如何保持我不常用的编程语言技能 - 2

    关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭11年前。Improvethisquestion我不经常使用ruby​​-通常它加起来相当于每两个月或更长时间编写一次脚本。我的大部分编程都是使用C++进行的,这与ruby​​有很大不同。由于我与ruby​​之间的差距如此之大,我总是忘记语言的基本方面(比如解析文本文件和其他简单的东西)。我想每天练习一些基本的东西,我想知道是否有一些我可以订阅的网站,并且会向我发送当天的Ruby问题或类似的东西。有人知道这样的站点/Internet服务吗?

  9. ruby - 如何以编程方式将 mp3 转换为 itunes 可播放的 aac/m4a 文件? - 2

    我一直在寻找一种以编程方式或通过命令行将mp3转换为aac的方法,但没有成功。理想情况下,我有一段代码可以从我的Rails应用程序中调用,将mp3转换为aac。我安装了ffmpeg和libfaac,并能够使用以下命令创建aac文件:ffmpeg-itest.mp3-acodeclibfaac-ab163840dest.aac当我将输出文件的名称更改为dest.m4a时,它无法在iTunes中播放。谢谢! 最佳答案 FFmpeg提供AAC编码功能(如果您已编译它们)。如果您使用的是Windows,则可以从here获取完整的二进制文件。

  10. ruby - 以编程方式从字符串派生正则表达式 - 2

    我想输入一个字符串并返回一个可用于描述字符串结构的正则表达式。正则表达式将用于查找更多与第一个结构相同的字符串。这是故意模棱两可的,因为我肯定会漏掉SO社区中的某个人会发现的情况。请发布任何和所有可能的方法来做到这一点。 最佳答案 简单的答案(可能不是您想要的)是:返回输入字符串(正则表达式特殊字符转义)。这始终是与字符串匹配的正则表达式。如果您希望识别某些结构,则必须提供有关您希望识别的结构类型的更多信息。如果没有这些信息,问题就会以模棱两可的方式陈述,并且有许多可能的解决方案。例如,输入字符串'aba'可以描述为'阿巴''阿巴*

随机推荐