在 Stellar 上构建更好的动物福利 DApp:智能合约挑战
这是参加“在 Stellar 上构建更美好的未来:智能合约挑战赛:构建一个去中心化应用”的参赛作品。
我建造的
我们的项目“动物福利去中心化应用”(Animal Welfare Dapp)旨在通过去中心化平台促进动物喂养的捐赠。该应用允许用户创建和管理捐赠帖子,喂养者可以在此列出动物的喂养需求,捐赠者可以为这些帖子捐款。通过利用 Stellar 智能合约,我们的应用确保了捐赠和帖子管理的透明度和安全性。
演示
https://animal-welfare-app.vercel.app/


您可以直接捐款。


我的代码
环境设置/项目安装指南
部署 URL
A) 环境设置:
-
使用以下命令安装 Rustcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
使用以下命令安装 Soroban CLI。更多信息请访问 => Soroban 文档 cargo install --locked soroban-cli
-
安装Node.js
-
安装Freighter Wallet浏览器扩展程序。启用后,进入网络设置部分,将您的钱包连接到测试网。
-
使用以下命令安装 wasm32-unknown-unknown 软件包:rustup target add wasm32-unknown-unknown
-
要配置 CLI 与测试网交互,请运行以下命令:
soroban network add \
--global testnet \
--rpc-url https://soroban-testnet.stellar.org:443 \
--network-passphrase "Test SDF Network ; September 2015"
您可以通过以下网址查看最低交易费用:
https://stellar.expert/explorer/testnet/account/GBXEE2WQVDPCQDYWJKDEHPHCFLBIG33IGQQI2AQ47XJ4SZ46BKAEB7BV
,其中 GBXEE2WQVDPCQDYWJKDEHPHCFLBIG33IGQQI2AQ47XJ4SZ46BKAEB7BV 是公钥。
旅行
实施与智能合约设计
智能合约设计:
我们实现的核心是一个用 Rust 编写的 Stellar 智能合约soroban-sdk。该合约包含以下几个关键功能:
-
后期管理:
add_post允许 Feeders 创建新帖子,包括标题、描述、钱包地址和捐赠目标等详细信息。
delete_post允许在必要时删除帖子。
update_post:允许对现有帖子进行更新,包括更改标题和描述。
get_posts:检索系统中所有可用的帖子。
view_post_by_id:根据 ID 获取特定帖子。
-
捐赠管理:
动机:
该项目的初衷是创建一个透明且用户友好的动物福利平台。我们利用 Stellar 智能合约,旨在提供一个去中心化的解决方案,以确保捐赠数据的完整性和帖子的妥善管理。
学习经历:
使用 Stellar 的智能合约是soroban-sdk一次宝贵的学习经历。它让我们深入了解了区块链应用的 Rust 编程,以及 Stellar 上智能合约开发的复杂性。我们获得了数据存储、状态管理和实现安全捐赠机制的实践经验。
自豪点数:
我们对项目的以下几个方面尤为自豪:
- 透明度:智能合约的使用确保所有互动(帖子和捐赠)都被记录下来且不可更改,从而提供完全的透明度。
- 易用性:该应用程序的直观设计和与智能合约的直接交互,使得喂养者和捐赠者都能轻松使用。
- 错误处理和日志记录:全面的错误处理和详细的日志记录有助于维护合约的可靠性,并使调试更容易。
后续步骤
未来,我们希望通过添加以下功能来扩展应用程序的功能:
- 高级分析:向捐赠者提供捐赠趋势和捐赠者参与度的分析数据。
- 增强用户界面:改进用户界面/用户体验,使应用程序更具吸引力和易用性。
调用智能合约
当然可以!以下是调用新智能合约中各项功能的命令:
- 创建帖子
stellar contract invoke --id YOUR_CONTRACT_ID --network testnet --source YOUR_KEYNAME -- create_post --title "Feed the Cats" --description "Donation to feed stray cats" --amount_requested 500 --image_url "https://example.com/cat_food.jpg" --feeder_address "GA3F45EXAMPLEWALLET"
- 按 ID 获取帖子
stellar contract invoke --id YOUR_CONTRACT_ID --network testnet --source YOUR_KEYNAME -- get_post_by_id --post_id 1
- 更新帖子
stellar contract invoke --id YOUR_CONTRACT_ID --network testnet --source YOUR_KEYNAME -- update_post --post_id 1 --new_title "Feed the Kittens" --new_description "Updated donation for feeding kittens" --new_amount_requested 600 --new_image_url "https://example.com/kitten_food.jpg" --deactivate false
- 查看所有帖子
stellar contract invoke --id YOUR_CONTRACT_ID --network testnet --source YOUR_KEYNAME -- get_all_posts
- 删除帖子
stellar contract invoke --id YOUR_CONTRACT_ID --network testnet --source YOUR_KEYNAME -- delete_post --post_id 1
- 永久删除帖子
stellar contract invoke --id YOUR_CONTRACT_ID --network testnet --source YOUR_KEYNAME -- delete_post_permanently --post_id 1
- 捐
stellar contract invoke --id YOUR_CONTRACT_ID --network testnet --source YOUR_KEYNAME -- donate --post_id 1 --amount 100
解释:
- YOUR_CONTRACT_ID:请替换为您已部署合约的实际 ID。
- YOUR_KEYNAME:替换为为您的源帐户配置的密钥名称。
- testnet:表示该命令在 Stellar 测试网上执行。
mainnet如果您在主网上操作,请更改为其他值。
- 方法特定标志:方法名称后面的参数对应于函数期望的参数。
- 请确保提供的所有数据类型与智能合约方法中预期的类型一致。对于字符串和 URL,请用引号将其括起来。
如果您有任何疑问或需要项目方面的进一步帮助,请随时联系我们!
文章来源:https://dev.to/chintanonweb/animal-welfare-dapp-build-better-on-stellar-smart-contract-challenge-3eii