-
Notifications
You must be signed in to change notification settings - Fork 2
/
createMarket.js
97 lines (89 loc) · 2.91 KB
/
createMarket.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
const Gnosis = require('@gnosis.pm/gnosisjs');
const Web3 = require('web3');
const resolutionDate = new Date();
resolutionDate.setDate(resolutionDate.getDate() + 1);
const options = {
ethereum: new Web3(new Web3.providers.HttpProvider('http://localhost:8545')).currentProvider,
ipfs: {
host: 'localhost',
port: 5001,
protocol: 'http'
}
};
const eventDescription = {
title: 'Will this sample market work?',
description: 'My first sample market.',
resolutionDate: resolutionDate.toISOString(),
outcomes: ['Yes', 'No'],
};
let gnosisInstance;
let ipfsHash;
let oracle;
let categoricalEvent;
let market;
Gnosis.create(options)
.then(result => {
gnosisInstance = result;
console.info('[GnosisJS] > connection established');
console.info("[GnosisJS] > Creating event description...");
gnosisInstance.publishEventDescription(eventDescription)
.then(result => {
ipfsHash = result;
console.info("[GnosisJS] > Event description hash: " + ipfsHash);
console.info("[GnosisJS] > Creating Centralized Oracle...");
gnosisInstance.createCentralizedOracle(ipfsHash)
.then(result => {
oracle = result;
console.info("[GnosisJS] > Centralized Oracle was created");
console.info("[GnosisJS] > Creating Categorical Event...");
gnosisInstance.createCategoricalEvent({
collateralToken: gnosisInstance.etherToken,
oracle,
// Note the outcomeCount must match the length of the outcomes array published on IPFS
outcomeCount: 2,
})
.then(result => {
categoricalEvent = result;
console.info("[GnosisJS] > Categorical event was created");
console.info("[GnosisJS] > Creating market...");
// console.info(gnosisInstance);
gnosisInstance.createMarket({
event: categoricalEvent,
marketMaker: gnosisInstance.lmsrMarketMaker,
marketFactory: gnosisInstance.standardMarketFactory,
fee: 50000
})
.then(response => {
market = response;
console.info("[GnosisJS] > Market was created");
Promise.all([
gnosisInstance.etherToken.deposit({ value: 4e18 }),
gnosisInstance.etherToken.approve(market.address, 4e18),
market.fund(4e18)
])
.then(values => {
console.info("[GnosisJS] > All done!");
})
.catch(error => {
console.warn(error);
});
})
.catch(error => {
console.warn(error);
});
})
.catch(error => {
console.warn(error);
});
})
.catch(error => {
console.warn(error);
});
})
.catch(error => {
console.warn(error);
});
})
.catch(error => {
console.warn('Make sure that Gnosis Development kit is up and running');
});