opportunity-service 0.0.616 → 0.0.621
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/OpportunityService.js +0 -7
- package/dist/OpportunityService.js.map +1 -1
- package/dist/modules/whisper/ChatHandler.js +0 -78
- package/dist/modules/whisper/ChatHandler.js.map +1 -1
- package/package.json +2 -1
- package/src/OpportunityService.ts +0 -8
- package/src/modules/whisper/ChatHandler.ts +0 -80
- package/test/voting.test.ts +0 -20
@@ -14,8 +14,6 @@ import { ethers } from "ethers";
|
|
14
14
|
import { startEventListeners } from "./events/start-event-listeners";
|
15
15
|
import opportunityAPI from './api/index';
|
16
16
|
import Web3 from 'web3';
|
17
|
-
import WhisperHandler from "./modules/whisper/ChatHandler";
|
18
|
-
import { Shh } from 'web3-shh';
|
19
17
|
class OpportunityService {
|
20
18
|
/**
|
21
19
|
* The Singleton's constructor should always be private to prevent direct
|
@@ -51,11 +49,6 @@ class OpportunityService {
|
|
51
49
|
assignDefaultProvider(provider) {
|
52
50
|
return __awaiter(this, void 0, void 0, function* () {
|
53
51
|
OpportunityService.defaultProvider = provider;
|
54
|
-
const shhProvider = provider;
|
55
|
-
var shh = new Shh("ws://localhost:8545");
|
56
|
-
shh.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8545", { headers: { Origin: "mychat" } }));
|
57
|
-
yield shhProvider.eth.net.isListening();
|
58
|
-
this.whisperProvider = new WhisperHandler(new Web3(provider), shh);
|
59
52
|
});
|
60
53
|
}
|
61
54
|
assignProvider(provider) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"OpportunityService.js","sourceRoot":"","sources":["../src/OpportunityService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAA6B,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,uBAAuB,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAKxE,OAAO,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,cAAc,MAAM,aAAa,CAAC;AAGzC,OAAO,IAAI,MAAM,MAAM,CAAC;
|
1
|
+
{"version":3,"file":"OpportunityService.js","sourceRoot":"","sources":["../src/OpportunityService.ts"],"names":[],"mappings":"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"}
|
@@ -1,79 +1 @@
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8
|
-
});
|
9
|
-
};
|
10
|
-
import opportunityEventEmitter from "../../events/OpportunityEventEmitter";
|
11
|
-
const POW_TIME = 100;
|
12
|
-
const TTL = 20;
|
13
|
-
const POW_TARGET = 2;
|
14
|
-
class WhisperHandler {
|
15
|
-
constructor(web3, shh) {
|
16
|
-
this.web3 = web3;
|
17
|
-
this.shh = shh;
|
18
|
-
this.generateKeypair();
|
19
|
-
}
|
20
|
-
generateKeypair() {
|
21
|
-
return __awaiter(this, void 0, void 0, function* () {
|
22
|
-
const keyPair = yield this.shh.newKeyPair();
|
23
|
-
this.keypair = keyPair;
|
24
|
-
// Obtain public key
|
25
|
-
const pubKey = yield this.shh.getPublicKey(keyPair);
|
26
|
-
this.pubKey = pubKey;
|
27
|
-
});
|
28
|
-
}
|
29
|
-
getWhisperPubKey() {
|
30
|
-
return this.pubKey;
|
31
|
-
}
|
32
|
-
sendPrivateMessage(toPubKey, msg, topic) {
|
33
|
-
return __awaiter(this, void 0, void 0, function* () {
|
34
|
-
// Send private message
|
35
|
-
this.web3.post({
|
36
|
-
pubKey: toPubKey,
|
37
|
-
sig: this.keypair,
|
38
|
-
ttl: TTL,
|
39
|
-
topic,
|
40
|
-
payload: this.web3.utils.fromAscii(msg),
|
41
|
-
powTime: POW_TIME,
|
42
|
-
powTarget: POW_TARGET
|
43
|
-
});
|
44
|
-
});
|
45
|
-
}
|
46
|
-
subscribeToTopic(topic) {
|
47
|
-
return __awaiter(this, void 0, void 0, function* () {
|
48
|
-
// Subscribe to private messages
|
49
|
-
const subscribe = (topic) => __awaiter(this, void 0, void 0, function* () {
|
50
|
-
this.shh.subscribe("messages", {
|
51
|
-
minPow: POW_TARGET,
|
52
|
-
privateKeyID: this.keypair,
|
53
|
-
topics: [topic]
|
54
|
-
}).on('data', (data) => {
|
55
|
-
console.log('Receieved data: ');
|
56
|
-
console.log(data);
|
57
|
-
console.log(this.web3.utils.toAscii(data.payload));
|
58
|
-
opportunityEventEmitter.emit('WHISPER_RECEIVED', data);
|
59
|
-
}).on('error', (err) => {
|
60
|
-
console.log('Couldnt decode message');
|
61
|
-
console.log(err);
|
62
|
-
});
|
63
|
-
});
|
64
|
-
const receivedWhisper = (data) => {
|
65
|
-
console.log(data);
|
66
|
-
};
|
67
|
-
yield subscribe(topic)
|
68
|
-
.then(() => {
|
69
|
-
opportunityEventEmitter.subscribeToEvent('WHISPER_RECEIVED', receivedWhisper);
|
70
|
-
})
|
71
|
-
.catch(error => {
|
72
|
-
console.log('Error trying to subscribe to topic');
|
73
|
-
console.log(error);
|
74
|
-
});
|
75
|
-
});
|
76
|
-
}
|
77
|
-
}
|
78
|
-
export default WhisperHandler;
|
79
1
|
//# sourceMappingURL=ChatHandler.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ChatHandler.js","sourceRoot":"","sources":["../../../src/modules/whisper/ChatHandler.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"ChatHandler.js","sourceRoot":"","sources":["../../../src/modules/whisper/ChatHandler.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "opportunity-service",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.621",
|
4
4
|
"description": "A service layer that connects all services between the blockchain and ui.",
|
5
5
|
"main": "index.js",
|
6
6
|
"scripts": {
|
@@ -40,6 +40,7 @@
|
|
40
40
|
"typescript": "^4.5.2"
|
41
41
|
},
|
42
42
|
"dependencies": {
|
43
|
+
"@alch/alchemy-web3": "^1.1.9",
|
43
44
|
"@ethersproject/providers": "^5.5.0",
|
44
45
|
"@toruslabs/torus-embed": "^1.10.14",
|
45
46
|
"@types/sqlite3": "^3.1.7",
|
@@ -13,7 +13,6 @@ import opportunityStorageProvider from "./modules/storage/OpportunityStorageProv
|
|
13
13
|
import { EthNetworkID } from "dvote-js";
|
14
14
|
import Web3 from 'web3';
|
15
15
|
import OpportunityStorageProvider from "./modules/storage/OpportunityStorageProvider";
|
16
|
-
import WhisperHandler from "./modules/whisper/ChatHandler";
|
17
16
|
|
18
17
|
import { Shh } from 'web3-shh'
|
19
18
|
|
@@ -59,13 +58,6 @@ class OpportunityService {
|
|
59
58
|
|
60
59
|
async assignDefaultProvider(provider : Web3) {
|
61
60
|
OpportunityService.defaultProvider = provider;
|
62
|
-
const shhProvider = provider;
|
63
|
-
|
64
|
-
var shh = new Shh("ws://localhost:8545");
|
65
|
-
shh.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8545", {headers: {Origin: "mychat"}}));
|
66
|
-
await shhProvider.eth.net.isListening();
|
67
|
-
|
68
|
-
this.whisperProvider = new WhisperHandler(new Web3(provider), shh);
|
69
61
|
}
|
70
62
|
|
71
63
|
assignProvider(provider : any) {
|
@@ -1,80 +0,0 @@
|
|
1
|
-
import opportunityEventEmitter from "../../events/OpportunityEventEmitter";
|
2
|
-
import Web3 from "web3";
|
3
|
-
|
4
|
-
const POW_TIME = 100;
|
5
|
-
const TTL = 20;
|
6
|
-
const POW_TARGET = 2;
|
7
|
-
|
8
|
-
class WhisperHandler {
|
9
|
-
private web3;
|
10
|
-
private shh;
|
11
|
-
private keypair;
|
12
|
-
private pubKey;
|
13
|
-
|
14
|
-
constructor(web3, shh) {
|
15
|
-
this.web3 = web3;
|
16
|
-
this.shh = shh;
|
17
|
-
this.generateKeypair()
|
18
|
-
}
|
19
|
-
|
20
|
-
async generateKeypair() {
|
21
|
-
const keyPair = await this.shh.newKeyPair();
|
22
|
-
this.keypair = keyPair;
|
23
|
-
|
24
|
-
// Obtain public key
|
25
|
-
const pubKey = await this.shh.getPublicKey(keyPair);
|
26
|
-
this.pubKey = pubKey;
|
27
|
-
}
|
28
|
-
|
29
|
-
|
30
|
-
getWhisperPubKey() {
|
31
|
-
return this.pubKey;
|
32
|
-
}
|
33
|
-
|
34
|
-
async sendPrivateMessage(toPubKey: string, msg: string, topic: string) {
|
35
|
-
// Send private message
|
36
|
-
this.web3.post({
|
37
|
-
pubKey: toPubKey,
|
38
|
-
sig: this.keypair,
|
39
|
-
ttl: TTL,
|
40
|
-
topic,
|
41
|
-
payload: this.web3.utils.fromAscii(msg),
|
42
|
-
powTime: POW_TIME,
|
43
|
-
powTarget: POW_TARGET
|
44
|
-
});
|
45
|
-
}
|
46
|
-
|
47
|
-
async subscribeToTopic(topic: string) {
|
48
|
-
// Subscribe to private messages
|
49
|
-
const subscribe = async (topic: string) => {
|
50
|
-
this.shh.subscribe("messages", {
|
51
|
-
minPow: POW_TARGET,
|
52
|
-
privateKeyID: this.keypair,
|
53
|
-
topics: [topic]
|
54
|
-
}).on('data', (data) => {
|
55
|
-
console.log('Receieved data: ')
|
56
|
-
console.log(data)
|
57
|
-
console.log(this.web3.utils.toAscii(data.payload))
|
58
|
-
opportunityEventEmitter.emit('WHISPER_RECEIVED', data)
|
59
|
-
}).on('error', (err) => {
|
60
|
-
console.log('Couldnt decode message')
|
61
|
-
console.log(err)
|
62
|
-
});
|
63
|
-
}
|
64
|
-
|
65
|
-
const receivedWhisper = (data) => {
|
66
|
-
console.log(data)
|
67
|
-
}
|
68
|
-
|
69
|
-
await subscribe(topic)
|
70
|
-
.then(() => {
|
71
|
-
opportunityEventEmitter.subscribeToEvent('WHISPER_RECEIVED', receivedWhisper)
|
72
|
-
})
|
73
|
-
.catch(error => {
|
74
|
-
console.log('Error trying to subscribe to topic')
|
75
|
-
console.log(error)
|
76
|
-
})
|
77
|
-
}
|
78
|
-
}
|
79
|
-
|
80
|
-
export default WhisperHandler;
|
package/test/voting.test.ts
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
import { ethers } from "dvote-js/node_modules/ethers"
|
4
|
-
import gwPool, { connectGateways } from "../src/api/voting/connect"
|
5
|
-
import { registerEntity } from '../src/api/voting/entity'
|
6
|
-
|
7
|
-
const ethNetworkId = 'mainnet'
|
8
|
-
const environment = 'dev'
|
9
|
-
const bootnodesContentUri = "https://bootnodes.vocdoni.net/gateways.dev.json"
|
10
|
-
|
11
|
-
describe("Setting up a process", () => {
|
12
|
-
it("Should connect gateways", async () => {
|
13
|
-
expect(async () => await connectGateways(ethNetworkId, environment, bootnodesContentUri)).not.toThrow()
|
14
|
-
const pool = await connectGateways(ethNetworkId, environment, bootnodesContentUri)
|
15
|
-
console.log(pool)
|
16
|
-
const wallet = ethers.Wallet.createRandom().connect(pool['provider'])
|
17
|
-
const address = await wallet.getAddress()
|
18
|
-
expect(() => registerEntity(pool, wallet, address)).not.toThrow()
|
19
|
-
})
|
20
|
-
})
|