diff --git a/examples/app-ofa-private/main.go b/examples/app-ofa-private/main.go index 7622468..93b5637 100644 --- a/examples/app-ofa-private/main.go +++ b/examples/app-ofa-private/main.go @@ -27,8 +27,9 @@ func main() { testAddr1 := framework.GeneratePrivKey() testAddr2 := framework.GeneratePrivKey() - fundBalance := big.NewInt(100000000) + fundBalance := big.NewInt(100000000000000000) fr.FundAccount(testAddr1.Address(), fundBalance) + fr.FundAccount(testAddr2.Address(), fundBalance) targeAddr := testAddr1.Address() @@ -58,7 +59,8 @@ func main() { bundleBytes, _ := json.Marshal(bundle) // new bid inputs - receipt := contract.SendTransaction("newOrder", []interface{}{}, bundleBytes) + contractAddr1 := contract.Ref(testAddr1) + receipt := contractAddr1.SendTransaction("newOrder", []interface{}{}, bundleBytes) hintEvent := &HintEvent{} if err := hintEvent.Unpack(receipt.Logs[0]); err != nil { @@ -77,7 +79,8 @@ func main() { backRunBundleBytes, _ := json.Marshal(backRunBundle) // backrun inputs - receipt = contract.SendTransaction("newMatch", []interface{}{hintEvent.BidId}, backRunBundleBytes) + contractAddr2 := contract.Ref(testAddr2) + receipt = contractAddr2.SendTransaction("newMatch", []interface{}{hintEvent.BidId}, backRunBundleBytes) matchEvent := &HintEvent{} if err := matchEvent.Unpack(receipt.Logs[0]); err != nil { diff --git a/framework/framework.go b/framework/framework.go index 1567689..47fc441 100644 --- a/framework/framework.go +++ b/framework/framework.go @@ -90,6 +90,10 @@ func GeneratePrivKey() *PrivKey { type Contract struct { *sdk.Contract + + addr common.Address + abi *abi.ABI + fr *Framework } func (c *Contract) SendTransaction(method string, args []interface{}, confidentialBytes []byte) *types.Receipt { @@ -164,7 +168,23 @@ func (f *Framework) DeployContract(path string) *Contract { } contract := sdk.GetContract(receipt.ContractAddress, artifact.Abi, f.clt) - return &Contract{Contract: contract} + return &Contract{addr: receipt.ContractAddress, fr: f, abi: artifact.Abi, Contract: contract} +} + +func (c *Contract) Ref(acct *PrivKey) *Contract { + cc := &Contract{ + addr: c.addr, + abi: c.abi, + fr: c.fr, + Contract: sdk.GetContract(c.addr, c.abi, c.fr.NewClient(acct)), + } + return cc +} + +func (f *Framework) NewClient(acct *PrivKey) *sdk.Client { + cc := DefaultConfig() + rpc, _ := rpc.Dial(cc.KettleRPC) + return sdk.NewClient(rpc, acct.Priv, cc.KettleAddr) } func (f *Framework) SignTx(priv *PrivKey, tx *types.LegacyTx) (*types.Transaction, error) {