摘要:以太坊,主要講解如何使用開發(fā)基于的以太坊應(yīng)用,包括賬戶管理狀態(tài)與交易智能合約開發(fā)與交互過濾器和事件等。
Android應(yīng)用程序以太坊錢包生成,要做的工作不少,不過如果我們一步一步來應(yīng)該也比較清楚:
1.在app/build.gradle中集成以下依賴項:
compile ("org.web3j:core-android:2.2.1")
web3j核心是用于從服務(wù)器下載以太坊區(qū)塊鏈數(shù)據(jù)的核心類庫。它通常用于以太坊開發(fā)。
2.我們將設(shè)計一個Android UI示例,屏幕上將有文本編輯和按鈕。在EditText中,將要求用戶輸入錢包的密碼。然后在按鈕的單擊事件上,我們將開始發(fā)送密碼的過程。以下是layout.xml文件:
3.我們將創(chuàng)建一個FileOutputStream路徑,將創(chuàng)建的錢包文件保存在存儲中,這需要讀寫存儲權(quán)限。
4.對于Android用戶Api>26,需要擁有運行時權(quán)限以執(zhí)行上述步驟。
5.然后有一個名為WalletUtils的類。在web3jcore中。在該類中,有一個方法generateWalletNewFile(password, path),它將接受密碼參數(shù)和錢包文件的路徑。 將可以創(chuàng)建錢包文件。
6.web3jcore中還有一個類憑據(jù)Credentials,它將使用WalletUtils.loadCredentials(password,path)方法加載文件的所有憑據(jù)。以下是用于生成錢包文件的一個類和接口:
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.現(xiàn)在Credentials類將保存以太坊的錢包地址以及該文件的更多信息。
8.現(xiàn)在可以使用下面的函數(shù)獲取地址:
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以太坊開發(fā),那請看我們精心打造的教程:
java以太坊開發(fā)教程,主要是針對java和android程序員進行區(qū)塊鏈以太坊開發(fā)的web3j詳解。
其他以太坊教程如下:
以太坊入門教程,主要介紹智能合約與dapp應(yīng)用開發(fā),適合入門。
以太坊開發(fā)進階教程,主要是介紹使用node.js、mongodb、區(qū)塊鏈、ipfs實現(xiàn)去中心化電商DApp實戰(zhàn),適合進階。
python以太坊,主要是針對python工程師使用web3.py進行區(qū)塊鏈以太坊開發(fā)的詳解。
php以太坊,主要是介紹使用php進行智能合約開發(fā)交互,進行賬號創(chuàng)建、交易、轉(zhuǎn)賬、代幣開發(fā)以及過濾器和事件等內(nèi)容。
C#以太坊,主要講解如何使用C#開發(fā)基于.Net的以太坊應(yīng)用,包括賬戶管理、狀態(tài)與交易、智能合約開發(fā)與交互、過濾器和事件等。
php比特幣開發(fā)教程,本課程面向初學(xué)者,內(nèi)容即涵蓋比特幣的核心概念,例如區(qū)塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如創(chuàng)建地址、管理錢包、構(gòu)造裸交易等,是Php工程師不可多得的比特幣開發(fā)學(xué)習(xí)課程。
EOS入門教程,本課程幫助你快速入門EOS區(qū)塊鏈去中心化應(yīng)用的開發(fā),內(nèi)容涵蓋EOS工具鏈、賬戶與錢包、發(fā)行代幣、智能合約開發(fā)與部署、使用代碼與智能合約交互等核心知識點,最后綜合運用各知識點完成一個便簽DApp的開發(fā)。
匯智網(wǎng)原創(chuàng)翻譯,轉(zhuǎn)載請標(biāo)明出處。這里是原文
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77234.html
摘要:以太坊,主要講解如何使用開發(fā)基于的以太坊應(yīng)用,包括賬戶管理狀態(tài)與交易智能合約開發(fā)與交互過濾器和事件等。 Android應(yīng)用程序以太坊錢包生成,要做的工作不少,不過如果我們一步一步來應(yīng)該也比較清楚: 1.在app/build.gradle中集成以下依賴項: compile (org.web3j:core-android:2.2.1) web3j核心是用于從服務(wù)器下載以太坊區(qū)塊鏈數(shù)據(jù)的核心...
摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接以太坊安卓錢包系列通過助記詞創(chuàng)建賬號原文已更新,請讀者前往原文閱讀上周我開源了一款錢包,反映很好,一周時間不到已經(jīng)快到。的功能和類似,它是比特幣協(xié)議的實現(xiàn),他實現(xiàn)了及相關(guān)協(xié)議。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:以太坊(安卓)錢包系列1 - 通過助記詞創(chuàng)建賬號原文已更新,請讀者前往原文閱讀 上周我開源了一款錢包,反映很好,一周時間不到已經(jīng)快到10...
摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接以太坊安卓錢包系列通過助記詞創(chuàng)建賬號原文已更新,請讀者前往原文閱讀上周我開源了一款錢包,反映很好,一周時間不到已經(jīng)快到。的功能和類似,它是比特幣協(xié)議的實現(xiàn),他實現(xiàn)了及相關(guān)協(xié)議。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:以太坊(安卓)錢包系列1 - 通過助記詞創(chuàng)建賬號原文已更新,請讀者前往原文閱讀 上周我開源了一款錢包,反映很好,一周時間不到已經(jīng)快到10...
摘要:目前通常指代基于以太坊或者上的智能合約開發(fā)的相關(guān)應(yīng)用。引入以太坊通過的交互流程大致如下總結(jié)隨著區(qū)塊鏈近些年的大紅大紫,被推上了風(fēng)口浪尖,本文從技術(shù)的角度大致介紹了一下所涉及的技術(shù)要點。 當(dāng)你開始探索區(qū)塊鏈開發(fā),需要了解到這些。 showImg(https://segmentfault.com/img/remote/1460000016608233?w=1370&h=389); 一、DA...
閱讀 3859·2023-01-11 11:02
閱讀 4350·2023-01-11 11:02
閱讀 3183·2023-01-11 11:02
閱讀 5283·2023-01-11 11:02
閱讀 4838·2023-01-11 11:02
閱讀 5648·2023-01-11 11:02
閱讀 5436·2023-01-11 11:02
閱讀 4162·2023-01-11 11:02