@silvana-one/token 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node/bid.js +17 -16
- package/dist/node/bid.js.map +1 -1
- package/dist/node/div.d.ts +62 -0
- package/dist/node/div.js +39 -0
- package/dist/node/div.js.map +1 -0
- package/dist/node/index.cjs +348 -304
- package/dist/node/offer.js +7 -6
- package/dist/node/offer.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tsconfig.web.tsbuildinfo +1 -1
- package/dist/web/bid.js +17 -16
- package/dist/web/bid.js.map +1 -1
- package/dist/web/div.d.ts +62 -0
- package/dist/web/div.js +39 -0
- package/dist/web/div.js.map +1 -0
- package/dist/web/offer.js +7 -6
- package/dist/web/offer.js.map +1 -1
- package/package.json +6 -6
- package/src/bid.ts +16 -24
- package/src/div.ts +44 -0
- package/src/offer.ts +6 -8
package/dist/node/bid.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { AccountUpdate, method, Permissions, PublicKey, State, state, UInt64, SmartContract, Bool,
|
|
2
|
+
import { AccountUpdate, method, Permissions, PublicKey, State, state, UInt64, SmartContract, Bool, Struct, } from "o1js";
|
|
3
3
|
import { Whitelist } from "@silvana-one/storage";
|
|
4
4
|
import { FungibleToken } from "./FungibleToken.js";
|
|
5
|
+
import { mulDiv } from "./div.js";
|
|
5
6
|
export class BidEvent extends Struct({
|
|
6
7
|
amount: UInt64,
|
|
7
8
|
address: PublicKey,
|
|
@@ -34,11 +35,11 @@ export class FungibleTokenBidContract extends SmartContract {
|
|
|
34
35
|
async initialize(token, amount, price) {
|
|
35
36
|
this.account.provedState.requireEquals(Bool(false));
|
|
36
37
|
amount.equals(UInt64.from(0)).assertFalse();
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
const totalPrice = mulDiv({
|
|
39
|
+
value: price,
|
|
40
|
+
multiplier: amount,
|
|
41
|
+
denominator: UInt64.from(1_000_000_000),
|
|
42
|
+
}).result;
|
|
42
43
|
const buyer = this.sender.getUnconstrained();
|
|
43
44
|
const buyerUpdate = AccountUpdate.createSigned(buyer);
|
|
44
45
|
buyerUpdate.send({ to: this.address, amount: totalPrice });
|
|
@@ -58,11 +59,11 @@ export class FungibleTokenBidContract extends SmartContract {
|
|
|
58
59
|
.or(balance.equals(UInt64.from(0)))
|
|
59
60
|
.assertTrue();
|
|
60
61
|
this.price.set(price);
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
const totalPrice = mulDiv({
|
|
63
|
+
value: price,
|
|
64
|
+
multiplier: amount,
|
|
65
|
+
denominator: UInt64.from(1_000_000_000),
|
|
66
|
+
}).result;
|
|
66
67
|
const sender = this.sender.getUnconstrained();
|
|
67
68
|
const buyer = this.buyer.getAndRequireEquals();
|
|
68
69
|
sender.assertEquals(buyer);
|
|
@@ -90,11 +91,11 @@ export class FungibleTokenBidContract extends SmartContract {
|
|
|
90
91
|
async sell(amount) {
|
|
91
92
|
amount.equals(UInt64.from(0)).assertFalse();
|
|
92
93
|
const price = this.price.getAndRequireEquals();
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
94
|
+
const totalPrice = mulDiv({
|
|
95
|
+
value: price,
|
|
96
|
+
multiplier: amount,
|
|
97
|
+
denominator: UInt64.from(1_000_000_000),
|
|
98
|
+
}).result;
|
|
98
99
|
this.account.balance.requireBetween(totalPrice, UInt64.MAXINT());
|
|
99
100
|
const buyer = this.buyer.getAndRequireEquals();
|
|
100
101
|
const token = this.token.getAndRequireEquals();
|
package/dist/node/bid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bid.js","sourceRoot":"","sources":["../../src/bid.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EAEb,MAAM,EACN,WAAW,EACX,SAAS,EACT,KAAK,EACL,KAAK,EACL,MAAM,EACN,aAAa,EACb,IAAI,
|
|
1
|
+
{"version":3,"file":"bid.js","sourceRoot":"","sources":["../../src/bid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Field, UInt64 } from "o1js";
|
|
2
|
+
declare const MulDivResult_base: (new (value: {
|
|
3
|
+
result: UInt64;
|
|
4
|
+
remainder: UInt64;
|
|
5
|
+
}) => {
|
|
6
|
+
result: UInt64;
|
|
7
|
+
remainder: UInt64;
|
|
8
|
+
}) & {
|
|
9
|
+
_isStruct: true;
|
|
10
|
+
} & Omit<import("node_modules/o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
|
|
11
|
+
result: UInt64;
|
|
12
|
+
remainder: UInt64;
|
|
13
|
+
}, {
|
|
14
|
+
result: bigint;
|
|
15
|
+
remainder: bigint;
|
|
16
|
+
}>, "fromFields"> & {
|
|
17
|
+
fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]) => {
|
|
18
|
+
result: UInt64;
|
|
19
|
+
remainder: UInt64;
|
|
20
|
+
};
|
|
21
|
+
} & {
|
|
22
|
+
fromValue: (value: {
|
|
23
|
+
result: bigint | UInt64;
|
|
24
|
+
remainder: bigint | UInt64;
|
|
25
|
+
}) => {
|
|
26
|
+
result: UInt64;
|
|
27
|
+
remainder: UInt64;
|
|
28
|
+
};
|
|
29
|
+
toInput: (x: {
|
|
30
|
+
result: UInt64;
|
|
31
|
+
remainder: UInt64;
|
|
32
|
+
}) => {
|
|
33
|
+
fields?: Field[] | undefined;
|
|
34
|
+
packed?: [Field, number][] | undefined;
|
|
35
|
+
};
|
|
36
|
+
toJSON: (x: {
|
|
37
|
+
result: UInt64;
|
|
38
|
+
remainder: UInt64;
|
|
39
|
+
}) => {
|
|
40
|
+
result: string;
|
|
41
|
+
remainder: string;
|
|
42
|
+
};
|
|
43
|
+
fromJSON: (x: {
|
|
44
|
+
result: string;
|
|
45
|
+
remainder: string;
|
|
46
|
+
}) => {
|
|
47
|
+
result: UInt64;
|
|
48
|
+
remainder: UInt64;
|
|
49
|
+
};
|
|
50
|
+
empty: () => {
|
|
51
|
+
result: UInt64;
|
|
52
|
+
remainder: UInt64;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
export declare class MulDivResult extends MulDivResult_base {
|
|
56
|
+
}
|
|
57
|
+
export declare function mulDiv(params: {
|
|
58
|
+
value: UInt64;
|
|
59
|
+
multiplier: UInt64;
|
|
60
|
+
denominator: UInt64;
|
|
61
|
+
}): MulDivResult;
|
|
62
|
+
export {};
|
package/dist/node/div.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Field, Provable, UInt64, Gadgets, Struct } from "o1js";
|
|
2
|
+
export class MulDivResult extends Struct({
|
|
3
|
+
result: UInt64,
|
|
4
|
+
remainder: UInt64,
|
|
5
|
+
}) {
|
|
6
|
+
}
|
|
7
|
+
class MulDivResultInternal extends Struct({
|
|
8
|
+
result: Field,
|
|
9
|
+
remainder: Field,
|
|
10
|
+
}) {
|
|
11
|
+
}
|
|
12
|
+
export function mulDiv(params) {
|
|
13
|
+
const { value, multiplier, denominator } = params;
|
|
14
|
+
denominator.equals(UInt64.zero).assertFalse("division by zero"); // should fail in case the denominator is zero
|
|
15
|
+
const fields = Provable.witness(MulDivResultInternal, () => {
|
|
16
|
+
const valueBigInt = value.toBigInt();
|
|
17
|
+
const multiplierBigInt = multiplier.toBigInt();
|
|
18
|
+
const denominatorBigInt = denominator.toBigInt();
|
|
19
|
+
// handle division by zero for first pass of the prover that can pass zero instead of the real value
|
|
20
|
+
if (denominatorBigInt === 0n) {
|
|
21
|
+
return { result: Field.from(0n), remainder: Field.from(0n) };
|
|
22
|
+
}
|
|
23
|
+
const result = (valueBigInt * multiplierBigInt) / denominatorBigInt;
|
|
24
|
+
const remainder = valueBigInt * multiplierBigInt - result * denominatorBigInt;
|
|
25
|
+
return { result: Field.from(result), remainder: Field.from(remainder) };
|
|
26
|
+
});
|
|
27
|
+
Gadgets.rangeCheck64(fields.result);
|
|
28
|
+
Gadgets.rangeCheck64(fields.remainder);
|
|
29
|
+
fields.remainder.assertLessThan(denominator.value); // should fail in case the denominator is zero
|
|
30
|
+
fields.result
|
|
31
|
+
.mul(denominator.value)
|
|
32
|
+
.add(fields.remainder)
|
|
33
|
+
.assertEquals(value.value.mul(multiplier.value)); // should fail in case the denominator is zero
|
|
34
|
+
return {
|
|
35
|
+
result: UInt64.Unsafe.fromField(fields.result),
|
|
36
|
+
remainder: UInt64.Unsafe.fromField(fields.remainder),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=div.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"div.js","sourceRoot":"","sources":["../../src/div.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEhE,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC;IACvC,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,MAAM;CAClB,CAAC;CAAG;AAEL,MAAM,oBAAqB,SAAQ,MAAM,CAAC;IACxC,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,KAAK;CACjB,CAAC;CAAG;AAEL,MAAM,UAAU,MAAM,CAAC,MAItB;IACC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAClD,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,8CAA8C;IAC/G,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,oBAAoB,EAAE,GAAG,EAAE;QACzD,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,iBAAiB,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACjD,oGAAoG;QACpG,IAAI,iBAAiB,KAAK,EAAE,EAAE,CAAC;YAC7B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/D,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC,GAAG,iBAAiB,CAAC;QACpE,MAAM,SAAS,GACb,WAAW,GAAG,gBAAgB,GAAG,MAAM,GAAG,iBAAiB,CAAC;QAC9D,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;IAC1E,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,8CAA8C;IAClG,MAAM,CAAC,MAAM;SACV,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;SACtB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;SACrB,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,8CAA8C;IAClG,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9C,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;KACrD,CAAC;AACJ,CAAC"}
|