Skip to content

Commit

Permalink
[apps] Introduce Rooch DAO Apps (#2782)
Browse files Browse the repository at this point in the history
* [apps] Inroduce Rooch DAO Apps and migrate infra/rooch-portal-v2/contract/gas_market and examples/btc_holder_farmer to apps

* fixup
  • Loading branch information
jolestar authored Oct 17, 2024
1 parent b98ce6f commit 184b636
Show file tree
Hide file tree
Showing 17 changed files with 133 additions and 67 deletions.
17 changes: 17 additions & 0 deletions apps/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Rooch DAO Apps

Package address: 0x701c21bf1c8cd5af8c42983890d8ca55e7a820171b8e744c13f2d9998bf76cc3

* app_admin
* gas_faucet
* gas_market
* grow_bitcoin

### Publish packages

```bash
rooch move publish -p apps/app_admin --named-addresses app_admin=default
rooch move publish -p apps/gas_faucet --named-addresses app_admin=default,gas_faucet=default
rooch move publish -p apps/gas_market --named-addresses app_admin=default,gas_market=default
rooch move publish -p apps/grow_bitcoin --named-addresses app_admin=default,grow_bitcoin=default
```
17 changes: 10 additions & 7 deletions examples/btc_holder_farmer/Move.toml → apps/app_admin/Move.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "btc_holder_farmer"
version = "0.0.1"
name = "app_admin"
version = "1.0.0"

[dependencies]
MoveStdlib = { local = "../../frameworks/move-stdlib" }
Expand All @@ -9,10 +9,13 @@ RoochFramework = { local = "../../frameworks/rooch-framework" }
BitcoinMove = { local = "../../frameworks/bitcoin-move" }

[addresses]
btc_holder_farmer = "_"
moveos_std = "0x2"
rooch_framework = "0x3"
bitcoin_move = "0x4"
#bc1prcajaj9n7e29u4dfp33x3hcf52yqeegspdpcd79pqu4fpr6llx4sugkfjt
#0x701c21bf1c8cd5af8c42983890d8ca55e7a820171b8e744c13f2d9998bf76cc3
app_admin = "_"
std = "0x1"
moveos_std = "0x2"
rooch_framework = "0x3"
bitcoin_move = "0x4"

[dev-addresses]
btc_holder_farmer = "0x42"
app_admin = "0x42"
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
module gas_market::admin {
module app_admin::admin {

use moveos_std::object::{Self,transfer};

struct AdminCap has store, key {}

fun init() {
let admin_cap = object::new_named_object(AdminCap {});
transfer(admin_cap, @gas_market)
transfer(admin_cap, @app_admin)
}

#[deprecated]
Expand Down
25 changes: 25 additions & 0 deletions apps/gas_faucet/Move.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
[package]
name = "gas_faucet"
version = "1.0.0"

[dependencies]
MoveStdlib = { local = "../../frameworks/move-stdlib" }
MoveosStdlib = { local = "../../frameworks/moveos-stdlib" }
RoochFramework = { local = "../../frameworks/rooch-framework" }
BitcoinMove = { local = "../../frameworks/bitcoin-move" }
app_admin = { local = "../app_admin" }

[addresses]
std = "0x1"
moveos_std = "0x2"
rooch_framework = "0x3"
bitcoin_move = "0x4"

#bc1prcajaj9n7e29u4dfp33x3hcf52yqeegspdpcd79pqu4fpr6llx4sugkfjt
#0x701c21bf1c8cd5af8c42983890d8ca55e7a820171b8e744c13f2d9998bf76cc3
app_admin = "_"
gas_faucet = "_"

[dev-addresses]
app_admin = "0x42"
gas_faucet = "0x43"
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module gas_market::gas_faucet {
module gas_faucet::gas_faucet {

use std::vector;

Expand All @@ -15,7 +15,7 @@ module gas_market::gas_faucet {

use bitcoin_move::utxo::{Self, UTXO};

use gas_market::admin::AdminCap;
use app_admin::admin::AdminCap;

const INIT_GAS_AMOUNT: u256 = 5000000_00000000;
const ONE_RGAS: u256 = 1_00000000;
Expand Down
25 changes: 25 additions & 0 deletions apps/gas_market/Move.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
[package]
name = "gas_market"
version = "1.0.0"

[dependencies]
MoveStdlib = { local = "../../frameworks/move-stdlib" }
MoveosStdlib = { local = "../../frameworks/moveos-stdlib" }
RoochFramework = { local = "../../frameworks/rooch-framework" }
BitcoinMove = { local = "../../frameworks/bitcoin-move" }
app_admin = { local = "../app_admin" }

[addresses]
std = "0x1"
moveos_std = "0x2"
rooch_framework = "0x3"
bitcoin_move = "0x4"

#bc1prcajaj9n7e29u4dfp33x3hcf52yqeegspdpcd79pqu4fpr6llx4sugkfjt
#0x701c21bf1c8cd5af8c42983890d8ca55e7a820171b8e744c13f2d9998bf76cc3
gas_market = "_"
app_admin = "_"

[dev-addresses]
app_admin = "0x42"
gas_market = "0x43"
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ module gas_market::gas_market {
use bitcoin_move::utxo::{ReceiveUTXOEvent, unpack_receive_utxo_event};

use gas_market::trusted_oracle::trusted_price;
use gas_market::admin::AdminCap;
use app_admin::admin::AdminCap;

#[test_only]
use moveos_std::decimal_value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ module gas_market::trusted_oracle {
use rooch_framework::oracle_meta;
use rooch_framework::oracle::{SimpleOracle};

use gas_market::admin::{AdminCap};
use app_admin::admin::{AdminCap};


const ErrorTrustedOracleNotExists: u64 = 1;
Expand Down
25 changes: 25 additions & 0 deletions apps/grow_bitcoin/Move.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
[package]
name = "grow_bitcoin"
version = "1.0.0"

[dependencies]
MoveStdlib = { local = "../../frameworks/move-stdlib" }
MoveosStdlib = { local = "../../frameworks/moveos-stdlib" }
RoochFramework = { local = "../../frameworks/rooch-framework" }
BitcoinMove = { local = "../../frameworks/bitcoin-move" }
app_admin = { local = "../app_admin" }

[addresses]
std = "0x1"
moveos_std = "0x2"
rooch_framework = "0x3"
bitcoin_move = "0x4"

#bc1prcajaj9n7e29u4dfp33x3hcf52yqeegspdpcd79pqu4fpr6llx4sugkfjt
#0x701c21bf1c8cd5af8c42983890d8ca55e7a820171b8e744c13f2d9998bf76cc3
grow_bitcoin = "_"
app_admin = "_"

[dev-addresses]
app_admin = "0x42"
grow_bitcoin = "0x43"
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright (c) RoochNetwork
// SPDX-License-Identifier: Apache-2.0

module btc_holder_farmer::hold_farmer {
module grow_bitcoin::grow_bitcoin {

use std::string;
use std::option;
Expand All @@ -17,7 +17,7 @@ module btc_holder_farmer::hold_farmer {
use moveos_std::table::Table;
use moveos_std::object;
use moveos_std::signer;
use moveos_std::object::{Object, ObjectID, transfer};
use moveos_std::object::{Object, ObjectID};
use moveos_std::timestamp;
use moveos_std::account;
use moveos_std::event_queue::{Self, Subscriber};
Expand All @@ -31,8 +31,10 @@ module btc_holder_farmer::hold_farmer {
#[test_only]
use bitcoin_move::bitcoin::add_latest_block;

use app_admin::admin::AdminCap;

const DEPLOYER: address = @btc_holder_farmer;

const DEPLOYER: address = @grow_bitcoin;

const MaxLockDay: u64 = 1000;
// 1 Day seconds
Expand Down Expand Up @@ -146,8 +148,6 @@ module btc_holder_farmer::hold_farmer {
/// If the UTXO is spent, the stake info will be removed
struct StakeInfo has store, drop {}

/// Capability to modify parameter such as period and release amount
struct AdminCap has key, store, drop {}

struct StakeEvent has copy, drop {
asset_id: ObjectID,
Expand Down Expand Up @@ -182,12 +182,10 @@ module btc_holder_farmer::hold_farmer {
}

fun init() {
let admin_cap = object::new_named_object(AdminCap {});
transfer(admin_cap, @btc_holder_farmer);
let state_info_name = type_info::type_name<StakeInfo>();
let subscriber = event_queue::subscribe<TempStateDropEvent>(state_info_name);
let btc_holder_farmer_signer = signer::module_signer<StakeInfo>();
account::move_resource_to(&btc_holder_farmer_signer, SubscriberInfo {
let grow_bitcoin_signer = signer::module_signer<StakeInfo>();
account::move_resource_to(&grow_bitcoin_signer, SubscriberInfo {
subscriber
});
}
Expand Down Expand Up @@ -584,7 +582,7 @@ module btc_holder_farmer::hold_farmer {
}

public fun process_expired_state(){
let subscriber_info = account::borrow_mut_resource<SubscriberInfo>(@btc_holder_farmer);
let subscriber_info = account::borrow_mut_resource<SubscriberInfo>(@grow_bitcoin);
let event = event_queue::consume(&mut subscriber_info.subscriber);
if (option::is_some(&event)){
let event = option::destroy_some(event);
Expand Down Expand Up @@ -648,8 +646,8 @@ module btc_holder_farmer::hold_farmer {
add_latest_block(100, @0x77dfc2fe598419b00641c296181a96cf16943697f573480b023b77cce82ada21);
init();
let admin_cap_id = object::named_object_id<AdminCap>();
let btc_holder_farmer_signer = signer::module_signer<AdminCap>();
let admin_cap = object::borrow_mut_object<AdminCap>(&btc_holder_farmer_signer, admin_cap_id);
let grow_bitcoin_signer = signer::module_signer<AdminCap>();
let admin_cap = object::borrow_mut_object<AdminCap>(&grow_bitcoin_signer, admin_cap_id);
deploy(&sender, 1, 0, 200, b"BTC Holder Coin", b"HDC", 6, admin_cap);
let seconds = 100;
let tx_id = @0x77dfc2fe598419b00641c296181a96cf16943697f573480b023b77cce82ada21;
Expand Down
7 changes: 6 additions & 1 deletion crates/rooch-types/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,12 @@ pub enum RoochError {

impl From<anyhow::Error> for RoochError {
fn from(e: anyhow::Error) -> Self {
RoochError::UnexpectedError(e.to_string())
let message = e
.chain()
.map(|e| e.to_string())
.collect::<Vec<String>>()
.join("\n");
RoochError::UnexpectedError(message)
}
}

Expand Down
8 changes: 7 additions & 1 deletion crates/testsuite/features/portal.feature
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,13 @@ Feature: Rooch Portal contract tests
Then assert: "{{$.move[-1].execution_info.status.type}} == executed"

# publish gas_market via default address
Then cmd: "move publish -p ../../infra/rooch-portal-v2/contract/gas_market --named-addresses gas_market=default --json"
Then cmd: "move publish -p ../../apps/app_admin --named-addresses app_admin=default --json"
Then assert: "{{$.move[-1].execution_info.status.type}} == executed"
Then cmd: "move publish -p ../../apps/gas_market --named-addresses app_admin=default,gas_market=default --json"
Then assert: "{{$.move[-1].execution_info.status.type}} == executed"
Then cmd: "move publish -p ../../apps/gas_faucet --named-addresses app_admin=default,gas_faucet=default --json"
Then assert: "{{$.move[-1].execution_info.status.type}} == executed"
Then cmd: "move publish -p ../../apps/grow_bitcoin --named-addresses app_admin=default,grow_bitcoin=default --json"
Then assert: "{{$.move[-1].execution_info.status.type}} == executed"

Then cmd: "object -t default::gas_market::RGasMarket"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ In the above code, `TempState` is an example state structure, which should be re
### Examples

1. [btc_holder_coin](https://github.com/rooch-network/rooch/blob/main/examples/btc_holder_coin): A simple UTXO example that implements token distribution based on the duration a Bitcoin is held.
2. [btc_holder_farmer](https://github.com/rooch-network/rooch/blob/main/examples/btc_holder_farmer): A more complex UTXO example that implements token rewards for Bitcoin holders through a DeFi farmer model.
2. [grow_bitcoin](https://github.com/rooch-network/rooch/blob/main/apps/grow_bitcoin): A more complex UTXO example that implements token rewards for Bitcoin holders through a DeFi farmer model.

## Programming with Inscription

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ let removed_state = remove_temp_state::<TempState>(&mut utxo);
### 示例

1. [btc_holder_coin](https://github.com/rooch-network/rooch/blob/main/examples/btc_holder_coin):一个简单的 UTXO 示例,实现了给 Bitcoin 持有者按持有时间发放代币的功能。
2. [btc_holder_farmer](https://github.com/rooch-network/rooch/blob/main/examples/btc_holder_farmer):一个更复杂的 UTXO 示例,实现了给 Bitcoin 持有者通过 DeFi farmer 模式发放代币奖励的功能。
2. [grow_bitcoin](https://github.com/rooch-network/rooch/blob/main/apps/grow_bitcoin):一个更复杂的 UTXO 示例,实现了给 Bitcoin 持有者通过 DeFi farmer 模式发放代币奖励的功能。

## 用 Inscription 编程

Expand Down
22 changes: 0 additions & 22 deletions infra/rooch-portal-v2/contract/gas_market/Move.toml

This file was deleted.

16 changes: 0 additions & 16 deletions infra/rooch-portal-v2/contract/gas_market/README.md

This file was deleted.

Binary file not shown.

0 comments on commit 184b636

Please sign in to comment.