Skip to content

Commit

Permalink
Add CPK addresses to docker
Browse files Browse the repository at this point in the history
  • Loading branch information
fvictorio committed Jan 27, 2020
1 parent 58bf28d commit 49adb86
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 16 deletions.
34 changes: 23 additions & 11 deletions app/src/services/cpk.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
import { ethers, Wallet } from 'ethers'
import { ethers } from 'ethers'
import { Web3Provider } from 'ethers/providers'
import CPK from 'contract-proxy-kit'
import moment from 'moment'

import { getLogger } from '../util/logger'
import { ConditionalTokenService, ERC20Service, MarketMakerService, RealitioService } from './index'
import { BigNumber } from 'ethers/utils'
import { MarketData } from '../util/types'
import { getContractAddress } from '../util/networks'
import { getContractAddress, getCPKAddresses } from '../util/networks'
import { calcDistributionHint } from '../util/tools'
import { MarketMakerFactoryService } from './market_maker_factory'
import { TransactionReceipt } from 'ethers/providers'

const logger = getLogger('Services::CPKService')

interface CPKBuyOutcomesParams {
provider: any
provider: Web3Provider
cost: BigNumber
amount: BigNumber
outcomeIndex: number
Expand All @@ -30,16 +31,27 @@ interface CPKCreateMarketParams {

class CPKService {
cpk: any
provider: any
provider: Web3Provider

constructor(cpk: any, provider: any) {
constructor(cpk: any, provider: Web3Provider) {
this.cpk = cpk
this.provider = provider
}

static async create(provider: any) {
const signer: Wallet = provider.getSigner()
const cpk = await CPK.create({ ethers, signer })
static async create(provider: Web3Provider) {
const signer = provider.getSigner()
const network = await provider.getNetwork()
const cpkAddresses = getCPKAddresses(network.chainId)
const networks = cpkAddresses
? {
[network.chainId]: cpkAddresses,
}
: {}
const cpk = await CPK.create({
ethers,
signer,
networks,
})
return new CPKService(cpk, provider)
}

Expand All @@ -54,7 +66,7 @@ class CPKService {
marketMaker,
}: CPKBuyOutcomesParams): Promise<TransactionReceipt> => {
try {
const signer: Wallet = this.provider.getSigner()
const signer = this.provider.getSigner()
const account = await signer.getAddress()

const collateralAddress = await marketMaker.getCollateralToken()
Expand Down Expand Up @@ -132,10 +144,10 @@ class CPKService {
throw new Error('Resolution time was not specified')
}

const signer: Wallet = this.provider.getSigner()
const signer = this.provider.getSigner()
const account = await signer.getAddress()

const network = await this.provider.ready
const network = await this.provider.getNetwork()
const networkId = network.chainId

const conditionalTokensAddress = conditionalTokens.address
Expand Down
23 changes: 23 additions & 0 deletions app/src/util/networks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@ export const networkIds = {
GANACHE: 50,
} as const

type CPKAddresses = {
masterCopyAddress: string
proxyFactoryAddress: string
multiSendAddress: string
fallbackHandlerAddress: string
}

interface Network {
label: string
url: string
Expand All @@ -27,6 +34,7 @@ interface Network {
conditionalTokens: string
oracle: string
}
cpk?: CPKAddresses
}

type KnownContracts = keyof Network['contracts']
Expand Down Expand Up @@ -82,6 +90,12 @@ const networks: { [K in NetworkId]: Network } = {
conditionalTokens: '0xD86C8F0327494034F60e25074420BcCF560D5610',
oracle: '0x2D8BE6BF0baA74e0A907016679CaE9190e80dD0A',
},
cpk: {
masterCopyAddress: '0x1b88Bdb8269A1aB1372459F5a4eC3663D6f5cCc4',
proxyFactoryAddress: '0xaf5C4C6C7920B4883bC6252e9d9B8fE27187Cf68',
multiSendAddress: '0xEC5d4F247aF81A843612eb1371CBCfa88b762119',
fallbackHandlerAddress: '0xDDb64fE46a91D46ee29420539FC25FD07c5FEa3E',
},
},
}

Expand Down Expand Up @@ -400,3 +414,12 @@ export const getArbitratorsByNetwork = (networkId: number): Arbitrator[] => {
})
.filter(isNotNull)
}

export const getCPKAddresses = (networkId: number): Maybe<CPKAddresses> => {
if (!validNetworkId(networkId)) {
throw new Error(`Unsupported network id: '${networkId}'`)
}

const cpkAddresses = networks[networkId].cpk
return cpkAddresses || null
}
7 changes: 6 additions & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ RUN apt-get update && apt-get install -y jq

WORKDIR ganache
ENV PATH="./node_modules/.bin:${PATH}"
RUN npm install ganache-cli@6.6.0 [email protected]
RUN npm install ganache-cli@6.8.2 [email protected]

# clone realitio and install dependencies
RUN git clone https://github.com/realitio/realitio-contracts.git realitio && \
Expand All @@ -27,6 +27,11 @@ RUN git clone https://github.com/fvictorio/realitio-gnosis-proxy && \
git checkout 040dce3e9c0c8edbb36767e7b029bbe6ccf1af4a && \
yarn

RUN git clone https://github.com/fvictorio/contract-proxy-kit && \
cd contract-proxy-kit && \
git checkout 68b811dd0f2c6afa08fa5bd3f595965fefe592e7 && \
npm install

# deploy contracts in ganache
COPY prepare_db.sh ERC20.bin ./
RUN bash prepare_db.sh
Expand Down
21 changes: 17 additions & 4 deletions docker/prepare_db.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,31 @@ cd realitio-gnosis-proxy
REALITIO_PROXY_ADDRESS=$(jq -r '.networks["50"].address' build/contracts/RealitioProxy.json)
cd ..

# deploy cpk contracts
cd contract-proxy-kit
./node_modules/.bin/truffle migrate --network development
cd ..

# save contracts addresses
echo "Main contracts:" >> contracts_addresses.txt
echo "realitio: ${REALITIO_ADDRESS}" >> contracts_addresses.txt
echo "realitio arbitrator: $(jq -r '.networks["50"].address' realitio/truffle/build/contracts/Arbitrator.json)" >> contracts_addresses.txt
echo "market maker factory: $(jq -r '.networks["50"].address' conditional-tokens-market-makers/build/contracts/FPMMDeterministicFactory.json)" >> contracts_addresses.txt
echo "conditional tokens: ${CONDITIONAL_TOKENS_ADDRESS}" >> contracts_addresses.txt
echo "oracle: ${REALITIO_PROXY_ADDRESS}" >> contracts_addresses.txt
echo "" >> contracts_addresses.txt
echo "Tokens:" >> contracts_addresses.txt
echo "mock cdai: ${MOCK_CDAI_ADDRESS}" >> contracts_addresses.txt
echo "mock dai: ${MOCK_DAI_ADDRESS}" >> contracts_addresses.txt
echo "mock usdc: ${MOCK_USDC_ADDRESS}" >> contracts_addresses.txt
echo "mock owl: ${MOCK_OWL_ADDRESS}" >> contracts_addresses.txt
echo "mock weth: ${MOCK_WETH_ADDRESS}" >> contracts_addresses.txt
echo "mock chai: ${MOCK_CHAI_ADDRESS}" >> contracts_addresses.txt
echo "conditional tokens: ${CONDITIONAL_TOKENS_ADDRESS}" >> contracts_addresses.txt
echo "market maker factory: $(jq -r '.networks["50"].address' conditional-tokens-market-makers/build/contracts/FPMMDeterministicFactory.json)" >> contracts_addresses.txt
echo "realitio proxy: ${REALITIO_PROXY_ADDRESS}" >> contracts_addresses.txt
echo "" >> contracts_addresses.txt
echo "CPK:" >> contracts_addresses.txt
echo "masterCopyAddress: $(jq -r '.networks["50"].address' contract-proxy-kit/build/contracts/GnosisSafe.json)" >> contracts_addresses.txt
echo "proxyFactoryAddress: $(jq -r '.networks["50"].address' contract-proxy-kit/build/contracts/CPKFactory.json)" >> contracts_addresses.txt
echo "multiSendAddress: $(jq -r '.networks["50"].address' contract-proxy-kit/build/contracts/MultiSend.json)" >> contracts_addresses.txt
echo "fallbackHandlerAddress: $(jq -r '.networks["50"].address' contract-proxy-kit/build/contracts/DefaultCallbackHandler.json)" >> contracts_addresses.txt

# stop ganache
kill $PID

0 comments on commit 49adb86

Please sign in to comment.