Python

如何將私鑰儲存為環境變數並在我的程式碼中呼叫它?

  • March 11, 2022
import os
from dotenv import dotenv_value
.
.
.

private_key = os.getenv("PRIVATE_KEY")
.
.
print(private_key) //for testing purposes only

這就是我目前必須在我的智能合約中使用我的私鑰。出於明顯的目的,我不希望它在程式碼中可見,但我不知道如何在 Windows 上執行此操作。我知道在 Mac 上做起來要簡單得多。我可能錯誤地將環境變數儲存為環境變數,但我認為情況並非如此。我不知道使用 os 或 getenv 是否是錯誤的起點或什麼。我需要一些幫助。

   INFO: Could not find files for the given pattern(s).
None
Traceback (most recent call last):
 File "C:\Users\amazi\demos\web3_py_simple_storage\deploy.py", line 58, in <module>
   signed_txn = w3.eth.account.sign_transaction(transaction, private_key=private_key)
 File "C:\Python310\lib\site-packages\eth_utils\decorators.py", line 18, in _wrapper
   return self.method(obj, *args, **kwargs)
 File "C:\Python310\lib\site-packages\eth_account\account.py", line 728, in sign_transaction
   account = self.from_key(private_key)
 File "C:\Python310\lib\site-packages\eth_utils\decorators.py", line 18, in _wrapper
   return self.method(obj, *args, **kwargs)
 File "C:\Python310\lib\site-packages\eth_account\account.py", line 250, in from_key
   key = self._parsePrivateKey(private_key)
 File "C:\Python310\lib\site-packages\eth_utils\decorators.py", line 18, in _wrapper
   return self.method(obj, *args, **kwargs)
 File "C:\Python310\lib\site-packages\eth_account\account.py", line 775, in _parsePrivateKey
   return self._keys.PrivateKey(HexBytes(key))
 File "C:\Python310\lib\site-packages\hexbytes\main.py", line 23, in __new__     
   bytesval = to_bytes(val)
 File "C:\Python310\lib\site-packages\hexbytes\_utils.py", line 30, in to_bytes  
   raise TypeError(f"Cannot convert {val!r} of type {type(val)} to bytes")       
TypeError: Cannot convert None of type <class 'NoneType'> to bytes

這是我在進行您建議的調整後得到的錯誤。我很可能搞砸了在文件中設置路徑。我對此仍然很陌生,而且我對python沒有太多經驗。

美好的第一天會做以下事情

import os

private_key = os.environ.get('PRIVATE_KEY')

如果這是一個 Django 項目,請記住包含以下內容settings.py

from pathlib import Path
import os
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

並使用.gitignore文件並排除您的.env文件

我希望這回答了你的問題

謝謝你

例如,您需要使用以下變數創建一個 .env 文件

私鑰 = ‘123456789’

在你的 .py 文件中

import os
from dotenv import load_dotenv

load_dotenv()
privateKey = os.getenv('privateKey')

你還需要安裝 dotenv

pip install python-dotenv

引用自:https://ethereum.stackexchange.com/questions/122985