|
@@ -1,6 +1,63 @@
|
|
|
from django.shortcuts import render
|
|
|
from django.http import HttpResponse
|
|
|
+import json
|
|
|
+from pathlib import Path
|
|
|
+from erdpy import utils
|
|
|
+from django.views.decorators.csrf import csrf_protect, csrf_exempt
|
|
|
+from erdpy import cli_shared, testnet
|
|
|
+from erdpy.accounts import Account, Address
|
|
|
+from erdpy.contracts import CodeMetadata, SmartContract
|
|
|
+from erdpy.proxy.core import ElrondProxy
|
|
|
+
|
|
|
|
|
|
# Create your views here.
|
|
|
def index(request):
|
|
|
- return render(request, 'index.html')
|
|
|
+ return render(request, 'index.html')
|
|
|
+
|
|
|
+@csrf_exempt # disable this on deploy
|
|
|
+def deploy_contract_function(request):
|
|
|
+ ##Arguments
|
|
|
+ #--proxy
|
|
|
+ #--pem
|
|
|
+ proxy="https://testnet-gateway.elrond.com"
|
|
|
+ pem_user="/home/ubuntu-test/Desktop/proj2/backend_dev/Market_Place_NFT/backend/wallet/users/sergiu.pem"
|
|
|
+ response_data="asdas"
|
|
|
+
|
|
|
+
|
|
|
+ proxy = ElrondProxy(proxy)
|
|
|
+ network = proxy.get_network_config()
|
|
|
+ user = Account(pem_file=pem_user)
|
|
|
+
|
|
|
+ user.sync_nonce(proxy)
|
|
|
+
|
|
|
+ bytecode_path = Path("/home/ubuntu-test/Desktop/proj2/project3/my_contract/output/my_contract.wasm").absolute()
|
|
|
+ bytecode = utils.read_binary_file(bytecode_path).hex()
|
|
|
+ code_metadata = CodeMetadata(upgradeable=True)
|
|
|
+ contract = SmartContract(bytecode=bytecode, metadata=code_metadata)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ tx = contract.deploy(
|
|
|
+ owner=user,
|
|
|
+ arguments=[],
|
|
|
+ gas_price=network.min_gas_price,
|
|
|
+ gas_limit=60000000,
|
|
|
+ value=0,
|
|
|
+ chain=network.chain_id,
|
|
|
+ version=network.min_tx_version
|
|
|
+ )
|
|
|
+
|
|
|
+ tx_on_network = tx.send_wait_result(proxy, 5000)
|
|
|
+
|
|
|
+ write_logs_to_file(f"Contract address: {contract.address.bech32()}")
|
|
|
+ write_logs_to_file(f"Deployment transaction: {tx_on_network.get_hash()}")
|
|
|
+
|
|
|
+ return HttpResponse(
|
|
|
+ json.dumps(f"Contract address: {contract.address.bech32()}"+f"Deployment transaction: {tx_on_network.get_hash()}"),
|
|
|
+ content_type="application/json"
|
|
|
+ )
|
|
|
+
|
|
|
+def write_logs_to_file(log_details):
|
|
|
+ f = open("logfile.txt", "a")
|
|
|
+ f.write(log_details)
|
|
|
+ f.close()
|