Ledger Blue

Ledger Blue

Ethereum işlemlerinde daha önce bir TEE uygulamasıyla ilgili hızlı bir astar verdik, bugün bu modelin, başka bir kompleksi doğrulamanın etkili bir yolunu sunan belirli amaçlar için yüklenip kaldırılabilen dinamik güvenli uygulamalara nasıl uyduğunu göreceğiz süreci.



Ethereum işlemleri ve akıllı sözleşmeler


Akıllı bir sözleşmeye geçirilen girdiler, bir Ethereum işleminde ek bir "Veri" alanı olarak sağlanır - bu alanın kodlaması sözleşmeye özgüdür. Ethereum Contract ABI'den sonra kodlanmış parametreleri içeren bir fonksiyon çağrısı olarak görülebilir

Bu parametreler, sözleşmenin ne olduğunu bilmeden çözülemez ve kullanıcı için tabii ki çok farklı anlam ve etki yaratabilir. Bu nedenle, ledger blue bir Hardware Wallet ile körü körüne imzalanamazlar.

Bu nedenle, Ethereum uygulamamızı Ledger Blue için başka uygulamalara dahil edilebilecek bir ayrıştırma çerçevesi olarak geliştirdik ve bu "Veri" alanını içeren tüm işlemleri varsayılan cüzdanda reddettik.


Sözleşme verileri olmayan bir Ethereum işlemi


DAO akıllı sözleşmesi
DAO, en popüler crowdfunding kampanyası olarak haber yaptı - Ethereum blok zinciri üzerinde akıllı bir sözleşme olarak görülebilir ve kullanıcıların kendi kendini yöneten belirli önerilere yatırım yapmasına ve yatırım yapmasına izin verir.

DAO'daki kullanıcılar, DAO'ya yatırım yapan Ethereum adresine bağlı belirteçler tarafından modellenir. Bazı noktalarda, bu belirteçler teklifler üzerinde oy kullanmak için veya başka birine (farklı bir Ethereum adresine bağlı) ledger blue aktarılabilir. Bu DAO sözleşmesinin "transfer" işlevini çağırarak gerçekleştirilir

Sözleşmeyi gözden geçirirken, bir hesapta yer alan tüm belirteçlerin, bu hesap bir teklifte oy kullanmak için kullanıldığında kilitlendiğini de görebilirsiniz - bu nedenle, bir kullanıcının birkaç teklif veya oy için oy kullanması için birkaç hesabı olması mantıklı olabilir veya oy kullanırken daha fazla seçeneği açık tutun.

Bu, Hardware Cüzdanların kullanışlı olduğu ilginç bir kullanıcı deneyimi problemine yol açar - İstenildiğinde, yalnızca Token Transferlerini kullanıcıya ait bir hesaba yetki vermek, hedef adresin doğru olup olmadığını kontrol etmek zorunda kalmadan, Hiyerarşik Deterministik Cüzdanlarda organizasyon.

Bir Token Aktarımı uygulaması uygulama


BOLOS'u kullanarak bu kullanım durumunun ne kadar kolay uygulanacağını görmek için genel m-cüzdan kodu ve Token Transfer uygulaması arasındaki temel farklılıkları gözden geçireceğiz.

Aşağıdaki ekran görüntüleri, genel Ethereum HW kodu ile Token Transfer uygulaması arasındaki farktır.


INS_ADD_SELF, yeni DAO belirteçleri birimi daosendContext_t'yi tanımlar
Yeni bir APDU talimatı, INS_ADD_SELF eklendi. Bu APDU, hedef adresini bir BIP 32 yolu olarak sağlamak için kullanılacak ve böylece aynı tohumdan üretildiği gerekçelendirilebilecektir.

Değiştirilen simgelerin miktarını görüntülemek için, DAO belirteçlerinin Wei'ye resmi dönüşüm oranını kullanırız; bu, Ether için 10.16 yerine 10.16'dır

İşlemin veri parametrelerini tutmak için yeni bir yapı oluşturulmuştur. Aktarım fonksiyonu çağrısının "to" ve "value" parametrelerini içerecektir.


DAO_TRANSFER_ID ve DAO_ADDRESS tanımlanması


DAO_ADDRESS, işlemin doğru sözleşmeye gittiğini doğrulamak için kullanılan resmi sözleşme adresidir.

DAO_TRANSFER_ID, bu veri noktasının ledger blue uygun DAO işlevine zorlamak için kullanılır. Bu, Electrum Contract ABI'da belirtildiği üzere "transfer (adres, uint256)" şeklindeki SHA-3 karmasını hesaplayarak kontrol edilebilir.


yeni customProcessor işlevi
Yeni customProcessor işlevi, veri alanını yok saymak yerine yeni yapıya kopyalar. Ayrıştırıcı tarafından uygulanan genel yöntemlerden sonra modellenmiştir.

Ardından, yeni INS_ADD_SELF APDU mantığı, sağlanan BIP 32 kullanıcı yolunu, aktarımın varış yerine karşı kontrol edilecek bir adrese dönüştürerek uygulanır.


Ayrıştırma kontrollerini postala ve UI'yi hazırla
Veri alanını ayrıştırdıktan sonra, işlem parametreleri kontrol edilir (varış yeri adresi, sözleşme işlev kimliği) ve Donanım Cüzdanı, sözleşmeye herhangi bir ilave Eter miktarı gönderilmemesini sağlar.

Hedef adres, kullanıcı tarafından sağlanan BIP 32 yolu ile eşleşirse, adres yerine "Öz" görüntülenir; aksi takdirde, adres doğrulama için görüntülenir.

Doğrulama, aşağıdaki değişikliklerle genel cüzdanla aynı çekirdek mantığını yeniden kullanır:

Görüntülenen değer, işlemin "Değer" alanını kullanmak yerine, sözleşme çağrısının ikinci parametresidir
Görüntülenen adres, işlemin "Kime" alanını kullanmak yerine, sözleşme çağrısının ilk parametresidir
Kullanıcı daha sonra anlamak için hızlı ve anlaşılır bir mesajı herhangi bir risk olmadan onaylayabilir.

Yorumlar