”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 将 Stellar 与 JavaScript 集成:构建 dApp 很简单(对于绝对初学者)

将 Stellar 与 JavaScript 集成:构建 dApp 很简单(对于绝对初学者)

发布于2024-08-31
浏览:604

Integrating Stellar with JavaScript: Building dApp is Easy (for Absolute Beginners)

Stellar是一个用于快速跨境金融交易的开源区块链网络。如果您是一名 JavaScript 开发人员并想在恒星网络上构建 dApp,那么这就是您的最佳选择。在本教程中,我们将学习如何将 Stellar 与 JavaScript 集成,从设置环境到进行第一笔交易。

那么,让我们开始吧。

哦,在开始之前,我们需要 JavaScript 的基本知识,并在您的计算机上安装 npm 和 Node.js。

1. 正视环境

首先,打开终端或命令提示符并为项目创建一个新目录:

mkdir stellar-js
cd stellar-js
npm init -y

此命令将初始化一个新的 Node.js 项目。

现在,安装 Stellar SDK for JavaScript。

npm install stellar-sdk

但是,等等什么是 Stellar-SDK?

Stellar SDK 是一个使用 JavaScript 与 Stellar 网络交互的强大库。

2. 连接恒星网络

现在环境已经搭建完毕,我们将连接Stellar网络。我们需要 Stellar SDK 并连接到测试网。

什么是测试网?

Testnet 是一个免费使用的网络,供开发人员测试其应用程序而无需连接真实货币。凡是有连接真钱的主网,需要XLM来支付交易费用等。测试网与主网类似,有免费的测试Lumens(XLM),称为Friendbot。

const StellarSdk = require("stellar-sdk");
const server = new StellarSdk.Server("https://horizon-testnet.stellar.org");

这将初始化 SDK 并设置服务器以连接到测试网。

3. 创建新帐户

要与Stellar网络交互,您需要有一个Stellar账户。您可以通过生成键值对,使用 SDK 轻松创建新帐户。值对由公钥和私钥组成。

const pair = StellarSdk.Keypair.random();

console.log('Public Key:', pair.publicKey());
console.log('Secret Key:', pair.secret());

publicKey()是您账户的标识符,而secret()是您的私钥,请妥善保管。

4. 为账户注资

在测试网中,您可以使用 Stellar 的 Friendbot 服务为您的帐户注资。

const fetch = require("node-fetch");

const fundAccount = async (publicKey) => {
  try {
    const response = await fetch(
      `https://friendbot.stellar.org?addr=${publicKey}`
    );
    const data = await response.json();
    console.log("Account funded:", data);
  } catch (error) {
    console.error("Error funding account:", error);
  }
};

fundAccount(pair.publicKey());

fundAccount 函数向 Friendbot 发送请求,在您的账户中存入 10k 测试流明。因此,根据交易的状态,它将记录消息。

5. 进行交易

现在,您的帐户已创建,您可以在恒星网络上进行第一笔交易。我们将构建、签署交易并将其提交到恒星网络。我们将从我们的帐户发送 10 XLM 到另一个帐户。

const sendPayment = async (publicKey) => {
  try {
    const account = await server.loadAccount(pair.publicKey());

    const transaction = new StellarSdk.TransactionBuilder(account, {
      fee: StellarSdk.BASE_FEE,
      networkPassphrase: StellarSdk.Networks.TESTNET,
    })
      .addOperation(
        StellarSdk.Operation.payment({
          destination: publicKey,
          asset: StellarSdk.Asset.native(),
          amount: "10",
        })
      )
      .setTimeout(30)
      .build();

    transaction.sign(pair);

    const result = await server.submitTransaction(transaction);
    console.log("Transaction successful:", result);
  } catch (error) {
    console.error("Error sending payment:", error);
  }
};

sendPayment("Another_Account's_Public_Key");

6. 错误处理和调试

即使是一个逗号(,)也会毁掉你的代码。处理错误对于使代码保持在预期的轨道上非常重要。

try {
  const result = await server.submitTransaction(transaction);
  console.log("Success:", result);
} catch (error) {
  console.error("Error:", error.response.data.extras.result_codes);
}

这会捕获事务期间的任何错误并记录有助于调试代码的特定错误。

结论

我们刚刚将 Stellar 与 JavaScript 集成,并在 Stellar 测试网上进行了第一笔交易。由于JavaScript在开发者中被广泛采用,使用Stellar过渡到区块链更加方便。

学习任何新技能的最佳方法是练习更多项目。构建小型项目并尝试这些概念。

如果您觉得这篇文章有帮助,请不要忘记继续向我表达爱意。下次记得点赞、分享、学习。

您还可以通过在此处以及 X、GitHub 和 LinkedIn 上关注我来与我保持联系。

版本声明 本文转载于:https://dev.to/jitendrachoudhary/integrating-stellar-with-javascript-building-dapp-is-easy-for-absolute-beginners-4n66?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何同步迭代并从PHP中的两个等级阵列打印值?
    如何同步迭代并从PHP中的两个等级阵列打印值?
    同步的迭代和打印值来自相同大小的两个数组使用两个数组相等大小的selectbox时,一个包含country代码的数组,另一个包含乡村代码,另一个包含其相应名称的数组,可能会因不当提供了exply for for for the uncore for the forsion for for ytry...
    编程 发布于2025-04-17
  • 如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    Unveiling the Mystery: Content Security Policy Directive ErrorsEncountering the enigmatic error "Refused to load the script..." when deployi...
    编程 发布于2025-04-17
  • 您如何在Laravel Blade模板中定义变量?
    您如何在Laravel Blade模板中定义变量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配变量对于存储以后使用的数据至关重要。在使用“ {{}}”分配变量的同时,它可能并不总是最优雅的解决方案。幸运的是,Blade通过@php Directive提供了更优雅的方法: $ old_section =“...
    编程 发布于2025-04-17
  • 如何从PHP中的数组中提取随机元素?
    如何从PHP中的数组中提取随机元素?
    从阵列中的随机选择,可以轻松从数组中获取随机项目。考虑以下数组:; 从此数组中检索一个随机项目,利用array_rand( array_rand()函数从数组返回一个随机键。通过将$项目数组索引使用此键,我们可以从数组中访问一个随机元素。这种方法为选择随机项目提供了一种直接且可靠的方法。
    编程 发布于2025-04-17
  • \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    答案: 在大多数现代编译器中,while(1)和(1)和(;;)之间没有性能差异。编译器: perl: 1 输入 - > 2 2 NextState(Main 2 -E:1)V-> 3 9 Leaveloop VK/2-> A 3 toterloop(next-> 8 last-> 9 ...
    编程 发布于2025-04-17
  • 为什么PYTZ最初显示出意外的时区偏移?
    为什么PYTZ最初显示出意外的时区偏移?
    与pytz 最初从pytz获得特定的偏移。例如,亚洲/hong_kong最初显示一个七个小时37分钟的偏移: 差异源利用本地化将时区分配给日期,使用了适当的时区名称和偏移量。但是,直接使用DateTime构造器分配时区不允许进行正确的调整。 example pytz.timezone(...
    编程 发布于2025-04-17
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    编程 发布于2025-04-17
  • 如何有效地选择熊猫数据框中的列?
    如何有效地选择熊猫数据框中的列?
    在处理数据操作任务时,在Pandas DataFrames 中选择列时,选择特定列的必要条件是必要的。在Pandas中,选择列的各种选项。选项1:使用列名 如果已知列索引,请使用ILOC函数选择它们。请注意,python索引基于零。 df1 = df.iloc [:,0:2]#使用索引0和1 c...
    编程 发布于2025-04-17
  • 如何阻止表单提交而不更改提交按钮?
    如何阻止表单提交而不更改提交按钮?
    在不修改提交按钮的情况下,在表单中包含一个无法直接修改的提交按钮的情况下,禁用表单提交将成为必要的情况。要实现这一目标,请考虑以下内容:从事件处理程序中返回false,例如OnSubmit,拦截提交事件并防止表格被提交。但是,它具有局限性,因为javaScript错误在返回语句以自动表单提交结果之...
    编程 发布于2025-04-17
  • 为什么不使用CSS`content'属性显示图像?
    为什么不使用CSS`content'属性显示图像?
    在Firefox extemers属性为某些图像很大,&& && && &&华倍华倍[华氏华倍华氏度]很少见,却是某些浏览属性很少,尤其是特定于Firefox的某些浏览器未能在使用内容属性引用时未能显示图像的情况。这可以在提供的CSS类中看到:。googlepic { 内容:url(&#...
    编程 发布于2025-04-17
  • Go语言垃圾回收如何处理切片内存?
    Go语言垃圾回收如何处理切片内存?
    Garbage Collection in Go Slices: A Detailed AnalysisIn Go, a slice is a dynamic array that references an underlying array.使用切片时,了解垃圾收集行为至关重要,以避免潜在的内存泄...
    编程 发布于2025-04-17
  • 如何避免Go语言切片时的内存泄漏?
    如何避免Go语言切片时的内存泄漏?
    ,a [j:] ...虽然通常有效,但如果使用指针,可能会导致内存泄漏。这是因为原始的备份阵列保持完整,这意味着新切片外部指针引用的任何对象仍然可能占据内存。 copy(a [i:] 对于k,n:= len(a)-j i,len(a); k
    编程 发布于2025-04-17
  • 解决MySQL插入Emoji时出现的\\"字符串值错误\\"异常
    解决MySQL插入Emoji时出现的\\"字符串值错误\\"异常
    Resolving Incorrect String Value Exception When Inserting EmojiWhen attempting to insert a string containing emoji characters into a MySQL database us...
    编程 发布于2025-04-17
  • 如何为PostgreSQL中的每个唯一标识符有效地检索最后一行?
    如何为PostgreSQL中的每个唯一标识符有效地检索最后一行?
    postgresql:为每个唯一标识符在postgresql中提取最后一行,您可能需要遇到与数据集合中每个不同标识的信息相关的信息。考虑以下数据:[ 1 2014-02-01 kjkj 在数据集中的每个唯一ID中检索最后一行的信息,您可以在操作员上使用Postgres的有效效率: id dat...
    编程 发布于2025-04-17

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3