From 4097ba6a005f3abc6fadb35cba0a80fcb7425aa2 Mon Sep 17 00:00:00 2001
From: Derek Gottfrid <derek@codecubed.com>
Date: Thu, 7 Feb 2019 05:49:22 -0500
Subject: [PATCH] mobile: add ability to create transactions for deploying
 contracts (#16104)

---
 mobile/types.go | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/mobile/types.go b/mobile/types.go
index 443d07ea9..1a0389cb5 100644
--- a/mobile/types.go
+++ b/mobile/types.go
@@ -197,8 +197,18 @@ type Transaction struct {
 	tx *types.Transaction
 }
 
-// NewTransaction creates a new transaction with the given properties.
+// NewContractCreation creates a new transaction for deploying a new contract with
+// the given properties.
+func NewContractCreation(nonce int64, amount *BigInt, gasLimit int64, gasPrice *BigInt, data []byte) *Transaction {
+	return &Transaction{types.NewContractCreation(uint64(nonce), amount.bigint, uint64(gasLimit), gasPrice.bigint, common.CopyBytes(data))}
+}
+
+// NewTransaction creates a new transaction with the given properties. Contracts
+// can be created by transacting with a nil recipient.
 func NewTransaction(nonce int64, to *Address, amount *BigInt, gasLimit int64, gasPrice *BigInt, data []byte) *Transaction {
+	if to == nil {
+		return &Transaction{types.NewContractCreation(uint64(nonce), amount.bigint, uint64(gasLimit), gasPrice.bigint, common.CopyBytes(data))}
+	}
 	return &Transaction{types.NewTransaction(uint64(nonce), to.address, amount.bigint, uint64(gasLimit), gasPrice.bigint, common.CopyBytes(data))}
 }
 
-- 
GitLab