diff --git a/dagger/contracts/interactions.nim b/dagger/contracts/interactions.nim index 6f5d7f84..2501ede2 100644 --- a/dagger/contracts/interactions.nim +++ b/dagger/contracts/interactions.nim @@ -29,7 +29,16 @@ proc new*(_: type ContractInteractions, proving: Proving.new(proofs) ) -proc new*(_: type ContractInteractions): ContractInteractions = - let provider = JsonRpcProvider.new("ws://localhost:8545") - let signer = provider.getSigner() +proc new*(_: type ContractInteractions, + providerUrl: string, + account = Address.default): ContractInteractions = + let provider = JsonRpcProvider.new(providerUrl) + var signer: Signer + if account == Address.default: + signer = provider.getSigner() + else: + signer = provider.getSigner(account) ContractInteractions.new(signer, deployment()) + +proc new*(_: type ContractInteractions): ContractInteractions = + ContractInteractions.new("ws://localhost:8545") diff --git a/dagger/dagger.nim b/dagger/dagger.nim index 8e9e69c7..96ffd3aa 100644 --- a/dagger/dagger.nim +++ b/dagger/dagger.nim @@ -122,7 +122,7 @@ proc new*(T: type DaggerServer, config: DaggerConf): T = engine = BlockExcEngine.new(localStore, wallet, network, discovery) store = NetworkStore.new(engine, localStore) erasure = Erasure.new(store, leoEncoderProvider, leoDecoderProvider) - contracts = ContractInteractions.new() + contracts = ContractInteractions.new(config.ethProvider, config.ethAccount) daggerNode = DaggerNodeRef.new(switch, store, engine, erasure, discovery, contracts) restServer = RestServerRef.new( daggerNode.initRestApi(), diff --git a/tests/contracts/testInteractions.nim b/tests/contracts/testInteractions.nim index 37895db6..3101354e 100644 --- a/tests/contracts/testInteractions.nim +++ b/tests/contracts/testInteractions.nim @@ -1,5 +1,6 @@ import ./ethertest import dagger/contracts +import ./examples ethersuite "Storage Contract Interactions": @@ -13,6 +14,12 @@ ethersuite "Storage Contract Interactions": let deployment = deployment() check ContractInteractions.new(signer, deployment) != nil + test "can be instantiated with a provider url and account": + let url = "http://localhost:8545" + let account = Address.example + check ContractInteractions.new(url) != nil + check ContractInteractions.new(url, account) != nil + test "provides purchasing": check contracts.purchasing != nil