Coder Social home page Coder Social logo

scholtz / wallet Goto Github PK

View Code? Open in Web Editor NEW
35.0 4.0 28.0 107.86 MB

Open source algorand wallet and algorand web tools - governors tools, payment gateway, ..

Home Page: https://www.a-wallet.net

License: GNU Affero General Public License v3.0

JavaScript 0.61% HTML 0.01% Vue 2.12% Shell 0.01% Dockerfile 0.01% TypeScript 0.03% CSS 97.22%

wallet's Introduction

AWallet

Algorand community wallet built by community for community, fully open source since 2021

News channel is Algorand Forum

https://forum.algorand.org/t/algorand-wallet-open-source/3497

Supported features

  • Creating wallet / Export wallet / Import wallet / Destroying wallet
  • Creating account, Creating multisign account, Adding public account
  • Account overview
  • Transaction overview
  • Sending algo payment, Signing and sending multisig payments
  • Multilanguage support
  • Rekeying of standard accounts, multisig accounts and rekeyed accounts
  • Connecting to DApps using WalletConnect

Source code: https://github.com/scholtz/wallet

Technology stack: Vue3, JsAlgoSDK, CICD to pure HTML+JS

Docker image: https://hub.docker.com/r/scholtz2/a-wallet/tags

Please create a pull request for contribution to the project.

Deployments

https://www.a-wallet.net - Most stable deployment - Private onprem K8S cluster run by Scholtz&Co. Docker image released after some time in main branch deployment.

Main branch deployments

wallet's People

Contributors

benedictwhd avatar bitcoin333 avatar bkapp15 avatar dependabot[bot] avatar dragmz avatar erruzem21 avatar kenmistry avatar mmorselli avatar scholtz avatar sebas6612 avatar victorlane avatar win-t avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

wallet's Issues

Importing Ledger wallet from docker-based instance

I am running a-wallet server using docker image running on a ubuntu server. I am attempting to load an a ledger account and receive the following error:

Last error: Cannot read properties of undefined (reading 'requestDevice')

I am able to see the Ledger and load the ledger account if I use the a-wallet.net site, using the same browser.

Any ideas what might be the difference?

How to self-host

It would be an important showcase for AWallet if people could see that they could easily self-host this. From the description, it seems that if people have a regular webserver, this should work, as long as they have all the required files.

What is the directory tree that should be served? Can it easily be obtained??

Translation to Hungarian

{
"404":{
"header": "404-es hiba - A lap nem található",
"text" : "A keresett webhelyet nem találta."
},
"footer":{
"text" : "Algo pénztárca"
},
"login":{
"new_wallet" : "Új pénztárca",
"new_wallet_name" : "Pénztárca név",
"new_wallet_pass" : "Pénztárca jelszó",
"new_wallet_button_create":"Pénztárca létrehozása",
"new_wallet_button_import":"Pénztárca importálása",
"new_wallet_help1":"A pénztárca a böngészőn belül lesz tárolva. A pénztárca megnyitásához, a pénztárcán belüli számlák kijelzéséhez és a tranzakciók aláírásához egy jelszóra van szükség.",
"new_wallet_help2":"Azt tanácsoljuk, hogy használj 12 karakternél hosszabb jelszót. A jelszóban legyenek kisbetűk, nagybetűk és különleges karakterek.",
"open_wallet":"Pénztárca megnyitása",
"select_wallet":"Pénztárca kiválasztása",
"wallet_password":"Pénztárca jelszava",
"strength":"Erősség",
"new_wallet_button_open":"Pénztárca megnyitása"
},
"global":{
"go_back":"Vissza",
"go_home":"Ugrás a kezdőlapra",
"copy_address":"Cím másolása",
"copied_to_clipboard":"Átmásolva a vágólapra"
},
"navbar":{
"logo":"A Wallet",
"toggle_nav":"Váltás a navigációban",
"list_accounts":"Számlák listázása",
"new_account":"Új számla",
"settings":"Beállítások",
"asset":"Eszköz",
"asset_create":"NTF létrehozás",
"faq":"GYIK",
"privacy_policy":"Adatvédelem",
"logout":"Kijelentkezés"
},
"receive":{
"title":"Fizetség fogadása",
"address":"Fizetség fogadása ezen a címen",
"amount":"Összeg",
"note":"Megjegyzés"
},
"acc_overview":{
"title":"Számla áttekintés",
"pay":"Új kifizetés létrehozása",
"receive_payment":"Fizetség fogadása",
"name":"Név",
"address":"Cím",
"amount":"Összeg",
"amount_without_pending":"Összeg a függő jutalmak nélkül",
"rewards":"Jutalmak",
"pending_rewards":"Függő jutalmak",
"reward_base":"A jutalom alapja",
"round":"Menet",
"apps_local_state":"App-ok lokális állapota",
"apps_total_schema":"App-ok teljes sémája",
"assets":"Eszközök",
"created_apps":"Létrehozott app-ok",
"status":"Státusz",
"multisignature_threshold":"Többszörös aláírási küszöb",
"multisignature_addresses":"Többszörösen aláírt címek",
"refresh":"Frissítés",
"transactions":"Tranzakciók",
"no_transactions":"Nincs egyetlen tranzakció sem",
"type":"Típus",
"time":"Idő",
"tr_amount":"Összeg",
"sender":"Küldő",
"receiver":"Fogadó",
"receiver_rewards":"A fogadó jutalma",
"confirmed_round":"Megerősített menetek száma",
"fee":"Díj"
},
"accounts":{
"title":"Számlák áttekintése",
"no_accounts":"Nincs egyetlen egy számla sem",
"account_name":"Számla neve",
"amount":"Összeg",
"address":"Cím",
"pay":"Kifizetés"
},
"newacc":{
"title":"Új számla",
"create_basic":"Egyszerű számla létrehozása",
"import_account":"Számla importálása",
"create_multisign_account":"Többszörösen aláírt számla létrehozása",
"watch_account":"Megfigyelési számla",
"write_mnemonic":"Írd le a 25 szavas mnemonikus kifejezést",
"name":"Belső számlanév",
"create_account":"Számla létrehozás",
"address":"Cím",
"multisig_help":"A többszörösen aláírt számla csak akkor dolgozza fel a tranzakciókat, ha a számla létrehozásakor kilistázott N számla aláírja a tranzakciót.",
"select_account_from_list":"Válassz egy létező számlát a pénztárcádban",
"add_other_accounts":"Add meg a barátaid számláit - soronként egyet",
"trashold_help":"Válaszd ki, hogy hány számla szükséges egy tranzakció aláírásához",
"create_account_help":"A számla létrehozásakor mentsd el a mnemonikus kifejezést. Biztonságos, ha a kifejezés megjelenítése most történik?",
"show_mnemonic":"A mnemonik megjelenítése",
"position_question":"Milyen szó van az n-ik helyen",
"mnemonic_help":"Írd le a mnemonikokat a megjelenítés sorrendjében, másold le a szavakat vagy készíts egy fényképet. A következő lépésben ennek a kifejezésnek az egyes szavait kell megerősíteni, majd elmentjük a kifejezést a böngésző tárába titkosított formában. A mnemonik tárolása és a cím használata biztonságosan történik. Vigyázz rá, hogy ne veszítsd el a mnemonikus kifejezést.",
"start_challenge":"A kihívás kezdete",
"create_new":"Új készítése",
"hide_mnemonic":"A mnemonik elrejtése",
"drop_phrase":"A kifejezés elvetése"
},
"import":{
"title":"Pénztárca importja",
"wallet_name":"Pénztárca neve",
"wallet_file":"A pénztárcához tartozó állomány",
"import_wallet_button":"Pénztárca importálása",
"help":"Az előzetesen kiexportált pénztárcák beimportálhatók. A pénztárca jelszó az exportált állományon belül van, ezért a pénztárca az importálás után ugyanazzal a jelszóval használható. A bejelentkezés után a jelszó a 'Beállítások' lapon változtatható meg."

},
"acc_type":{
"basic_account":"Egyszerű számla",
"multisig_account":"Többszörösen aláírt számla",
"public_account":"Nyilvános számla"
},
"pay":{
"title":"Kifizetés indítása innen: ",
"selected_account":"Kiválasztott számla",
"multisig_account":"Többszörösen aláírt számla",
"create_proposal":"Ajánlat készítése",
"sign_proposal":"Ajánlat aláírása & elküldésese",
"signature_from_friend":"Kérjük, itt add be a barátodtól származó aláírást",
"load_multisig_data":"Többszörösen aláírt adat betöltése",
"pay_to_wallet":"Fizetés a pénztárcában lévő számlának",
"pay_to_other":"Fizetés egy másik számlának",
"store_other_help":"Jobb, ha azt a számlát, aminek a kifizetés történik, a címtárban tárolod",
"amount":"Összeg",
"fee":"Díj",
"note":"Megjegyzés",
"review_payment":"A kifizetés áttekintése",
"review_payment_help":"Kérjük, tekintsd át a kifizetést",
"from_account":"Erről a számláról",
"pay_to":"Fizetés erre a számlára",
"total":"Összesen",
"transaction_details":"A tranzakció részletei",
"type":"Típus",
"name":"Név",
"first_round":"FirstRound",
"last_round":"LastRound",
"genesis":"GenesisID",
"tag":"Tag",
"to_account":"Kinek",
"signatures":"Aláírások",
"signed":"Aláírva",
"not_signed":"Nincs aláírva",
"sign_with":"Aláírás ezzel",
"sign":"Aláírás",
"send_to_other_signators":"Ennek az adatnak az elküldése a többi aláírónak",
"send_to_network":"Elküldés a hálózatnak",
"state_sending":"Az utalás elküldése a hálózatnak",
"state_sent":"Az utalás elküldve a hálózatnak. Tx: ",
"state_waiting_confirm":"Várakozás a hálózat megerősítésére.",
"state_confirmed":"A megerősítés megérkezett. Az utalás bekerült a blokkba",
"transaction":"Tranzakció",
"error":"Hiba",
"asset":"Eszköz",
"state_error_not_sent":"Az utalás valószínűleg nem jutott el a hálózatra. Offline módba kerültél? Kérjük, ellenőrizd a számládat."
},
"settings":{
"title":"Beállítások",
"server":"Szerver",
"environment":"környezet",
"mainnet":"Mainnet",
"testnet":"Testnet",
"sandbox":"Sandbox",
"host":"gazdagép",
"token":"token",
"language":"Nyelv",
"pass":"Pénztárca jelszó",
"oldpass":"Régi jelszó",
"newpass":"Új jelszó",
"repeatpass":"Új jelszó - megismételve",
"backup":"Pénztárca mentés",
"backup_help":"A pénztárca elmenthető és egy másik számítógépen beimportálható.",
"create_backup":"Mentés készítése",
"download":"Letöltés",
"delete":"Pénztárca törlés",
"strength":"Erősség",
"updated_password":"A jelszó módosult"
},
"transaction":{
"title":"Tranzakció részletei",
"tr_id":"Tranzakció ID",
"tr_type":"Tranzakció típus",
"tr_close_rewards":"Jutalmak lezárása",
"closing_amount":"Záráskori összeg",
"confirmed_round":"Megerősített menet",
"fee":"Díj",
"first_valid":"Első érvényes",
"genesis_id":"Genezis id",
"genesis_hash":"Genezis hash",
"intra_round":"Belső eltolás",
"last_valid":"Utolsó érvényes",
"payment_tr":"Fizetési tranzakció",
"amount":"Összeg",
"close_amount":"Záráskori összeg",
"receiver":"Címzett",
"receiver_rewards":"Címzett jutalma",
"round_time":"Egy menet ideje",
"sender":"Küldő",
"sender_rewards":"Küldő jutalma",
"signature":"Aláírás",
"created_asset":"A létrejött eszköz",
"asset_name":"Eszköz neve",
"asset_creator":"Eszköz létrehozója",
"asset_manager":"Eszköz kezelője",
"asset_reserve":"Eszköz tartalék",
"asset_freeze":"Eszköz befagyasztás",
"asset_clawback":"Eszköz visszakövetelés",
"asset_unitName":"Eszköz egységének a neve",
"asset_total":"Összes eszköz",
"asset_decimals":"Tizedesjegyek száma",
"asset_defaultfrozen":"Kezdetben legyen befagyasztva",
"asset_url":"Eszköz url",
"asset_metadata":"Eszköz metaadat"
},
"privacy":{
"title":"Adatvédelmi irányelvek",
"q1":"Milyen információkat gyűjtenek rólam?",
"a1":"Semmilyeneket, az IP címeden és böngésző típusodon kívül, amit minden internet szolgáltató tárol. Nem gyűjtünk semmilyen személyes adatot sem, pl. neveket, e-mail címeket vagy Algorand címeket.",
"q2":"Mi van sütikben tárolva?",
"a2":"Semmi. Nem használunk sütiket. Egy indexdb nevű perzisztens lokális tárat használunk a pénztárca tárolására.",
"q3":"Hogyan történik az analitikai adatok gyűjtése?",
"a3":"Nem gyűjtünk ilyen adatokat. Semmilyen analitikai szolgáltatást sem használunk, pl. a Google analitikát sem, hogy a felhasználók nagyobb biztonságban érezhessék magukat. Az alkalmazás tisztán html és javascript, és csak akkor tudjuk meg az IP címedet, ha egy kérést küldesz a szervernek. A beállításaidtól és az algod szerveredtől ill. indexelő szolgáltatásodtól függően a kiválasztott szerver szintén tudomást szerezhet az IP címedről.",
"q4":"Érinti-e ennek a szolgáltatásnak a használata, hogy milyen reklámokat látok?",
"a4":"Nem. A reklám szolgáltatók semmilyen adatot sem kapnak tőlünk a használatra vonatkozóan. Az egyetlen módja például, hogy a Google tudomást szerezzen róla, hogy használod ezt a szolgáltatást, ha a webhelyet a Google keresésből éred el.",
"q5":"Ki nyújtja a szolgáltatást?",
"a5":"A Scholtz & Company, Kkt. hozta létre ezt a szolgáltatást. Ha a pénztárca a Scholtz & Co által biztosított hivatalos web helyen fut, akkor a cég egyúttal a szolgáltatás nyújtó. A cég nem felel semmilyen szolgáltatásért, sem az alkalmazás esetleges hibáiért."
},
"assetcreate":{
"title":"Új NTF / ASA",
"show_advanced":"Haladóknak szóló form megjelenítése",
"assetName":"Barátságos név",
"creator":"A létrehozó címe",
"hide_advanced":"Haladóknak szóló form elrejtése",
"creator_not_found":"Cím létrehozása vagy először cím beimportálása",
"default_fronzen":"Befagyasztva: a felhasználói számlákat fel kell oldani a tranzakciók végzése előtt",
"decimals":"Tizedesjegyek: a tizedes jegyek számát megadó egész szám, mely az eszköz egységeinek a számítására használatos",
"totalIssuance":"Ennek az eszköznek a forgalomban lévő összes darabszáma",
"unitName":"Arra használjuk, hogy az eszköz egységeit megjelenítsük a felhasználó számára",
"assetURL":"Egy opcionális string, amely az eszközhöz tartozó URL-re mutat",
"assetMetadataHash":"Egy opcionális hash, amely valamilyen módon az eszközhöz kapcsolódik. 32 karakter hosszú.",
"manager":"A kezelő módosítani tudja az eszköz kezelőjének, kibocsátójának, befagyasztójának és visszakövetelőjének a számlacímét",
"reserve":"Kibocsátó cím: A megadott címet tekinti az eszköz kibocsátójának (nincs semmi különös privilégiuma, csak informális)",
"freeze":"Befagyasztási cím: A megadott cím képes a felhasználó pénzeszközének befagyasztására vagy a befagyasztás feloldására",
"clawback":"Visszakövetelési cím: A megadott cím képes a felhasználó pénzeszközét visszavenni és elküldeni egy másik címre",
"note":"A létrehozási tranzakcióban megadott megjegyzés",
"create_button":"NFT / ASA létrehozás"
},

"faq":{
"title":"Gyakran ismételt kérdések",
"q1":"A pénztárcáról",
"a1":"Az Algo pénztárca alkalmazást eredetileg a Scholtz & Company készítette. Nyílt forráskódú, tisztán html-ben íródott, fő előnye a könnyű használhatóság és a biztonság.",
"q2":"Hogyan vannak a pénztárca adatai biztonságosan tárolva?",
"a2":"Az adatok csak a böngészőn belül vannak meg. Az adatok egy perzisztens index db-ben vannak tárolva. Minden pénztárca aes256-tal van titkosítva, a jelszó segítségével. Ha a jelszó elég erős, akkor a pénztárca nyers erővel soha sem lesz feltörhető. A jelszó nem hagyja el a számítógépedet, és csak a böngésző gyorsítótárában van meg. A bejelentkezés után 5 perccel a böngésző gyorsítótára törlődik.",
"q3":"Kikerül-e a pénztárcám jelszava az Internetre?",
"a3":"Nem, soha",
"q4":"Hogyan tudom megváltoztatni a pénztárca jelszavát?",
"a4_1":"Jelentkezz be a pénztárcádba",
"a4_2":"Menj a 'Beállítások'-hoz",
"a4_3":"Gépeld be a régi jelszót, az új jelszót, majd ismételten az új jelszót.",
"a4_4":"A form elküldése után a jelszó megváltozik.",
"q5":"Át tudom vinni a pénztárcámat egy másik számítógépre?",
"a5_1":"Jelentkezz be a pénztárcádba",
"a5_2":"Menj a 'Beállítások'-hoz",
"a5_3":"Menj a 'Biztonsági mentés' (backup) részhez és mentsd az adataidat egy helyi állományba.",
"a5_4":"A másik számítógépen menj az 'Új pénztárca', 'Pénztárca importja' menüponthoz, és töltsd föl az állományt a másik böngésző tárterületére.",
"a5_5":"A pénztárca ugyanazzal a jelszóval lesz elérhető, mint azelőtt. A jelszó a 'Beállítások'-ban változtatható meg.",
"q6":"Tudom ellenőrizni a forráskódot?",
"a6":"Igen. https://github.com/scholtz/wallet/ A pénztárca nyílt forráskódú és szabadon használható, másolható vagy módosítható, még kereskedelmi célokra is. Ha részt szeretnél venni a projektben, akkor hozz létre egy 'pull request'-et, amely a javításaidat tartalmazza.",
"q7":"Hogyan tudom segíteni a projektet?",
"a7_1":"A P65LXHA5MEDMOJ2ZAITLZWYSU6W25BF2FCXJ5KQRDUB2NT2T7DPAAFYT3U Algorand címre küldött adományokkal lehet a projektnek segítséget nyújtani. A projektet sem az Algorand Inc., sem az Algorand Foundation nem támogatta.",
"a7_2":"A projekt más nyelvre történő lefordításához menj a https://github.com/scholtz/wallet/tree/master/src/locales web helyre, fordítsd le az állományt a saját anyanyelvedre, és végezz egy 'pull request'-et.",
"a7_3":"Ha programozó vagy, végezz kódvizsgálatot, vagy jelezd, hogy miképpen lehetne a projektet jobbá tenni.",
"q8":"Hogyan készíthetők többszörösen aláírt számlák?",
"a8_1":"Először hozd létre a privát kulcsokkal rendelkező számlákat vagy hozz létre nyilvános számlákat. Jobb, ha neveket adsz a számláknak, hogy később emlékezz rá, milyen célból hoztad őket létre.",
"a8_2":"Menj az 'Új cím létrehozásá'-hoz, és válaszd ki a többszörösen aláírt számlát.",
"a8_3":"Válaszd ki az összes számlát, amely aláírhatja a tranzakciókat, és határozd meg, hogy minimum hány aláírásra legyen szükség ahhoz, hogy a hálózat elfogadja a többszörösen aláírt tranzakciót.",
"a8_4":"A többszörösen aláírt számla a létrehozása után a 'Számlák listázása' lapról érhető el."
}

}

New account refactor

FB #1: I think the New Account flow could be confusing to new users. You should give 3 option New Account, Import Account, Watch Account. Inside New Account you should be presented the way to generate a new basic account with an advanced tab that pulls away all of the other options. Presenting too many options to an average user will intimidate them.

Consider adding a Content Security Policy to mitigate packet sniffing and XSS, and malicious browser extension consideration

Hi,

I like this wallet solution.

I was just curious whether you have considered XSS in your threat model, and to consider adding CSP to protect against this. To my knowledge Vue won't automatically setup CSP. The policy tells the browser to only load images and execute scripts that come from trusted sources. Since your client is small, it might not be an issue.
https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP

HTTPS by itself isn't enough to prevent XSS: https://stackoverflow.com/questions/6530339/does-https-secure-cookies-prevent-xss-attacks

Also I'm curious what your thoughts are about malicious browser extensions, in relation to reading keys from WebCrypto (is that possible?), and key logging (is that possible?).

A formal analysis that addresses these points would be greatly appreciated, and assist other developers in learning.

Best regards.

Account in multiple networks

FB #2: I accidentally set up one of my Voi Accounts under the main net network. When I switch to Voi network it disappears. I understand why you did this, but there should be an option under Account Actions to give a check list of what networks he wallet shows up in.

.. make the account assignable to multiple networks

Import by 25 words

I have an existing wallet that I only have 25 words for, and I don't think there is a way to import into A-Wallet that way. How would I go about converting those to a file that can be imported?

Is this something that could be added, importing by 25 words??

Anyway this is an important and amazing app! Thanks for contributing this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.