摘要:以太坊,主要講解如何使用開發基于的以太坊應用,包括賬戶管理狀態與交易智能合約開發與交互過濾器和事件等。
Android應用程序以太坊錢包生成,要做的工作不少,不過如果我們一步一步來應該也比較清楚:
1.在app/build.gradle中集成以下依賴項:
compile ("org.web3j:core-android:2.2.1")
web3j核心是用于從服務器下載以太坊區塊鏈數據的核心類庫。它通常用于以太坊開發。
2.我們將設計一個Android UI示例,屏幕上將有文本編輯和按鈕。在EditText中,將要求用戶輸入錢包的密碼。然后在按鈕的單擊事件上,我們將開始發送密碼的過程。以下是layout.xml文件:
3.我們將創建一個FileOutputStream路徑,將創建的錢包文件保存在存儲中,這需要讀寫存儲權限。
4.對于Android用戶Api>26,需要擁有運行時權限以執行上述步驟。
5.然后有一個名為WalletUtils的類。在web3jcore中。在該類中,有一個方法generateWalletNewFile(password, path),它將接受密碼參數和錢包文件的路徑。 將可以創建錢包文件。
6.web3jcore中還有一個類憑據Credentials,它將使用WalletUtils.loadCredentials(password,path)方法加載文件的所有憑據。以下是用于生成錢包文件的一個類和接口:
public class EthereumGenerationPresenter implements EthereumGenerationContract.Presenter { private final EthereumGenerationContract.View mWalletGenerationView; private String mPassword; public EthereumGenerationPresenter(EthereumGenerationContract.View walletGenerationView, String password) { mWalletGenerationView = walletGenerationView; mPassword = password; } @Override public void generateWallet(final String password) { String fileName; try { File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); if (!path.exists()) { path.mkdir(); } fileName = WalletUtils.generateLightNewWalletFile(password, new File(String.valueOf(path))); Log.e("TAG", "generateWallet: " + path+ "/" + fileName); Credentials credentials = WalletUtils.loadCredentials( password, path + "/" + fileName); mWalletGenerationView.showGeneratedWallet(credentials.getAddress()); Log.e("TAG", "generateWallet: " + credentials.getAddress() + " " + credentials.getEcKeyPair().getPublicKey()); } catch (NoSuchAlgorithmException | NoSuchProviderException | InvalidAlgorithmParameterException | IOException | CipherException e) { e.printStackTrace(); } } @Override public void start() { generateWallet(mPassword); } } public interface EthereumGenerationContract { interface View extends BaseView{ void showGeneratedWallet(String walletAddress); } interface Presenter extends BasePresenter { void generateWallet(String password); } } public interface BasePresenter { void start(); } public interface BaseView { void setPresenter(T presenter); }
7.現在Credentials類將保存以太坊的錢包地址以及該文件的更多信息。
8.現在可以使用下面的函數獲取地址:
credentials.getAddress()->
公鑰
credentials.getPublicKey()
私鑰
credentials.getEcKeyPair()
9.錢包生成類Activity如下:
public class WalletGenerationActivity extends AppCompatActivity implements EthereumGenerationContract.View { private static final int REQUEST_PERMISSION_WRITE_STORAGE = 0; private EthereumGenerationContract.Presenter mWalletPresenter; private Button mGenerateWalletButton; private String mWalletAddress; private EditText mPassword; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_generation); mGenerateWalletButton = (Button) findViewById(R.id.generate_wallet_button); mPassword = (EditText) findViewById(R.id.password); mGenerateWalletButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int permissionCheck = ContextCompat.checkSelfPermission(WalletGenerationActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permissionCheck != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions( WalletGenerationActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION_WRITE_STORAGE); } else { mWalletPresenter = new EthereumGenerationPresenter(WalletGenerationActivity.this, mPassword.getText().toString()); mWalletPresenter.generateWallet(mPassword.getText().toString()); Intent intent = new Intent(WalletGenerationActivity.this, WalletActivity.class); intent.putExtra("WalletAddress", mWalletAddress); startActivity(intent); } } }); } @Override public void setPresenter(EthereumGenerationContract.Presenter presenter) { mWalletPresenter = presenter; } @Override public void showGeneratedWallet(String address) { mWalletAddress = address; } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case REQUEST_PERMISSION_WRITE_STORAGE: { if (grantResults.length == 0 || grantResults[0] != PackageManager.PERMISSION_GRANTED) { finish(); } else { mWalletPresenter.generateWallet(mPassword.getText().toString()); } break; } } } }
10.具有textview的活動類,用于顯示錢包地址。
public class WalletActivity extends AppCompatActivity { private TextView mWalletAddress; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wallet); mWalletAddress = (TextView) findViewById(R.id.account_address); Bundle extras = getIntent().getExtras(); mWalletAddress.setText(extras.getString("WalletAddress")); } }
如果希望快速進行java以太坊開發,那請看我們精心打造的教程:
java以太坊開發教程,主要是針對java和android程序員進行區塊鏈以太坊開發的web3j詳解。
其他以太坊教程如下:
以太坊入門教程,主要介紹智能合約與dapp應用開發,適合入門。
以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
php以太坊,主要是介紹使用php進行智能合約開發交互,進行賬號創建、交易、轉賬、代幣開發以及過濾器和事件等內容。
C#以太坊,主要講解如何使用C#開發基于.Net的以太坊應用,包括賬戶管理、狀態與交易、智能合約開發與交互、過濾器和事件等。
php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
EOS入門教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智能合約開發與部署、使用代碼與智能合約交互等核心知識點,最后綜合運用各知識點完成一個便簽DApp的開發。
匯智網原創翻譯,轉載請標明出處。這里是原文
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77234.html
摘要:以太坊,主要講解如何使用開發基于的以太坊應用,包括賬戶管理狀態與交易智能合約開發與交互過濾器和事件等。 Android應用程序以太坊錢包生成,要做的工作不少,不過如果我們一步一步來應該也比較清楚: 1.在app/build.gradle中集成以下依賴項: compile (org.web3j:core-android:2.2.1) web3j核心是用于從服務器下載以太坊區塊鏈數據的核心...
摘要:本文首發于深入淺出區塊鏈社區原文鏈接以太坊安卓錢包系列通過助記詞創建賬號原文已更新,請讀者前往原文閱讀上周我開源了一款錢包,反映很好,一周時間不到已經快到。的功能和類似,它是比特幣協議的實現,他實現了及相關協議。 本文首發于深入淺出區塊鏈社區原文鏈接:以太坊(安卓)錢包系列1 - 通過助記詞創建賬號原文已更新,請讀者前往原文閱讀 上周我開源了一款錢包,反映很好,一周時間不到已經快到10...
摘要:本文首發于深入淺出區塊鏈社區原文鏈接以太坊安卓錢包系列通過助記詞創建賬號原文已更新,請讀者前往原文閱讀上周我開源了一款錢包,反映很好,一周時間不到已經快到。的功能和類似,它是比特幣協議的實現,他實現了及相關協議。 本文首發于深入淺出區塊鏈社區原文鏈接:以太坊(安卓)錢包系列1 - 通過助記詞創建賬號原文已更新,請讀者前往原文閱讀 上周我開源了一款錢包,反映很好,一周時間不到已經快到10...
摘要:目前通常指代基于以太坊或者上的智能合約開發的相關應用。引入以太坊通過的交互流程大致如下總結隨著區塊鏈近些年的大紅大紫,被推上了風口浪尖,本文從技術的角度大致介紹了一下所涉及的技術要點。 當你開始探索區塊鏈開發,需要了解到這些。 showImg(https://segmentfault.com/img/remote/1460000016608233?w=1370&h=389); 一、DA...
閱讀 3788·2023-01-11 11:02
閱讀 4294·2023-01-11 11:02
閱讀 3113·2023-01-11 11:02
閱讀 5229·2023-01-11 11:02
閱讀 4788·2023-01-11 11:02
閱讀 5564·2023-01-11 11:02
閱讀 5366·2023-01-11 11:02
閱讀 4063·2023-01-11 11:02