برنامه نویسی

# ایجاد یک شیر آب توکن در استلار: آموزش مبتدیان 🚰💧

Summarize this content to 400 words in Persian Lang
خوش آمدید، توسعه دهندگان آینده Stellar! امروز، ما قصد داریم یک سفر هیجان انگیز را برای ایجاد یک شیر آب توکن در شبکه استلار آغاز کنیم. دست و پنجه نرم کنید، زیرا در پایان این آموزش، توکن‌های دیجیتالی بارانی خواهید ساخت! 🌧️💰

فهرست مطالب

مقدمه: شیر آب توکن چیست؟
تنظیم محیط توسعه ستاره ای شما
ایجاد نشانه کیهانی ما
ساخت قرارداد هوشمند شیر آب
استقرار در شبکه تست ستاره ای
ایجاد یک رابط وب
تست شیر ​​آب ما
نتیجه گیری و مراحل بعدی

مقدمه: شیر آب توکن چیست؟ 🤔

یک آبنمای جادویی را تصور کنید که به جای آب، توکن های دیجیتالی پخش می کند. این در اصل همان چیزی است که یک شیر آب نمادین است! این یک قرارداد هوشمند است که به هر کسی که بخواهد تعداد کمی توکن می دهد. شیرهای توکن معمولاً در شبکه های آزمایشی برای توزیع توکن ها برای اهداف آزمایشی استفاده می شوند.

در مورد ما، ما یک شیر آب برای “Tokens کیهانی” (CSM) ایجاد خواهیم کرد – زیرا چه کسی توکن هایی را از فضای بیرونی نمی خواهد؟ 🌠

راه اندازی محیط توسعه ستاره ای خود 🛠️

قبل از اینکه وارد کد شویم، اجازه دهید محیط توسعه خود را تنظیم کنیم. ما از Soroban، پلتفرم قرارداد هوشمند Stellar استفاده خواهیم کرد.

Rust and Cargo را نصب کنید:

curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Soroban CLI را نصب کنید:

cargo install –locked –version 20.0.0-rc2 soroban-cli

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

راه اندازی یک پروژه جدید سوروبان:

soroban contract init cosmic-faucet
cd cosmic-faucet

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کار عالی! اکنون آماده ایجاد چند قرارداد هوشمند ستاره ای هستید! 🌟

ایجاد نشانه کیهانی ما

قبل از اینکه بتوانیم شیر آب خود را بسازیم، باید توکنی را ایجاد کنیم که آن را توزیع می کند. بیایید یک رمز ساده کیهانی (CSM) ایجاد کنیم.

خود را ویرایش کنید src/lib.rs فایل:

#![no_std] use soroban_sdk::{contractimpl, symbol_short, token, Address, Env, Symbol};

#[derive(Clone)] pub struct CosmicToken;

#[contractimpl] impl CosmicToken {
pub fn initialize(env: Env, admin: Address) -> Self {
let token = token::Interface::new(&env, &env.current_contract_address());
token.initialize(&admin, &7, &”Cosmic Token”, &”CSM”);
Self
}

pub fn balance(env: Env, id: Address) -> i128 {
let token = token::Interface::new(&env, &env.current_contract_address());
token.balance(&id)
}

pub fn transfer(env: Env, from: Address, to: Address, amount: i128) {
let token = token::Interface::new(&env, &env.current_contract_address());
token.transfer(&from, &to, &amount);
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این کد یک توکن اساسی با initialize، balance، و transfer توابع مثل این است که پول کیهانی خود را بسازید! 🌌💰

ساخت قرارداد هوشمند شیر آب 🚰

حالا بیایید قرارداد شیر آب خود را ایجاد کنیم. یک فایل جدید ایجاد کنید src/faucet.rs:

#![no_std] use soroban_sdk::{contractimpl, token, Address, Env};

const FAUCET_AMOUNT: i128 = 100; // Amount of tokens to dispense
const COOLDOWN_PERIOD: u64 = 86400; // 24 hours in seconds

#[derive(Clone)] pub struct CosmicFaucet;

#[contractimpl] impl CosmicFaucet {
pub fn initialize(env: Env, token: Address) -> Self {
env.storage().set(&Symbol::short(“token”), &token);
Self
}

pub fn drip(env: Env, to: Address) -> i128 {
let token: Address = env.storage().get(&Symbol::short(“token”)).unwrap();
let token_client = token::Client::new(&env, &token);

// Check if user is on cooldown
let last_drip: u64 = env.storage().get(&to).unwrap_or(0);
let current_time = env.ledger().timestamp();
if current_time – last_drip COOLDOWN_PERIOD {
panic!(“You’re still on cooldown! Try again later.”);
}

// Update last drip time
env.storage().set(&to, &current_time);

// Transfer tokens
token_client.transfer(&env.current_contract_address(), &to, &FAUCET_AMOUNT);
FAUCET_AMOUNT
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این شیر آب 100 توکن کیهانی را با یک دوره خنک شدن 24 ساعته در اختیار هر کاربر قرار می دهد. مثل یک ماشین فروش کیهانی است که روزانه دوباره پر می شود! 🎰🌠

در حال استقرار در شبکه آزمایشی استلار 🚀

زمان آن است که آفرینش کیهانی خود را به شبکه آزمایشی ستاره ای راه اندازی کنیم!

قراردادهای خود را بسازید:

soroban contract build

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یک حساب کاربری Stellar ایجاد کنید:

soroban config identity generate alice

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حساب خود را در تست نت تامین مالی کنید:

soroban config network add testnet –rpc-url https://soroban-testnet.stellar.org
soroban config identity fund alice –network testnet

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

قراردادهای خود را مستقر کنید:

soroban contract deploy –wasm target/wasm32-unknown-unknown/release/cosmic_token.wasm –source alice –network testnet
soroban contract deploy –wasm target/wasm32-unknown-unknown/release/cosmic_faucet.wasm –source alice –network testnet

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

شناسه های قرارداد برگشتی را یادداشت کنید. شما به تازگی آفرینش کیهانی خود را در شبکه آزمایشی Stellar راه اندازی کرده اید! 🎉

ایجاد یک رابط وب 🖥️

بیایید یک رابط وب ساده برای شیر آب با استفاده از HTML، CSS و جاوا اسکریپت ایجاد کنیم. ایجاد کنید index.html فایل:

lang=”en”>

charset=”UTF-8″>
name=”viewport” content=”width=device-width, initial-scale=1.0″>
Cosmic Token Faucet

body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #1a1a2e;
color: #fff;
}
.container {
text-align: center;
background-color: #16213e;
padding: 2rem;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0,0,0,0.5);
}
button {
background-color: #0f3460;
color: white;
border: none;
padding: 10px 20px;
margin-top: 20px;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s;
}
button:hover {
background-color: #e94560;
}

src=]]>”https://cdnjs.cloudflare.com/ajax/libs/stellar-sdk/10.4.1/stellar-sdk.js”>

const server = new StellarSdk.Server(‘https://horizon-testnet.stellar.org’);
const faucetId = ‘YOUR_FAUCET_CONTRACT_ID’;

async function requestTokens() {
const address = document.getElementById(‘address’).value;
const resultElement = document.getElementById(‘result’);

try {
const account = await server.loadAccount(address);
const transaction = new StellarSdk.TransactionBuilder(account, {
fee: StellarSdk.BASE_FEE,
networkPassphrase: StellarSdk.Networks.TESTNET
})
.addOperation(StellarSdk.Operation.invokeHostFunction({
function: ‘drip’,
parameters: [StellarSdk.xdr.ScVal.scvAddress(StellarSdk.Address.fromString(address))],
contractId: faucetId
}))
.setTimeout(30)
.build();

// You would typically sign this transaction with the user’s key
// For simplicity, we’re just displaying the XDR here
const xdr = transaction.toXDR();
resultElement.innerText = `Transaction XDR: ${xdr}`;
} catch (error) {
resultElement.innerText = `Error: ${error.message}`;
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

جایگزین کنید ‘YOUR_FAUCET_CONTRACT_ID’ با شناسه قرارداد واقعی شیر آب مستقر شما.

این یک صفحه وب با مضمون کیهانی ایجاد می کند که در آن کاربران می توانند آدرس Stellar خود را وارد کرده و توکن ها را درخواست کنند. مثل یک دستگاه خودپرداز عصر فضاست! 🏧🚀

تست شیر ​​آب ما 💧

اکنون زمان آن است که آفرینش کیهانی خود را آزمایش کنیم:

را باز کنید index.html فایل در یک مرورگر وب
آدرس Stellar testnet را وارد کنید.
روی دکمه “Drip Tokens” کلیک کنید.
باید یک تراکنش XDR نمایش داده شود. در یک برنامه واقعی، شما این معامله را امضا و ارسال می کنید.

تبریک می گویم! شما به تازگی یک شیر آب توکن در Stellar ایجاد کرده اید! 🎉

نتیجه گیری و مراحل بعدی 🚀

شما اولین قدم های خود را در دنیای کیهانی قراردادهای هوشمند Stellar برداشته اید! شما یاد گرفته اید که چگونه:

یک محیط توسعه Stellar راه اندازی کنید
یک توکن سفارشی ایجاد کنید
یک قرارداد هوشمند شیر آب بسازید
قراردادها را در شبکه آزمایشی Stellar مستقر کنید
یک رابط وب ساده برای شیر آب خود ایجاد کنید

اما این تازه آغاز سفر ستاره ای شماست! در اینجا چند ایده برای ارتقای آفرینش کیهانی شما به سطح بعدی وجود دارد:

اضافه کردن اقتصاد رمز پیچیده تر (مثلاً بهره، سهام)
اقدامات امنیتی اضافی را اجرا کنید
یک رابط کاربری تعاملی تر و جذاب تر ایجاد کنید
سایر موارد استفاده از قرارداد هوشمند Stellar را کاوش کنید

به یاد داشته باشید، در دنیای بلاک چین، آسمان محدودیت نیست، بلکه فقط شروع است! به کاوش ادامه دهید، به ساختن ادامه دهید و به ستاره ها برسید! 🌠👨‍🚀👩‍🚀

مشتاقانه منتظر خواندن نظرات شما هستم.

خوش آمدید، توسعه دهندگان آینده Stellar! امروز، ما قصد داریم یک سفر هیجان انگیز را برای ایجاد یک شیر آب توکن در شبکه استلار آغاز کنیم. دست و پنجه نرم کنید، زیرا در پایان این آموزش، توکن‌های دیجیتالی بارانی خواهید ساخت! 🌧️💰

فهرست مطالب

  1. مقدمه: شیر آب توکن چیست؟
  2. تنظیم محیط توسعه ستاره ای شما
  3. ایجاد نشانه کیهانی ما
  4. ساخت قرارداد هوشمند شیر آب
  5. استقرار در شبکه تست ستاره ای
  6. ایجاد یک رابط وب
  7. تست شیر ​​آب ما
  8. نتیجه گیری و مراحل بعدی

مقدمه: شیر آب توکن چیست؟ 🤔

یک آبنمای جادویی را تصور کنید که به جای آب، توکن های دیجیتالی پخش می کند. این در اصل همان چیزی است که یک شیر آب نمادین است! این یک قرارداد هوشمند است که به هر کسی که بخواهد تعداد کمی توکن می دهد. شیرهای توکن معمولاً در شبکه های آزمایشی برای توزیع توکن ها برای اهداف آزمایشی استفاده می شوند.

در مورد ما، ما یک شیر آب برای “Tokens کیهانی” (CSM) ایجاد خواهیم کرد – زیرا چه کسی توکن هایی را از فضای بیرونی نمی خواهد؟ 🌠

راه اندازی محیط توسعه ستاره ای خود 🛠️

قبل از اینکه وارد کد شویم، اجازه دهید محیط توسعه خود را تنظیم کنیم. ما از Soroban، پلتفرم قرارداد هوشمند Stellar استفاده خواهیم کرد.

  1. Rust and Cargo را نصب کنید:
   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. Soroban CLI را نصب کنید:
   cargo install --locked --version 20.0.0-rc2 soroban-cli
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. راه اندازی یک پروژه جدید سوروبان:
   soroban contract init cosmic-faucet
   cd cosmic-faucet
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کار عالی! اکنون آماده ایجاد چند قرارداد هوشمند ستاره ای هستید! 🌟

ایجاد نشانه کیهانی ما

قبل از اینکه بتوانیم شیر آب خود را بسازیم، باید توکنی را ایجاد کنیم که آن را توزیع می کند. بیایید یک رمز ساده کیهانی (CSM) ایجاد کنیم.

خود را ویرایش کنید src/lib.rs فایل:

#![no_std]
use soroban_sdk::{contractimpl, symbol_short, token, Address, Env, Symbol};

#[derive(Clone)]
pub struct CosmicToken;

#[contractimpl]
impl CosmicToken {
    pub fn initialize(env: Env, admin: Address) -> Self {
        let token = token::Interface::new(&env, &env.current_contract_address());
        token.initialize(&admin, &7, &"Cosmic Token", &"CSM");
        Self
    }

    pub fn balance(env: Env, id: Address) -> i128 {
        let token = token::Interface::new(&env, &env.current_contract_address());
        token.balance(&id)
    }

    pub fn transfer(env: Env, from: Address, to: Address, amount: i128) {
        let token = token::Interface::new(&env, &env.current_contract_address());
        token.transfer(&from, &to, &amount);
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این کد یک توکن اساسی با initialize، balance، و transfer توابع مثل این است که پول کیهانی خود را بسازید! 🌌💰

ساخت قرارداد هوشمند شیر آب 🚰

حالا بیایید قرارداد شیر آب خود را ایجاد کنیم. یک فایل جدید ایجاد کنید src/faucet.rs:

#![no_std]
use soroban_sdk::{contractimpl, token, Address, Env};

const FAUCET_AMOUNT: i128 = 100; // Amount of tokens to dispense
const COOLDOWN_PERIOD: u64 = 86400; // 24 hours in seconds

#[derive(Clone)]
pub struct CosmicFaucet;

#[contractimpl]
impl CosmicFaucet {
    pub fn initialize(env: Env, token: Address) -> Self {
        env.storage().set(&Symbol::short("token"), &token);
        Self
    }

    pub fn drip(env: Env, to: Address) -> i128 {
        let token: Address = env.storage().get(&Symbol::short("token")).unwrap();
        let token_client = token::Client::new(&env, &token);

        // Check if user is on cooldown
        let last_drip: u64 = env.storage().get(&to).unwrap_or(0);
        let current_time = env.ledger().timestamp();
        if current_time - last_drip  COOLDOWN_PERIOD {
            panic!("You're still on cooldown! Try again later.");
        }

        // Update last drip time
        env.storage().set(&to, &current_time);

        // Transfer tokens
        token_client.transfer(&env.current_contract_address(), &to, &FAUCET_AMOUNT);
        FAUCET_AMOUNT
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این شیر آب 100 توکن کیهانی را با یک دوره خنک شدن 24 ساعته در اختیار هر کاربر قرار می دهد. مثل یک ماشین فروش کیهانی است که روزانه دوباره پر می شود! 🎰🌠

در حال استقرار در شبکه آزمایشی استلار 🚀

زمان آن است که آفرینش کیهانی خود را به شبکه آزمایشی ستاره ای راه اندازی کنیم!

  1. قراردادهای خود را بسازید:
   soroban contract build
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. یک حساب کاربری Stellar ایجاد کنید:
   soroban config identity generate alice
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. حساب خود را در تست نت تامین مالی کنید:
   soroban config network add testnet --rpc-url https://soroban-testnet.stellar.org
   soroban config identity fund alice --network testnet
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. قراردادهای خود را مستقر کنید:
   soroban contract deploy --wasm target/wasm32-unknown-unknown/release/cosmic_token.wasm --source alice --network testnet
   soroban contract deploy --wasm target/wasm32-unknown-unknown/release/cosmic_faucet.wasm --source alice --network testnet
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

شناسه های قرارداد برگشتی را یادداشت کنید. شما به تازگی آفرینش کیهانی خود را در شبکه آزمایشی Stellar راه اندازی کرده اید! 🎉

ایجاد یک رابط وب 🖥️

بیایید یک رابط وب ساده برای شیر آب با استفاده از HTML، CSS و جاوا اسکریپت ایجاد کنیم. ایجاد کنید index.html فایل:


 lang="en">

     charset="UTF-8">
     name="viewport" content="width=device-width, initial-scale=1.0">
    </span>Cosmic Token Faucet<span class="nt"/>
    <span class="nt"/>
        <span class="nt">body</span> <span class="p">{</span>
            <span class="nl">font-family</span><span class="p">:</span> <span class="n">Arial</span><span class="p">,</span> <span class="nb">sans-serif</span><span class="p">;</span>
            <span class="nl">display</span><span class="p">:</span> <span class="n">flex</span><span class="p">;</span>
            <span class="nl">justify-content</span><span class="p">:</span> <span class="nb">center</span><span class="p">;</span>
            <span class="nl">align-items</span><span class="p">:</span> <span class="nb">center</span><span class="p">;</span>
            <span class="nl">height</span><span class="p">:</span> <span class="m">100vh</span><span class="p">;</span>
            <span class="nl">margin</span><span class="p">:</span> <span class="m">0</span><span class="p">;</span>
            <span class="nl">background-color</span><span class="p">:</span> <span class="m">#1a1a2e</span><span class="p">;</span>
            <span class="nl">color</span><span class="p">:</span> <span class="m">#fff</span><span class="p">;</span>
        <span class="p">}</span>
        <span class="nc">.container</span> <span class="p">{</span>
            <span class="nl">text-align</span><span class="p">:</span> <span class="nb">center</span><span class="p">;</span>
            <span class="nl">background-color</span><span class="p">:</span> <span class="m">#16213e</span><span class="p">;</span>
            <span class="nl">padding</span><span class="p">:</span> <span class="m">2rem</span><span class="p">;</span>
            <span class="nl">border-radius</span><span class="p">:</span> <span class="m">10px</span><span class="p">;</span>
            <span class="nl">box-shadow</span><span class="p">:</span> <span class="m">0</span> <span class="m">0</span> <span class="m">10px</span> <span class="n">rgba</span><span class="p">(</span><span class="m">0</span><span class="p">,</span><span class="m">0</span><span class="p">,</span><span class="m">0</span><span class="p">,</span><span class="m">0.5</span><span class="p">);</span>
        <span class="p">}</span>
        <span class="nt">button</span> <span class="p">{</span>
            <span class="nl">background-color</span><span class="p">:</span> <span class="m">#0f3460</span><span class="p">;</span>
            <span class="nl">color</span><span class="p">:</span> <span class="no">white</span><span class="p">;</span>
            <span class="nl">border</span><span class="p">:</span> <span class="nb">none</span><span class="p">;</span>
            <span class="nl">padding</span><span class="p">:</span> <span class="m">10px</span> <span class="m">20px</span><span class="p">;</span>
            <span class="nl">margin-top</span><span class="p">:</span> <span class="m">20px</span><span class="p">;</span>
            <span class="nl">border-radius</span><span class="p">:</span> <span class="m">5px</span><span class="p">;</span>
            <span class="nl">cursor</span><span class="p">:</span> <span class="nb">pointer</span><span class="p">;</span>
            <span class="nl">transition</span><span class="p">:</span> <span class="n">background-color</span> <span class="m">0.3s</span><span class="p">;</span>
        <span class="p">}</span>
        <span class="nt">button</span><span class="nd">:hover</span> <span class="p">{</span>
            <span class="nl">background-color</span><span class="p">:</span> <span class="m">#e94560</span><span class="p">;</span>
        <span class="p">}</span>
    <span class="nt"/>
<span class="nt"/>
<span class="nt"/>
    <span class="nt"/>
    <span class="nt"><script><![CDATA[<span class="na">src=]]></script></span><span class="s">"https://cdnjs.cloudflare.com/ajax/libs/stellar-sdk/10.4.1/stellar-sdk.js"</span><span class="nt">></span>
    <span class="nt"><script/></span>
        <span class="kd">const</span> <span class="nx">server</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">StellarSdk</span><span class="p">.</span><span class="nc">Server</span><span class="p">(</span><span class="dl">'</span><span class="s1">https://horizon-testnet.stellar.org</span><span class="dl">'</span><span class="p">);</span>
        <span class="kd">const</span> <span class="nx">faucetId</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">YOUR_FAUCET_CONTRACT_ID</span><span class="dl">'</span><span class="p">;</span>

        <span class="k">async</span> <span class="kd">function</span> <span class="nf">requestTokens</span><span class="p">()</span> <span class="p">{</span>
            <span class="kd">const</span> <span class="nx">address</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">address</span><span class="dl">'</span><span class="p">).</span><span class="nx">value</span><span class="p">;</span>
            <span class="kd">const</span> <span class="nx">resultElement</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">result</span><span class="dl">'</span><span class="p">);</span>

            <span class="k">try</span> <span class="p">{</span>
                <span class="kd">const</span> <span class="nx">account</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">server</span><span class="p">.</span><span class="nf">loadAccount</span><span class="p">(</span><span class="nx">address</span><span class="p">);</span>
                <span class="kd">const</span> <span class="nx">transaction</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">StellarSdk</span><span class="p">.</span><span class="nc">TransactionBuilder</span><span class="p">(</span><span class="nx">account</span><span class="p">,</span> <span class="p">{</span> 
                    <span class="na">fee</span><span class="p">:</span> <span class="nx">StellarSdk</span><span class="p">.</span><span class="nx">BASE_FEE</span><span class="p">,</span>
                    <span class="na">networkPassphrase</span><span class="p">:</span> <span class="nx">StellarSdk</span><span class="p">.</span><span class="nx">Networks</span><span class="p">.</span><span class="nx">TESTNET</span>
                <span class="p">})</span>
                <span class="p">.</span><span class="nf">addOperation</span><span class="p">(</span><span class="nx">StellarSdk</span><span class="p">.</span><span class="nx">Operation</span><span class="p">.</span><span class="nf">invokeHostFunction</span><span class="p">({</span>
                    <span class="na">function</span><span class="p">:</span> <span class="dl">'</span><span class="s1">drip</span><span class="dl">'</span><span class="p">,</span>
                    <span class="na">parameters</span><span class="p">:</span> <span class="p">[</span><span class="nx">StellarSdk</span><span class="p">.</span><span class="nx">xdr</span><span class="p">.</span><span class="nx">ScVal</span><span class="p">.</span><span class="nf">scvAddress</span><span class="p">(</span><span class="nx">StellarSdk</span><span class="p">.</span><span class="nx">Address</span><span class="p">.</span><span class="nf">fromString</span><span class="p">(</span><span class="nx">address</span><span class="p">))],</span>
                    <span class="na">contractId</span><span class="p">:</span> <span class="nx">faucetId</span>
                <span class="p">}))</span>
                <span class="p">.</span><span class="nf">setTimeout</span><span class="p">(</span><span class="mi">30</span><span class="p">)</span>
                <span class="p">.</span><span class="nf">build</span><span class="p">();</span>

                <span class="c1">// You would typically sign this transaction with the user's key</span>
                <span class="c1">// For simplicity, we're just displaying the XDR here</span>
                <span class="kd">const</span> <span class="nx">xdr</span> <span class="o">=</span> <span class="nx">transaction</span><span class="p">.</span><span class="nf">toXDR</span><span class="p">();</span>
                <span class="nx">resultElement</span><span class="p">.</span><span class="nx">innerText</span> <span class="o">=</span> <span class="s2">`Transaction XDR: </span><span class="p">${</span><span class="nx">xdr</span><span class="p">}</span><span class="s2">`</span><span class="p">;</span>
            <span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
                <span class="nx">resultElement</span><span class="p">.</span><span class="nx">innerText</span> <span class="o">=</span> <span class="s2">`Error: </span><span class="p">${</span><span class="nx">error</span><span class="p">.</span><span class="nx">message</span><span class="p">}</span><span class="s2">`</span><span class="p">;</span>
            <span class="p">}</span>
        <span class="p">}</span>
    <span class="nt"/>
<span class="nt"/>
<span class="nt"/>
</span></span></span></span></code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action">
    <svg xmlns="http://www.w3.org/2000/svg" width="20px" height="20px" viewbox="0 0 24 24" class="highlight-action crayons-icon highlight-action--fullscreen-on"><title>وارد حالت تمام صفحه شوید
    

از حالت تمام صفحه خارج شوید

جایگزین کنید 'YOUR_FAUCET_CONTRACT_ID' با شناسه قرارداد واقعی شیر آب مستقر شما.

این یک صفحه وب با مضمون کیهانی ایجاد می کند که در آن کاربران می توانند آدرس Stellar خود را وارد کرده و توکن ها را درخواست کنند. مثل یک دستگاه خودپرداز عصر فضاست! 🏧🚀

تست شیر ​​آب ما 💧

اکنون زمان آن است که آفرینش کیهانی خود را آزمایش کنیم:

  1. را باز کنید index.html فایل در یک مرورگر وب
  2. آدرس Stellar testnet را وارد کنید.
  3. روی دکمه “Drip Tokens” کلیک کنید.
  4. باید یک تراکنش XDR نمایش داده شود. در یک برنامه واقعی، شما این معامله را امضا و ارسال می کنید.

تبریک می گویم! شما به تازگی یک شیر آب توکن در Stellar ایجاد کرده اید! 🎉

نتیجه گیری و مراحل بعدی 🚀

شما اولین قدم های خود را در دنیای کیهانی قراردادهای هوشمند Stellar برداشته اید! شما یاد گرفته اید که چگونه:

  • یک محیط توسعه Stellar راه اندازی کنید
  • یک توکن سفارشی ایجاد کنید
  • یک قرارداد هوشمند شیر آب بسازید
  • قراردادها را در شبکه آزمایشی Stellar مستقر کنید
  • یک رابط وب ساده برای شیر آب خود ایجاد کنید

اما این تازه آغاز سفر ستاره ای شماست! در اینجا چند ایده برای ارتقای آفرینش کیهانی شما به سطح بعدی وجود دارد:

  • اضافه کردن اقتصاد رمز پیچیده تر (مثلاً بهره، سهام)
  • اقدامات امنیتی اضافی را اجرا کنید
  • یک رابط کاربری تعاملی تر و جذاب تر ایجاد کنید
  • سایر موارد استفاده از قرارداد هوشمند Stellar را کاوش کنید

به یاد داشته باشید، در دنیای بلاک چین، آسمان محدودیت نیست، بلکه فقط شروع است! به کاوش ادامه دهید، به ساختن ادامه دهید و به ستاره ها برسید! 🌠👨‍🚀👩‍🚀

مشتاقانه منتظر خواندن نظرات شما هستم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا