Bitcoin cüzdan geliştirme: yeni bir cüzdan oluşturun, alt hesap adresleri ve yolları oluşturun

Amaçları

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

Önsöz

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.

Bir, cüzdan istemci nesnesini alın

Ö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.

2. Cüzdan oluşturmak için API belgeleri

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.

Üç, bir cüzdan oluşturmak için kodlama

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

Dört, eksiksiz kaynak kodu

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:

5. Proje operasyon etkisi

2018-10-3011.25.31

Proje kaynak kodu Github adresi

Leslie Cheung'un arkasındaki servet: eski ajan 20 milyon yuan toplamakla suçlandı ve bir holografik konser açmak için "dirildi"
önceki
CCTD Kömürün fiyatı sabit ve yükseliyor, koklaşabilir taş kömürü pazarı sabit kalıyor
Sonraki
CCTD Son zamanlarda, kömür fiyatları güçlü ve önemli bir artış için gerekli koşullara sahip değil
Sonsuz beceri, Ralink Turbo Toyota'dır
80'lerin sonrası iş adamları gizemli bir şekilde temaslarını kaybettiler, öz sermaye rehin pozisyonlarından istifa ettiler ve bir zamanlar 100 milyon varlığı terk ettiler ve paraları olduğunu söyledi
CCTD Çin'in kömür ithalatı bu yıl neden artmaya devam etti?
"İnternet + SUV" geçitler oynamak için yeterince iyi!
Mobil ödeme patlaması size QR kodunu tarama ve arabayı alma çağının geldiğini söylüyor!
Çin ehliyetinin "uluslararası statüsünü" sormaya cesaretiniz var mı? Kendi kendine giden çember biliyordu
Altı ana yargı size şunu söylüyor: Gerçek "blockchain + tarım" nedir?
Nissan Cima'daki bu ustaların ruhunun derinliklerinde bir ayrıntı ustası
Perakendeciliğin Ölümü (2. Bölüm) Kayıp 40 kat arttı, asırlık bir mağazanın düşüşü
Araç patinajından bahsedelim
Veri güvenliği olayları sık sık meydana geliyor, bir vaka 8.000 yuan için spekülasyon yapıyor ve Tüketici Derneği Qunar.com'un öldürdüğünden şüphelenildiğini tespit ediyor
To Top