Created
December 18, 2018 18:31
-
-
Save okwme/446b334a4f0259f786f2c08e635e63d9 to your computer and use it in GitHub Desktop.
JS Bin // source https://jsbin.com/lageziw
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width"> | |
<title>JS Bin</title> | |
</head> | |
<body> | |
<script id="jsbin-javascript"> | |
var s = { | |
balance: 100, | |
totalSupply: 1000, | |
weight: .5, | |
weight_: 500000, | |
ppm: 1000000 | |
} | |
console.log('original state s precise price is ' + pp(s)) | |
var purchase_a = 5 | |
var purchase_b = 2 | |
var buy_1 = 200 | |
var buy_2 = 20 | |
var sell_z = 100 | |
var sa = makeBuy_deposit(purchase_a, s) | |
console.log('state sa precise price is ' + pp(sa)) | |
var s1 = makeBuy_tokens(buy_1, s) | |
console.log('state s1 precise price is ' + pp(s1)) | |
var sb = makeBuy_deposit(purchase_b, s) | |
console.log('state sb precise price is ' + pp(sb)) | |
var s2 = makeBuy_tokens(buy_2, s) | |
console.log('state s2 precise price is ' + pp(s2)) | |
var sz = makeSell_tokens(sell_z, s) | |
console.log("state sz precise price is " + pp(sz)) | |
console.log('---') | |
var sab = makeBuy_deposit(purchase_b, sa) | |
console.log("state sab precise price is " + pp(sab)) | |
var saz = makeSell_tokens(sell_z, sa) | |
console.log("state saz precise price is " + pp(saz)) | |
var sba = makeBuy_deposit(purchase_a, sb) | |
console.log("state sba precise price is " + pp(sba)) | |
var sbz = makeSell_tokens(sell_z, sb) | |
console.log("state sbz precise price is " + pp(sbz)) | |
var sza = makeBuy_deposit(purchase_a, sz) | |
console.log("state sza precise price is " + pp(sza)) | |
var szb = makeBuy_deposit(purchase_b, sz) | |
console.log("state szb precise price is " + pp(szb)) | |
console.log('---') | |
var sabz = makeSell_tokens(sell_z, sab) | |
console.log("state sabz precise price is " + pp(sabz)) | |
var sazb = makeBuy_deposit(purchase_b, saz) | |
console.log("state sazb precise price is " + pp(sazb)) | |
var sbaz = makeSell_tokens(sell_z, sba) | |
console.log("state sbaz precise price is " + pp(sbaz)) | |
var sbza = makeBuy_deposit(purchase_a, sbz) | |
console.log("state sbza precise price is " + pp(sbza)) | |
var szab = makeBuy_deposit(purchase_b, sza) | |
console.log("state szab precise price is " + pp(szab)) | |
var szba = makeBuy_deposit(purchase_a, szb) | |
console.log("state szba precise price is " + pp(szba)) | |
var s12z = makeSell_tokens(sell_z, makeBuy_tokens(buy_2, makeBuy_tokens(buy_1, s))) | |
console.log("s12z precise price is " + pp(s12z)) | |
var sz12 = makeBuy_tokens(buy_2, makeBuy_tokens(buy_1, makeSell_tokens(sell_z, s))) | |
console.log("sz12 precise price is " + pp(sz12)) | |
console.log("state average pp is " + (pp(sabz) + pp(szab)) / 2) | |
var delta_balance_sabz = Math.abs(s.balance - sabz.balance) | |
console.log("sabz delta balance = " + delta_balance_sabz) | |
console.log("szab delta balance = " + (s.balance - szab.balance)) | |
console.log("sabz delta supply = " + (s.totalSupply - sabz.totalSupply)) | |
console.log("szab delta supply = " + (s.totalSupply - szab.totalSupply)) | |
console.log("sabz delta price = " + (s.balance - sabz.balance) / (s.totalSupply - sabz.totalSupply)) | |
console.log("szab delta price = " + (s.balance - szab.balance) / (s.totalSupply - szab.totalSupply)) | |
function purchaseReturn(deposit, s) { | |
return s.totalSupply * ((1 + deposit / s.balance) ** (s.weight_ / s.ppm) - 1) | |
} | |
function saleReturn(tokens, s) { | |
return s.balance * (1 - (1 - (tokens / s.totalSupply)) ** (1 / (s.weight_ / s.ppm))) | |
} | |
function buyPrice(tokens, s) { | |
return s.balance * ((1 + (tokens / s.totalSupply)) ** (1 / (s.weight_ / s.ppm)) - 1); | |
} | |
function makeBuy_deposit(deposit, s) { | |
var s_ = JSON.parse(JSON.stringify(s)) | |
var tokens = purchaseReturn(deposit, s_) | |
s_.balance = s_.balance + deposit | |
s_.totalSupply = s_.totalSupply + tokens | |
return s_ | |
} | |
function makeBuy_tokens(tokens, s) { | |
var s_ = JSON.parse(JSON.stringify(s)) | |
var amount = buyPrice(tokens, s_) | |
s_.balance = s_.balance + amount | |
s_.totalSupply = s_.totalSupply + tokens | |
return s_ | |
} | |
function makeSell_tokens(tokens, s) { | |
var s_ = JSON.parse(JSON.stringify(s)) | |
var amount = saleReturn(tokens, s_) | |
s_.balance = s_.balance - amount | |
s_.totalSupply = s_.totalSupply - tokens | |
return s_ | |
} | |
function pp(s) { | |
return (s.balance / (s.totalSupply * s.weight_)) * s.ppm | |
} | |
</script> | |
<script id="jsbin-source-javascript" type="text/javascript">var s = { | |
balance: 100, | |
totalSupply: 1000, | |
weight: .5, | |
weight_: 500000, | |
ppm: 1000000 | |
} | |
console.log('original state s precise price is ' + pp(s)) | |
var purchase_a = 5 | |
var purchase_b = 2 | |
var buy_1 = 200 | |
var buy_2 = 20 | |
var sell_z = 100 | |
var sa = makeBuy_deposit(purchase_a, s) | |
console.log('state sa precise price is ' + pp(sa)) | |
var s1 = makeBuy_tokens(buy_1, s) | |
console.log('state s1 precise price is ' + pp(s1)) | |
var sb = makeBuy_deposit(purchase_b, s) | |
console.log('state sb precise price is ' + pp(sb)) | |
var s2 = makeBuy_tokens(buy_2, s) | |
console.log('state s2 precise price is ' + pp(s2)) | |
var sz = makeSell_tokens(sell_z, s) | |
console.log("state sz precise price is " + pp(sz)) | |
console.log('---') | |
var sab = makeBuy_deposit(purchase_b, sa) | |
console.log("state sab precise price is " + pp(sab)) | |
var saz = makeSell_tokens(sell_z, sa) | |
console.log("state saz precise price is " + pp(saz)) | |
var sba = makeBuy_deposit(purchase_a, sb) | |
console.log("state sba precise price is " + pp(sba)) | |
var sbz = makeSell_tokens(sell_z, sb) | |
console.log("state sbz precise price is " + pp(sbz)) | |
var sza = makeBuy_deposit(purchase_a, sz) | |
console.log("state sza precise price is " + pp(sza)) | |
var szb = makeBuy_deposit(purchase_b, sz) | |
console.log("state szb precise price is " + pp(szb)) | |
console.log('---') | |
var sabz = makeSell_tokens(sell_z, sab) | |
console.log("state sabz precise price is " + pp(sabz)) | |
var sazb = makeBuy_deposit(purchase_b, saz) | |
console.log("state sazb precise price is " + pp(sazb)) | |
var sbaz = makeSell_tokens(sell_z, sba) | |
console.log("state sbaz precise price is " + pp(sbaz)) | |
var sbza = makeBuy_deposit(purchase_a, sbz) | |
console.log("state sbza precise price is " + pp(sbza)) | |
var szab = makeBuy_deposit(purchase_b, sza) | |
console.log("state szab precise price is " + pp(szab)) | |
var szba = makeBuy_deposit(purchase_a, szb) | |
console.log("state szba precise price is " + pp(szba)) | |
var s12z = makeSell_tokens(sell_z, makeBuy_tokens(buy_2, makeBuy_tokens(buy_1, s))) | |
console.log("s12z precise price is " + pp(s12z)) | |
var sz12 = makeBuy_tokens(buy_2, makeBuy_tokens(buy_1, makeSell_tokens(sell_z, s))) | |
console.log("sz12 precise price is " + pp(sz12)) | |
console.log("state average pp is " + (pp(sabz) + pp(szab)) / 2) | |
var delta_balance_sabz = Math.abs(s.balance - sabz.balance) | |
console.log("sabz delta balance = " + delta_balance_sabz) | |
console.log("szab delta balance = " + (s.balance - szab.balance)) | |
console.log("sabz delta supply = " + (s.totalSupply - sabz.totalSupply)) | |
console.log("szab delta supply = " + (s.totalSupply - szab.totalSupply)) | |
console.log("sabz delta price = " + (s.balance - sabz.balance) / (s.totalSupply - sabz.totalSupply)) | |
console.log("szab delta price = " + (s.balance - szab.balance) / (s.totalSupply - szab.totalSupply)) | |
function purchaseReturn(deposit, s) { | |
return s.totalSupply * ((1 + deposit / s.balance) ** (s.weight_ / s.ppm) - 1) | |
} | |
function saleReturn(tokens, s) { | |
return s.balance * (1 - (1 - (tokens / s.totalSupply)) ** (1 / (s.weight_ / s.ppm))) | |
} | |
function buyPrice(tokens, s) { | |
return s.balance * ((1 + (tokens / s.totalSupply)) ** (1 / (s.weight_ / s.ppm)) - 1); | |
} | |
function makeBuy_deposit(deposit, s) { | |
var s_ = JSON.parse(JSON.stringify(s)) | |
var tokens = purchaseReturn(deposit, s_) | |
s_.balance = s_.balance + deposit | |
s_.totalSupply = s_.totalSupply + tokens | |
return s_ | |
} | |
function makeBuy_tokens(tokens, s) { | |
var s_ = JSON.parse(JSON.stringify(s)) | |
var amount = buyPrice(tokens, s_) | |
s_.balance = s_.balance + amount | |
s_.totalSupply = s_.totalSupply + tokens | |
return s_ | |
} | |
function makeSell_tokens(tokens, s) { | |
var s_ = JSON.parse(JSON.stringify(s)) | |
var amount = saleReturn(tokens, s_) | |
s_.balance = s_.balance - amount | |
s_.totalSupply = s_.totalSupply - tokens | |
return s_ | |
} | |
function pp(s) { | |
return (s.balance / (s.totalSupply * s.weight_)) * s.ppm | |
}</script></body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var s = { | |
balance: 100, | |
totalSupply: 1000, | |
weight: .5, | |
weight_: 500000, | |
ppm: 1000000 | |
} | |
console.log('original state s precise price is ' + pp(s)) | |
var purchase_a = 5 | |
var purchase_b = 2 | |
var buy_1 = 200 | |
var buy_2 = 20 | |
var sell_z = 100 | |
var sa = makeBuy_deposit(purchase_a, s) | |
console.log('state sa precise price is ' + pp(sa)) | |
var s1 = makeBuy_tokens(buy_1, s) | |
console.log('state s1 precise price is ' + pp(s1)) | |
var sb = makeBuy_deposit(purchase_b, s) | |
console.log('state sb precise price is ' + pp(sb)) | |
var s2 = makeBuy_tokens(buy_2, s) | |
console.log('state s2 precise price is ' + pp(s2)) | |
var sz = makeSell_tokens(sell_z, s) | |
console.log("state sz precise price is " + pp(sz)) | |
console.log('---') | |
var sab = makeBuy_deposit(purchase_b, sa) | |
console.log("state sab precise price is " + pp(sab)) | |
var saz = makeSell_tokens(sell_z, sa) | |
console.log("state saz precise price is " + pp(saz)) | |
var sba = makeBuy_deposit(purchase_a, sb) | |
console.log("state sba precise price is " + pp(sba)) | |
var sbz = makeSell_tokens(sell_z, sb) | |
console.log("state sbz precise price is " + pp(sbz)) | |
var sza = makeBuy_deposit(purchase_a, sz) | |
console.log("state sza precise price is " + pp(sza)) | |
var szb = makeBuy_deposit(purchase_b, sz) | |
console.log("state szb precise price is " + pp(szb)) | |
console.log('---') | |
var sabz = makeSell_tokens(sell_z, sab) | |
console.log("state sabz precise price is " + pp(sabz)) | |
var sazb = makeBuy_deposit(purchase_b, saz) | |
console.log("state sazb precise price is " + pp(sazb)) | |
var sbaz = makeSell_tokens(sell_z, sba) | |
console.log("state sbaz precise price is " + pp(sbaz)) | |
var sbza = makeBuy_deposit(purchase_a, sbz) | |
console.log("state sbza precise price is " + pp(sbza)) | |
var szab = makeBuy_deposit(purchase_b, sza) | |
console.log("state szab precise price is " + pp(szab)) | |
var szba = makeBuy_deposit(purchase_a, szb) | |
console.log("state szba precise price is " + pp(szba)) | |
var s12z = makeSell_tokens(sell_z, makeBuy_tokens(buy_2, makeBuy_tokens(buy_1, s))) | |
console.log("s12z precise price is " + pp(s12z)) | |
var sz12 = makeBuy_tokens(buy_2, makeBuy_tokens(buy_1, makeSell_tokens(sell_z, s))) | |
console.log("sz12 precise price is " + pp(sz12)) | |
console.log("state average pp is " + (pp(sabz) + pp(szab)) / 2) | |
var delta_balance_sabz = Math.abs(s.balance - sabz.balance) | |
console.log("sabz delta balance = " + delta_balance_sabz) | |
console.log("szab delta balance = " + (s.balance - szab.balance)) | |
console.log("sabz delta supply = " + (s.totalSupply - sabz.totalSupply)) | |
console.log("szab delta supply = " + (s.totalSupply - szab.totalSupply)) | |
console.log("sabz delta price = " + (s.balance - sabz.balance) / (s.totalSupply - sabz.totalSupply)) | |
console.log("szab delta price = " + (s.balance - szab.balance) / (s.totalSupply - szab.totalSupply)) | |
function purchaseReturn(deposit, s) { | |
return s.totalSupply * ((1 + deposit / s.balance) ** (s.weight_ / s.ppm) - 1) | |
} | |
function saleReturn(tokens, s) { | |
return s.balance * (1 - (1 - (tokens / s.totalSupply)) ** (1 / (s.weight_ / s.ppm))) | |
} | |
function buyPrice(tokens, s) { | |
return s.balance * ((1 + (tokens / s.totalSupply)) ** (1 / (s.weight_ / s.ppm)) - 1); | |
} | |
function makeBuy_deposit(deposit, s) { | |
var s_ = JSON.parse(JSON.stringify(s)) | |
var tokens = purchaseReturn(deposit, s_) | |
s_.balance = s_.balance + deposit | |
s_.totalSupply = s_.totalSupply + tokens | |
return s_ | |
} | |
function makeBuy_tokens(tokens, s) { | |
var s_ = JSON.parse(JSON.stringify(s)) | |
var amount = buyPrice(tokens, s_) | |
s_.balance = s_.balance + amount | |
s_.totalSupply = s_.totalSupply + tokens | |
return s_ | |
} | |
function makeSell_tokens(tokens, s) { | |
var s_ = JSON.parse(JSON.stringify(s)) | |
var amount = saleReturn(tokens, s_) | |
s_.balance = s_.balance - amount | |
s_.totalSupply = s_.totalSupply - tokens | |
return s_ | |
} | |
function pp(s) { | |
return (s.balance / (s.totalSupply * s.weight_)) * s.ppm | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment