@dignetwork/dig-sdk 0.0.1-alpha.21 → 0.0.1-alpha.23
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/DigNetwork/DigPeer.d.ts +5 -0
- package/dist/DigNetwork/DigPeer.d.ts.map +1 -1
- package/dist/DigNetwork/DigPeer.js +25 -11
- package/dist/blockchain/ServerCoin.d.ts +2 -0
- package/dist/blockchain/ServerCoin.d.ts.map +1 -1
- package/dist/blockchain/ServerCoin.js +16 -9
- package/package.json +1 -1
|
@@ -14,6 +14,11 @@ export declare class DigPeer {
|
|
|
14
14
|
get IpAddress(): string;
|
|
15
15
|
validateStore(rootHash: string, keys: string[]): Promise<boolean>;
|
|
16
16
|
isSynced(): Promise<boolean>;
|
|
17
|
+
static sendEqualBulkPayments(walletName: string, addresses: string[], totalAmount: bigint): Promise<void>;
|
|
18
|
+
static sendBulkPayments(walletName: string, outputs: {
|
|
19
|
+
puzzleHash: Buffer;
|
|
20
|
+
amount: bigint;
|
|
21
|
+
}[]): Promise<void>;
|
|
17
22
|
sendPayment(walletName: string, amount: bigint): Promise<void>;
|
|
18
23
|
}
|
|
19
24
|
//# sourceMappingURL=DigPeer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DigPeer.d.ts","sourceRoot":"","sources":["../../src/DigNetwork/DigPeer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAcpD,qBAAa,OAAO;IAClB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,gBAAgB,CAAkB;gBAE9B,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAS9C,IAAW,aAAa,IAAI,aAAa,CAExC;IAGD,IAAW,iBAAiB,IAAI,iBAAiB,CAEhD;IAGD,IAAW,eAAe,IAAI,eAAe,CAE5C;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAEY,aAAa,CACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DigPeer.d.ts","sourceRoot":"","sources":["../../src/DigNetwork/DigPeer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAcpD,qBAAa,OAAO;IAClB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,gBAAgB,CAAkB;gBAE9B,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAS9C,IAAW,aAAa,IAAI,aAAa,CAExC;IAGD,IAAW,iBAAiB,IAAI,iBAAiB,CAEhD;IAGD,IAAW,eAAe,IAAI,eAAe,CAE5C;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAEY,aAAa,CACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,OAAO,CAAC;IAgHN,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;WA2B3B,qBAAqB,CACjC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;WAwBI,gBAAgB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,GAChD,OAAO,CAAC,IAAI,CAAC;IAkCH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO5E"}
|
|
@@ -137,21 +137,28 @@ class DigPeer {
|
|
|
137
137
|
return false;
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
140
|
+
static sendEqualBulkPayments(walletName, addresses, totalAmount) {
|
|
141
|
+
// Use a Set to ensure unique addresses
|
|
142
|
+
const uniqueAddresses = Array.from(new Set(addresses));
|
|
143
|
+
// Convert unique addresses to puzzle hashes
|
|
144
|
+
const puzzleHashes = uniqueAddresses.map((address) => (0, datalayer_driver_1.addressToPuzzleHash)(address));
|
|
145
|
+
// Calculate amount per puzzle hash
|
|
146
|
+
const amountPerPuzzleHash = totalAmount / BigInt(puzzleHashes.length);
|
|
147
|
+
// Create outputs array
|
|
148
|
+
const outputs = puzzleHashes.map((puzzleHash) => ({
|
|
149
|
+
puzzleHash,
|
|
150
|
+
amount: amountPerPuzzleHash,
|
|
151
|
+
}));
|
|
152
|
+
// Call the sendBulkPayments function with the generated outputs
|
|
153
|
+
return DigPeer.sendBulkPayments(walletName, outputs);
|
|
154
|
+
}
|
|
155
|
+
static async sendBulkPayments(walletName, outputs) {
|
|
143
156
|
const fee = BigInt(1000);
|
|
144
157
|
const wallet = await blockchain_3.Wallet.load(walletName);
|
|
145
158
|
const publicSyntheticKey = await wallet.getPublicSyntheticKey();
|
|
146
159
|
const peer = await blockchain_2.FullNodePeer.connect();
|
|
147
|
-
const
|
|
148
|
-
const
|
|
149
|
-
const outputs = [
|
|
150
|
-
{
|
|
151
|
-
puzzleHash: paymentAddressPuzzleHash,
|
|
152
|
-
amount: amount,
|
|
153
|
-
},
|
|
154
|
-
];
|
|
160
|
+
const totalAmount = outputs.reduce((acc, output) => acc + output.amount, BigInt(0));
|
|
161
|
+
const coins = await (0, coins_1.selectUnspentCoins)(peer, totalAmount, fee, [], walletName);
|
|
155
162
|
const coinSpends = await (0, datalayer_driver_1.sendXch)(publicSyntheticKey, coins, outputs, fee);
|
|
156
163
|
const sig = (0, datalayer_driver_1.signCoinSpends)(coinSpends, [await wallet.getPrivateSyntheticKey()], false);
|
|
157
164
|
const err = await peer.broadcastSpend(coinSpends, [sig]);
|
|
@@ -160,5 +167,12 @@ class DigPeer {
|
|
|
160
167
|
}
|
|
161
168
|
await blockchain_2.FullNodePeer.waitForConfirmation((0, datalayer_driver_1.getCoinId)(coins[0]));
|
|
162
169
|
}
|
|
170
|
+
async sendPayment(walletName, amount) {
|
|
171
|
+
const paymentAddress = await this.contentServer.getPaymentAddress();
|
|
172
|
+
const paymentAddressPuzzleHash = (0, datalayer_driver_1.addressToPuzzleHash)(paymentAddress);
|
|
173
|
+
return DigPeer.sendBulkPayments(walletName, [
|
|
174
|
+
{ puzzleHash: paymentAddressPuzzleHash, amount },
|
|
175
|
+
]);
|
|
176
|
+
}
|
|
163
177
|
}
|
|
164
178
|
exports.DigPeer = DigPeer;
|
|
@@ -8,6 +8,8 @@ export declare class ServerCoin {
|
|
|
8
8
|
saveServerCoinData(serverCoin: ServerCoinDriver, epoch: number, peerIp: string): Promise<void>;
|
|
9
9
|
melt(epoch: number, peerIp: string): Promise<void>;
|
|
10
10
|
private removeServerCoinData;
|
|
11
|
+
getAllEpochPeers(epoch: number, blacklist?: string[]): Promise<string[]>;
|
|
12
|
+
getActiveEpochPeers(blacklist?: string[]): Promise<string[]>;
|
|
11
13
|
sampleCurrentEpoch(sampleSize?: number, blacklist?: string[]): Promise<string[]>;
|
|
12
14
|
sampleServerCoinsByEpoch(epoch: number, sampleSize?: number, blacklist?: string[]): Promise<string[]>;
|
|
13
15
|
static getCurrentEpoch(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerCoin.d.ts","sourceRoot":"","sources":["../../src/blockchain/ServerCoin.ts"],"names":[],"mappings":"AACA,OAAO,EAML,UAAU,IAAI,gBAAgB,EAE/B,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAMrD,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,gBAAuB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"ServerCoin.d.ts","sourceRoot":"","sources":["../../src/blockchain/ServerCoin.ts"],"names":[],"mappings":"AACA,OAAO,EAML,UAAU,IAAI,gBAAgB,EAE/B,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAMrD,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,gBAAuB,iBAAiB,eAEtC;gBAEU,OAAO,EAAE,MAAM;IAKd,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA2DzD,kBAAkB,CAC7B,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAqBH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAoDjD,oBAAoB;IAerB,gBAAgB,CAC3B,KAAK,EAAE,MAAM,EACb,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAoCP,mBAAmB,CAC9B,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAMP,kBAAkB,CAC7B,UAAU,GAAE,MAAU,EACtB,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAMP,wBAAwB,CACnC,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,MAAU,EACtB,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;WAMN,eAAe,IAAI,MAAM;IAK1B,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDrD,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WA+B1C,uBAAuB;YAkE7B,sBAAsB;IAWvB,uBAAuB,CAClC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC;WAuBL,cAAc,CAAC,mBAAmB,EAAE,IAAI,GAAG,MAAM;CAiBhE"}
|
|
@@ -94,13 +94,7 @@ class ServerCoin {
|
|
|
94
94
|
serverCoins = serverCoins.filter((coin) => coin.coin.parentCoinInfo !== serverCoin.parentCoinInfo);
|
|
95
95
|
await ServerCoin.serverCoinManager.setConfigValue(`${this.storeId}:${peerIp}`, serverCoins);
|
|
96
96
|
}
|
|
97
|
-
|
|
98
|
-
async sampleCurrentEpoch(sampleSize = 5, blacklist = []) {
|
|
99
|
-
const epoch = ServerCoin.getCurrentEpoch();
|
|
100
|
-
return this.sampleServerCoinsByEpoch(epoch, sampleSize, blacklist);
|
|
101
|
-
}
|
|
102
|
-
// Sample server coins by epoch
|
|
103
|
-
async sampleServerCoinsByEpoch(epoch, sampleSize = 5, blacklist = []) {
|
|
97
|
+
async getAllEpochPeers(epoch, blacklist = []) {
|
|
104
98
|
const epochBasedHint = (0, datalayer_driver_1.morphLauncherId)(Buffer.from(this.storeId, "hex"), BigInt(epoch));
|
|
105
99
|
const peer = await FullNodePeer_1.FullNodePeer.connect();
|
|
106
100
|
const maxClvmCost = BigInt(11000000000);
|
|
@@ -118,8 +112,21 @@ class ServerCoin {
|
|
|
118
112
|
if (process.env.DIG_DEBUG === "1") {
|
|
119
113
|
console.log("Server Coin Peers: ", serverCoinPeers);
|
|
120
114
|
}
|
|
121
|
-
|
|
122
|
-
|
|
115
|
+
return Array.from(serverCoinPeers);
|
|
116
|
+
}
|
|
117
|
+
async getActiveEpochPeers(blacklist = []) {
|
|
118
|
+
const epoch = ServerCoin.getCurrentEpoch();
|
|
119
|
+
return this.getAllEpochPeers(epoch, blacklist);
|
|
120
|
+
}
|
|
121
|
+
// Sample server coins for the current epoch
|
|
122
|
+
async sampleCurrentEpoch(sampleSize = 5, blacklist = []) {
|
|
123
|
+
const epoch = ServerCoin.getCurrentEpoch();
|
|
124
|
+
return this.sampleServerCoinsByEpoch(epoch, sampleSize, blacklist);
|
|
125
|
+
}
|
|
126
|
+
// Sample server coins by epoch
|
|
127
|
+
async sampleServerCoinsByEpoch(epoch, sampleSize = 5, blacklist = []) {
|
|
128
|
+
const serverCoinPeers = await this.getAllEpochPeers(epoch, blacklist);
|
|
129
|
+
return lodash_1.default.sampleSize(serverCoinPeers, sampleSize);
|
|
123
130
|
}
|
|
124
131
|
// Get the current epoch based on the current timestamp
|
|
125
132
|
static getCurrentEpoch() {
|