This commit is contained in:
2025-01-10 21:13:04 -05:00
parent 1585f39c3f
commit 29b38b0e4b
4 changed files with 47 additions and 77 deletions

View File

@@ -4,7 +4,4 @@ AT Luni
AT Hamza AT Hamza
AA USD AA USD
AA BTC AA BTC
SR 0 19999999 0 0 0 SR 0 20000000 0 0 0
AF 2 1 300000000
AF 1 0 186A000000000
OR 2 1 100000000 0 C35000000000

8
royalty1.log Normal file
View File

@@ -0,0 +1,8 @@
OR 3 0 1FE3FBAD19 1 27E6390B60
OR 1 1 36D7DEE73 0 257D2AD487
OR 1 0 D06BEB6BD 1 DDD310931
AF 1 0 19062A3F90
AF 1 0 1FFCFCEF35
AF 1 0 1BED05581E
OR 3 1 98F9EFF44 0 266AA46814
OR 1 0 1A10091947 1 273A6E40B5

View File

@@ -4,60 +4,12 @@ AT Luni
AT Hamza AT Hamza
AA USD AA USD
AA BTC AA BTC
SR 0 19999999 0 0 0 SR 0 20000000 0 0 0
AF 2 1 300000000 OR 3 0 1FE3FBAD19 1 27E6390B60
AF 1 0 186A000000000 OR 1 1 36D7DEE73 0 257D2AD487
OR 2 1 100000000 0 C35000000000 OR 1 0 D06BEB6BD 1 DDD310931
AF 1 1 ACE83D9EF AF 1 0 19062A3F90
OR 2 0 15D5D8C3CB 1 22E47E2200 AF 1 0 1FFCFCEF35
OR 3 0 26CB337DD5 1 ACD3E91F2 AF 1 0 1BED05581E
AF 3 0 1D3A019779 OR 3 1 98F9EFF44 0 266AA46814
OR 3 0 B1DA434FB 0 210C92AE55 OR 1 0 1A10091947 1 273A6E40B5
OR 2 0 11DDFBC46C 0 DACB9F3D4
AF 1 1 E1005209A
OR 2 1 22E75D81E3 0 9CBC333A2
OR 3 0 3A9242373 1 1AF77C6986
AF 2 0 1C84BBAE46
OR 1 1 B879225DF 1 18A0C5B45E
AF 2 0 1452304323
OR 2 1 C0018AAA3 1 1A500004CD
OR 1 1 135449AF8C 0 1A67D1E710
AF 2 0 8EE2180B3
AF 3 1 17121D5C61
AF 1 0 1E9AB01EB1
AF 3 0 B2E37729F
AF 1 1 220E7284DA
AF 1 0 123B372ECB
AF 1 0 10A541F58
OR 3 0 558A3A8AB 0 2131276853
AF 2 1 925697F87
OR 1 1 1FD8DF58DA 0 1D97892E00
OR 2 1 DF6EF82EC 0 2171CC3DC0
AF 1 1 1101009539
AF 3 1 19DCE5BB2B
AF 2 0 65B44C278
OR 2 0 5D93BF9B8 1 275986FEF2
AF 3 0 20F18F43A1
AF 1 1 14B5273635
AF 3 1 1B06E91469
AF 1 1 A961C7185
AF 3 0 215A67F066
AF 2 0 25C8BF3081
OR 2 0 258E850E53 0 D6FCDD020
OR 2 1 EFB29F026 0 2354900CA0
AF 3 0 E3963FDB9
AF 1 0 E7B15040E
AF 3 1 ECC0EF2D8
OR 3 0 E3D168148 0 17E3F3BD0D
AF 2 1 148A726A4F
AF 3 1 20500A0096
OR 1 1 22E37DAED5 1 11A428EBED
OR 2 0 1F5F00B3DC 1 191D073AA5
OR 2 0 1737501E7A 0 B34594662
AF 2 1 2264503554
AF 1 0 152666DDF8
AF 2 1 13B4F9E9DB
OR 2 1 C01F4E14F 0 4C2212B6E
OR 3 0 A9847B6C4 0 32D75C3D6
OR 1 0 1D5D97256 1 188F04C616
OR 1 0 D6D67EF49 1 131201FFB9

View File

@@ -290,6 +290,7 @@ impl RoyaltyTree {
self.add_royalty(redist); self.add_royalty(redist);
} }
fn set_location(&mut self, id: usize, index: usize) { fn set_location(&mut self, id: usize, index: usize) {
self.tree[index].order_id=id;
self.order_finder.insert(id,index); self.order_finder.insert(id,index);
} }
fn add_weight(&mut self, index: usize, weight: FiNum) { fn add_weight(&mut self, index: usize, weight: FiNum) {
@@ -462,29 +463,37 @@ impl Market {
let mut sorted=pq.v.clone(); let mut sorted=pq.v.clone();
sorted.sort_by(|a,b| { (a.sell_qty/a.buy_qty).cmp(&(b.sell_qty/b.buy_qty)) }); sorted.sort_by(|a,b| { (a.sell_qty/a.buy_qty).cmp(&(b.sell_qty/b.buy_qty)) });
for off in sorted.iter() { for off in sorted.iter() {
let rt=self.royalties.get_mut(&ap.1).unwrap();
let indexr=rt.order_finder.get(&off.order_id).unwrap();
let royalty_amt=rt.get_royalty(*indexr);
println!(" {} @ {} ({}) OrderID: {} Royalties: {}", println!(" {} @ {} ({}) OrderID: {} Royalties: {}",
off.sell_remain, // off.buy_qty*off.sell_remain/off.sell_qty, off.sell_remain, // off.buy_qty*off.sell_remain/off.sell_qty,
(off.buy_qty/off.sell_qty).fmt_recip(), (off.buy_qty/off.sell_qty).fmt_recip(),
self.traders[off.owner as usize].name, self.traders[off.owner as usize].name,
off.order_id, off.order_id,
"GetRoyalties Code absent"); royalty_amt);
} }
} }
println!("Royalties accumulated but not captured:"); println!("Royalties accumulated but not captured:");
for index in 0..self.assets.len() { for index in 0..self.assets.len() {
self.royalties.entry(index).or_insert(RoyaltyTree::new());
let tot=self.royalties.get(&index).unwrap().acc_total(); let tot=self.royalties.get(&index).unwrap().acc_total();
println!(" For {}: {}",self.number_to_asset(index).name,tot); println!(" For {}: {}",self.number_to_asset(index).name,tot);
for indexr in 0..self.royalties.get(&index).unwrap().tree.len() { let rt=self.royalties.get_mut(&index).unwrap();
// let roy=self.royalties.get(&index).unwrap().get_royalty(indexr); for indexr in 0..rt.tree.len() {
println!(" Index {} Count {} Weight {} Lazy {} Acc {} Royalty", let royalty_amt=rt.get_royalty(indexr);
indexr, let r=&rt.tree[indexr];
self.royalties.get(&index).unwrap().tree[indexr].count, let count=r.count;
self.royalties.get(&index).unwrap().tree[indexr].weight, let weight=r.weight;
self.royalties.get(&index).unwrap().tree[indexr].lazy, let lazy=r.lazy;
self.royalties.get(&index).unwrap().tree[indexr].acc); let acc=r.acc;
// self.royalties.get(&index).unwrap().get_royalty(indexr)); if !royalty_amt.is_zero() || count!=0 || !weight.is_zero() || !lazy.is_zero() || !acc.is_zero() {
// Heavy Debug println!(" Index {} Count {} Weight {} Lazy {} Acc {} Royalty {} OrderID {}",indexr,r.count,r.weight,r.lazy,r.acc,royalty_amt,r.order_id);
println!(" Index {} Weight {} Royalty {} OrderID {}",indexr,r.weight,royalty_amt,r.order_id);
} }
} }
for (k,v) in &rt.order_finder { println!(" Order ID {} at position {}",k,v); }
}
println!("Trader Balances:"); println!("Trader Balances:");
for t in &self.traders { for t in &self.traders {
println!(" Trader {}: {}",t.id,t.name); println!(" Trader {}: {}",t.id,t.name);
@@ -756,11 +765,15 @@ impl Market {
2 => Command::AddFunds { user_id: self.rng.gen_range(1..self.traders.len()), 2 => Command::AddFunds { user_id: self.rng.gen_range(1..self.traders.len()),
asset_id: self.rng.gen_range(0..self.assets.len()), asset_id: self.rng.gen_range(0..self.assets.len()),
amt: FiNum::new(self.rng.gen_range(1<<32..20<<32+1)), }, amt: FiNum::new(self.rng.gen_range(1<<32..20<<32+1)), },
3 => Command::Order { user_id: self.rng.gen_range(1..self.traders.len()), 3 => {
sell_type: self.rng.gen_range(0..self.assets.len()), let a0=self.rng.gen_range(0..self.assets.len());
let a1=(a0+self.rng.gen_range(1..self.assets.len()))%self.assets.len();
Command::Order { user_id: self.rng.gen_range(1..self.traders.len()),
sell_type: a0,
sell_qty: FiNum::new(self.rng.gen_range(1<<32..20<<32+1)), sell_qty: FiNum::new(self.rng.gen_range(1<<32..20<<32+1)),
buy_type: self.rng.gen_range(0..self.assets.len()), buy_type: a1,
buy_qty: FiNum::new(self.rng.gen_range(1<<32..20<<32+1)), }, buy_qty: FiNum::new(self.rng.gen_range(1<<32..20<<32+1)), }
},
4 => if let Some(id)=self.random_order_id() { Command::RetractOrder { order_id:id } } else { Command::None }, 4 => if let Some(id)=self.random_order_id() { Command::RetractOrder { order_id:id } } else { Command::None },
_ => Command::Error("This can never happen".to_string()), _ => Command::Error("This can never happen".to_string()),
} }