diff --git a/.gitignore b/.gitignore
index 3ee24bb9..0c5aa83e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,4 +21,12 @@ oracle-config.yaml
/.vim/
/oracles/
/.vscode/
-/.idea/
\ No newline at end of file
+/.idea/
+/bootstrap.yaml
+/oracle_config.yaml
+/pool_config.yaml
+/pool_config_updated.yaml
+/prepare_update_conf.yaml
+/prepare_update_conf.yaml.bk
+/rustup
+/send.sh
diff --git a/core/src/box_kind.rs b/core/src/box_kind.rs
index 239536b6..be873dc4 100644
--- a/core/src/box_kind.rs
+++ b/core/src/box_kind.rs
@@ -4,6 +4,7 @@ mod oracle_box;
mod pool_box;
mod refresh_box;
mod update_box;
+mod devreward_box;
pub use ballot_box::*;
pub use buyback_box::*;
@@ -11,3 +12,4 @@ pub use oracle_box::*;
pub use pool_box::*;
pub use refresh_box::*;
pub use update_box::*;
+pub use devreward_box::*;
diff --git a/core/src/box_kind/buyback_box.rs b/core/src/box_kind/buyback_box.rs
index cfda19f5..90fcc553 100644
--- a/core/src/box_kind/buyback_box.rs
+++ b/core/src/box_kind/buyback_box.rs
@@ -43,23 +43,22 @@ impl BuybackBoxWrapper {
}
pub fn new_without_reward_token(&self) -> ErgoBoxCandidate {
- // take only buyback nft
- let tokens = vec![self
+ // take only buyback nft - todo: 1 gort should remain as well
+ let tokens_vec = vec![self
.ergo_box
.tokens
.as_ref()
.unwrap()
.get(0)
.unwrap()
- .clone()]
- .try_into()
- .unwrap();
+ .clone()];
+ let tokens = tokens_vec.try_into().unwrap();
ErgoBoxCandidate {
value: self.ergo_box.value,
ergo_tree: self.ergo_box.ergo_tree.clone(),
tokens: Some(tokens),
additional_registers: self.ergo_box.additional_registers.clone(),
- creation_height: self.ergo_box.creation_height,
+ creation_height: self.ergo_box.creation_height, // todo: should be increased!!!
}
}
}
diff --git a/core/src/box_kind/devreward_box.rs b/core/src/box_kind/devreward_box.rs
new file mode 100644
index 00000000..0983980d
--- /dev/null
+++ b/core/src/box_kind/devreward_box.rs
@@ -0,0 +1,49 @@
+
+use ergo_lib::ergotree_ir::chain::ergo_box::{BoxTokens, ErgoBoxCandidate};
+use ergo_lib::ergotree_ir::chain::ergo_box::ErgoBox;
+use thiserror::Error;
+use ergo_lib::ergotree_ir::chain::token::Token;
+
+use crate::spec_token::RewardTokenId;
+use crate::TokenAmount;
+
+#[derive(Debug, Error)]
+pub enum DevRewardBoxError {}
+
+#[derive(Debug, Clone)]
+pub struct DevRewardBoxWrapper {
+ ergo_box: ErgoBox,
+ reward_token_id: RewardTokenId,
+}
+
+
+#[allow(clippy::todo)]
+impl DevRewardBoxWrapper {
+ pub fn new(ergo_box: ErgoBox, reward_token_id: RewardTokenId) -> Self {
+ Self {
+ ergo_box,
+ reward_token_id,
+ }
+ }
+
+ pub fn get_box(&self) -> &ErgoBox {
+ &self.ergo_box
+ }
+
+ pub fn add_reward_tokens(&self, to_add: TokenAmount, height: u32) -> ErgoBoxCandidate {
+ let tokens_vec = self.ergo_box.tokens.as_ref().unwrap();
+ let reward_token = tokens_vec.get(1).unwrap().clone();
+ let upd_amt: TokenAmount = (reward_token.amount.as_u64() + to_add.as_u64()).try_into().unwrap();
+ let upd_token: Token = (reward_token.token_id, upd_amt).into();
+
+ let tokens: BoxTokens = vec![tokens_vec.get(0).unwrap().clone(), upd_token].try_into().unwrap();
+
+ ErgoBoxCandidate {
+ value: self.ergo_box.value,
+ ergo_tree: self.ergo_box.ergo_tree.clone(),
+ tokens: Some(tokens),
+ additional_registers: self.ergo_box.additional_registers.clone(),
+ creation_height: height,
+ }
+ }
+}
diff --git a/core/src/oracle_state.rs b/core/src/oracle_state.rs
index c4c8fd2c..5a235942 100644
--- a/core/src/oracle_state.rs
+++ b/core/src/oracle_state.rs
@@ -3,7 +3,7 @@ use crate::box_kind::{
BuybackBoxWrapper, CollectedOracleBox, OracleBox, OracleBoxError, OracleBoxWrapper,
OracleBoxWrapperInputs, PoolBox, PoolBoxError, PoolBoxWrapper, PoolBoxWrapperInputs,
PostedOracleBox, RefreshBoxError, RefreshBoxWrapper, RefreshBoxWrapperInputs, UpdateBoxError,
- UpdateBoxWrapper, UpdateBoxWrapperInputs, VoteBallotBoxWrapper,
+ UpdateBoxWrapper, UpdateBoxWrapperInputs, VoteBallotBoxWrapper, DevRewardBoxWrapper,
};
use crate::datapoint_source::DataPointSourceError;
use crate::oracle_config::ORACLE_CONFIG;
@@ -12,7 +12,7 @@ use crate::pool_config::POOL_CONFIG;
use crate::scans::{GenericTokenScan, NodeScanRegistry, ScanError, ScanGetBoxes};
use crate::spec_token::{
BallotTokenId, BuybackTokenId, OracleTokenId, PoolTokenId, RefreshTokenId, RewardTokenId,
- TokenIdKind, UpdateTokenId,
+ TokenIdKind, UpdateTokenId, DevRewardTokenId
};
use crate::util::get_token_count;
use anyhow::Error;
@@ -87,6 +87,11 @@ pub trait BuybackBoxSource {
fn get_buyback_box(&self) -> Result