Resmi Bitcoin ağına bağlantıda ustalaşın ve geliştirme için ağ test edin
Bir cüzdan ve yedek cüzdan oluşturmayı öğrenin
Hesap adresi oluştur
Bitcoin hesapları, bip protokolü aracılığıyla başlatılır ve daha sonra birden fazla alt adrese genişletilir. Bu alt adresler aynı tohumdan türetilebilir. Alt hesaplardan birinin özel anahtarının, kardeş ve ana düğümlerin özel anahtarlarını türetemeyeceğini bilmek, bu nedenle Aynı çekirdek uzantı tarafından oluşturulan alt hesaplar tek bir hesapta birleştirilir ve yeni alt adresi her işlemdeki işlemler için kullanılabilir, bu daha güvenli ve izlemesi daha zordur. Bu büyük hesaba genellikle cüzdan denir. Bu nedenle, hesap işlemleri için önce bir cüzdan hesabı oluşturmamız gerekir, bu nedenle bu bölümün içeriği bir cüzdanın nasıl oluşturulacağını ve cüzdanın bazı ortak işlevlerini öğrenmektir.
Önceki bölümün içeriğinde, bir cüzdan istemci nesnesi oluşturma yöntemi, Models / walletClient.js dosyasındaki getWalletClient yönteminde şu şekilde özetlenmiştir:
229BFB5D-C02D-4D37-91BC-3A130B729290
Artık istemci nesnesi henüz kimlik doğrulaması üretmedi, __proto altında clien için birçok yöntem olduğunu görebilir ve ardından istemci nesnesini çağırarak bir cüzdan oluşturabilirsiniz.
Bir cüzdan oluşturmak için API belgeleri aşağıdaki gibidir:
API tanımına göre, altı zorunlu parametre vardır:
walletName: String, oluşturulan cüzdanın adı.
copayerName: Dize, cüzdanı oluşturan, yani cüzdanın sahibi olan kişi.
m: Numara, cüzdanın sahiplerinin sayısı. 1 ise kişisel bir cüzdandır; 1'den büyükse paylaşılan bir cüzdandır ve çoklu imza gereklidir.
n: m'ye karşılık gelen sayı m'den büyük olamaz, gerekli imza sayısını belirtin. Kişisel bir cüzdan ise 1'dir.
opts: İsteğe bağlı parametreler, bir nesnedir, dahil edilen kelime sonları aşağıdaki gibidir:
opts.network: string, cüzdanın bağlı olduğu ağ türü. Sırasıyla livenet ve testnet olarak ifade edilen resmi ağı ve test ağını destekler.
opts.walletPrivKey: Cüzdan özel anahtarı, bunu belirtmenize gerek yoktur, rastgele oluşturulur.
opts.id: Dize, cüzdan kimliği, belirtmenize gerek yoktur, otomatik olarak oluşturulur.
opts.withMnemonics: Kupon oluşturmak için kullanılan dize, anımsatıcı ifade, cüzdandaki tüm işlemler bu fiş ile gerçekleştirilir.
cb: geri arama yöntemi. Bu yöntemin dönüş değeri yoktur ve yanıt verileri callba aracılığıyla geri iletilir.
1. küçük bir test
Yukarıdaki analize göre aşağıdaki çağrıları yapıyoruz.
Çalıştırıldıktan sonra oluşturulan istemci nesnesi aşağıdaki gibidir:
AC93A428-C270-4176-AA73-00F1D9DE8EFF
Oluşturulan cüzdanın müşteri nesnesinin kimlik bilgisi niteliği olarak kullanıldığı ve içindeki sözcük kesmelerinin cüzdanın ayrıntılı verilerini kaydettiği görülebilir. Bu şekilde, test ağı altında "lixu" sahibi ile "MyWallet" adlı kişisel bir Bitcoin cüzdanı oluşturduk.Varsayılan olarak, hesap BIP44 protokolü kullanılarak oluşturulur ve adres türü, genel anahtar hashini ödemek için P2PKH'dir. Ek olarak, hesap için anımsatıcı bulamadık, bu nedenle cüzdan oluşturma yönteminin iyileştirilmesi gerekiyor, öyleyse doğru adım nedir?
2. Rastgele anımsatıcı kelimelerle tohumlar oluşturun
Cüzdanı yedeklemek için cüzdanın anımsatıcı kelimelerini dışa aktarabilmek için, cüzdanı oluşturma arasında rastgele anımsatıcı kelimelerle tohumlar oluşturmak için seedFromRandomWithMnemonic yöntemini çağırmamız gerekir. Aşağıdaki API belgeleri bunu açıklamayacaktır, GitHub'da görüntüleyebilirsiniz, kullanımı aşağıdaki gibidir
Not:
Parola unutulmamalıdır Tohum oluşturmak için parola ve anımsatıcı kullanmak gerekir Parola farklıysa tohum farklıdır, bu da hesabın alınmasını imkansız kılar. Şimdi koştuktan sonraki sonuç aşağıdaki gibidir.
Ağ testnet olarak ayarlanmışsa test ağına bağlanır, resmi ağa bağlı ise "livenet" dir.
67C44797-32E9-4A61-B06F-AC5807CC89E9
3. Cüzdanı dışa aktar
M-cüzdanı oluşturduktan sonra, cüzdanı tekrar kullandığımızda etkinleştirmek için cüzdanı içe aktarmamız gerekiyor, bu yüzden cüzdan verilerini Ethereum'daki anahtar deposuna benzer şekilde oluşturduktan sonra yedeklememiz gerekiyor. M-cüzdan nesnesini dışa aktaran ve bir dahaki sefere cüzdanı dosya aracılığıyla açmak için bir dosyaya kaydeden cüzdan verilerini yedeklemek için dışa aktarma yöntemi gereklidir. İçe aktarma yönteminin kullanımı daha sonra tanıtılacaktır.
özel hatırlatma:
Herkesin Bitcoin cüzdan projesini hızlı bir şekilde geliştirmesine izin vermek için, bu proje, anahtar olmayan içeriği açıklamak için zaman almadı. Daha sonra bu projede dışa aktarılan cüzdan, açıklama kolaylığı açısından sunucuya yerleştirilir.Bu çok güvensiz bir uygulamadır.Deneyimli geliştiricilerin bu tür hassas verilerle nasıl başa çıkılacağını anlaması doğaldır. Ek olarak, sunucu, koddaki "copayerName" alanı olan aynı kullanıcı "lixu" için oluşturulmuş bir cüzdandır. Gerçek geliştirmede, kullanıcı modülünün burada kısaltılmış olan bir kullanıcı sistemi kurmak için uygulanması gerekir. Bu verilerin istemciye kaydedilmesi ve şifrelenmesi tavsiye edilir.
M-cüzdan verilerini .bat ile biten ve M-cüzdan adıyla adlandırılan bir dosyada saklayın, böylece yinelenen cüzdan adları M-cüzdan hesabının üzerine yazılır. Çalıştırdıktan sonra, statik / wallet_file klasöründeki MyWallet.bat dosyasını açın.Verileri aşağıdaki şekilde gösterildiği gibi bir json dizesi olarak saklanır. Biçimlendirme aracını kullandıktan sonra, verilerinin client.credentials sözcük sonundaki veriler olduğunu görebilirsiniz.
178ADC34-DB35-46EB-8CB8-7D4E981696A7
4. Yeni adres
Yeni oluşturulan cüzdan otomatik olarak bir adres oluşturmaz.Cüzdanı açarken bir adrese sahip olmak için, oluşturma başarılı olduktan sonra ilk hesap adresine sahip olmasını sağlamak için yeni adres yöntemini arayabiliriz. Tabii ki yolu "M / 0/0" olmalıdır. Ardından, görüntülemek için cüzdanın alt hesap adresini alacağız.
Çıktı aşağıdaki gibidir:
6C39E707-CBD1-4F76-A355-135E75123C64
1. denetleyiciler / wallet.js
Denetleyiciler klasöründe yeni bir wallet.js dosyası oluşturun.Arka uç, cüzdan modülü işlevini uygular.Aşağıdaki ilk önce bir cüzdan oluşturma işlevini uygular.
Ön ucun, cüzdan adı ve şifre olmak üzere iki parametreyi geçmesi gerekir ve son olarak, ön uca oluşturulan ilk hesap adresini döndürür. Veri yapısı aşağıdaki gibidir:
2018-10-3011.25.31
Proje kaynak kodu Github adresi