Fintoch分趣投系統丨Fintoch分趣投系統開發(技術分析)及原始碼部署

xiaofufu發表於2023-03-12

  AI與其他數字技術將會有更廣泛融合、碰撞,帶來無限想象空間。首先,AI與量子計算的結合,量子計算能夠極大地提高生成、儲存和分析大量資料的效率,增強機器學習的能力。其次,將人工智慧融入VR/AR應用,能夠更精準地識別目標,提高視覺、行為形態和感知的真實性。


  from web3 import Web3


  import json


  import time


  import os


  import logging


  from django.conf import settings


  from decimal import Decimal


  class PayEthOrToken(object):


  def __init__(self):


  #設定web3


  self.web3=Web3(Web3.HTTPProvider('your infura http url'))


  #token合約地址


  self.contract_address='your contract address'


  #主錢包地址


  self.wallet='your wallet address'


  #錢包的私鑰


  self.wallet_key='your wallet key'


  #合約的abi test.json是eth的abi json檔案,可以在eth區塊鏈瀏覽器上獲得


  with open('test.json','r')as f:關於專案技術開發唯:MrsFu123,代幣發行、dapp智慧合約開發、鏈遊開發、


  交易所開發、量化合約開發、互助遊戲開發、Nft數字藏品開發、眾籌互助開發、元宇宙開發、swap開發、


  鏈上合約開發、ido開發、商城開發,成熟技術團隊,歡迎實體參考。


  self.abi=json.loads(f.read())


  #生成合約


  self.contract=self.web3.eth.contract(address=self.contract_address,abi=self.abi)


  #代幣簡寫


  self.token_name='USDT'


  def transfer_usdt(self,to,value):


  '''進行代幣轉賬


  args:


  to str:接收代幣的地址


  value str/int:代幣數量,以ether為單位,可以是字串和int型別


  returns:


  (str,str):返回交易雜湊,以及異常資訊


  '''


  try:


  token_balance=self.web3.fromWei(self.contract.functions.balanceOf(self.wallet).call(),'ether')


  #如果代幣不足返回異常


  if Decimal(token_balance)<Decimal(value):


  return None,'Platform USDT token is insufficient,please try again later'


  #進行轉賬代幣


  nonce=self.web3.eth.get_transaction_count(self.wallet)


  tx={


  'from':self.wallet,


  'nonce':nonce,


  'gas':100000,


  'gasPrice':self.web3.toWei('50','gwei'),


  'chainId':1


  }


  to=Web3.toChecksumAddress(to)


  txn=self.contract.functions.transfer(to,self.web3.toWei(value,'ether')).buildTransaction(tx)


  signed_txn=self.web3.eth.account.sign_transaction(txn,private_key=self.wallet_key)


  tx_hash=self.web3.eth.send_raw_transaction(signed_txn.rawTransaction)


  return self.web3.toHex(tx_hash),'pay success'


  except Exception as e:


  logging.error(f'轉賬{self.token_name}代幣時發生異常:{e}')


  logging.exception(e)


  return None,str(e)


  def transfer_eth(self,to,value):


  '''進行eth轉賬


  args:


  to str:接收以太坊的地址


  value str/int:數量,以ether為單位,可以是字串和int型別


  returns:


  str:返回交易雜湊


  '''


  try:


  token_balance=self.web3.fromWei(self.web3.eth.get_balance(self.wallet),'ether')


  #如果代幣不足返回異常


  if Decimal(token_balance)<Decimal(value):


  return None,'Platform ETH token is insufficient,please try again later'


  #獲取nonce,這個是交易計數


  to=Web3.toChecksumAddress(to)


  nonce=self.web3.eth.get_transaction_count(self.wallet)


  tx={


  'nonce':nonce,


  'to':to,


  'gas':100000,


  'gasPrice':self.web3.toWei('50','gwei'),


  'value':self.web3.toWei(value,'ether'),


  'chainId':1


  }


  #簽名交易


  signed_tx=self.web3.eth.account.sign_transaction(tx,self.wallet_key)


  tx_hash=self.web3.eth.send_raw_transaction(signed_tx.rawTransaction)


  return self.web3.toHex(tx_hash),'pay success'


  except Exception as e:


  logging.error(f'轉賬eth時發生異常:{e}')


  logging.exception(e)


  return None,str(e)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2939226/,如需轉載,請註明出處,否則將追究法律責任。

相關文章