├── docs ├── README.md ├── components.rst ├── data_layer.rst ├── structure.rst ├── _build │ ├── html │ │ ├── _sources │ │ │ ├── components.txt │ │ │ ├── data_layer.txt │ │ │ ├── structure.txt │ │ │ ├── help.txt │ │ │ ├── getting_started.txt │ │ │ ├── index.txt │ │ │ └── license.txt │ │ ├── objects.inv │ │ ├── _static │ │ │ ├── up.png │ │ │ ├── down.png │ │ │ ├── file.png │ │ │ ├── minus.png │ │ │ ├── plus.png │ │ │ ├── comment.png │ │ │ ├── up-pressed.png │ │ │ ├── ajax-loader.gif │ │ │ ├── comment-close.png │ │ │ ├── down-pressed.png │ │ │ ├── comment-bright.png │ │ │ └── fonts │ │ │ │ ├── Lato-Bold.ttf │ │ │ │ ├── Lato-Regular.ttf │ │ │ │ ├── Inconsolata-Bold.ttf │ │ │ │ ├── RobotoSlab-Bold.ttf │ │ │ │ ├── Inconsolata-Regular.ttf │ │ │ │ ├── RobotoSlab-Regular.ttf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ └── fontawesome-webfont.woff │ │ └── .buildinfo │ └── doctrees │ │ ├── help.doctree │ │ ├── index.doctree │ │ ├── license.doctree │ │ ├── components.doctree │ │ ├── data_layer.doctree │ │ ├── environment.pickle │ │ ├── structure.doctree │ │ ├── contributing.doctree │ │ └── getting_started.doctree ├── help.rst ├── getting_started.rst ├── index.rst └── license.rst ├── .eslintignore ├── help ├── cn │ ├── glossary.md │ ├── components │ │ ├── AccountPermActive.md │ │ ├── AccountPermOwner.md │ │ ├── InitError.md │ │ ├── AccountVotingCommittee.md │ │ ├── AccountVotingProxy.md │ │ ├── AccountVoting.md │ │ ├── AccountPermMemo.md │ │ ├── AccountAssetCreate.md │ │ ├── AccountVotingWitnesses.md │ │ ├── AccountVotingWorkers.md │ │ ├── Fees.md │ │ ├── BorrowModal.md │ │ ├── DepositWithdraw.md │ │ └── AccountMembership.md │ ├── assets │ │ ├── EUR.md │ │ ├── USD.md │ │ ├── privbitassets.md │ │ ├── uia.md │ │ └── mpa.md │ ├── introduction │ │ ├── committee.md │ │ ├── witness.md │ │ ├── wallets.md │ │ ├── workers.md │ │ ├── bridges_gateways.md │ │ ├── blockchain.md │ │ ├── backups.md │ │ └── bitshares.md │ ├── accounts │ │ ├── general.md │ │ └── membership.md │ ├── toc.md │ ├── dex │ │ ├── trading.md │ │ ├── shorting.md │ │ └── introduction.md │ └── index.md ├── tr │ ├── glossary.md │ ├── components │ │ ├── InitError.md │ │ ├── AccountVotingProxy.md │ │ ├── AccountPermOwner.md │ │ ├── AccountPermActive.md │ │ ├── AccountVoting.md │ │ ├── AccountVotingCommittee.md │ │ ├── AccountPermMemo.md │ │ ├── AccountVotingWitnesses.md │ │ ├── BorrowModal.md │ │ ├── AccountVotingWorkers.md │ │ ├── AccountAssetCreate.md │ │ └── Fees.md │ ├── assets │ │ ├── USD.md │ │ ├── EUR.md │ │ ├── privbitassets.md │ │ ├── uia.md │ │ └── mpa.md │ ├── introduction │ │ ├── committee.md │ │ ├── witness.md │ │ ├── wallets.md │ │ ├── workers.md │ │ ├── backups.md │ │ └── blockchain.md │ ├── accounts │ │ └── general.md │ ├── toc.md │ └── index.md ├── en │ ├── glossary.md │ ├── components │ │ ├── BorrowModalPrediction.md │ │ ├── InitError.md │ │ ├── AccountPermOwner.md │ │ ├── AccountVotingProxy.md │ │ ├── AccountPermActive.md │ │ ├── AccountPermMemo.md │ │ ├── AccountVotingCommittee.md │ │ ├── BorrowModal.md │ │ ├── AccountVotingWitnesses.md │ │ ├── AccountVotingWorkers.md │ │ ├── AccountVoting.md │ │ ├── AccountAssetCreate.md │ │ ├── DepositWithdraw.md │ │ ├── Fees.md │ │ └── AccountMembership.md │ ├── assets │ │ ├── EUR.md │ │ ├── USD.md │ │ ├── privbitassets.md │ │ ├── uia.md │ │ └── mpa.md │ ├── introduction │ │ ├── committee.md │ │ ├── witness.md │ │ ├── wallets.md │ │ ├── workers.md │ │ ├── backups.md │ │ └── blockchain.md │ ├── accounts │ │ └── general.md │ ├── toc.md │ └── index.md └── es │ ├── accounts │ └── general.md │ └── toc.md ├── web ├── app │ ├── assets │ │ ├── stylesheets │ │ │ ├── base │ │ │ │ └── _all.scss │ │ │ ├── utils │ │ │ │ ├── _all.scss │ │ │ │ └── _utils.scss │ │ │ ├── layout │ │ │ │ ├── _all.scss │ │ │ │ └── _page_layout.scss │ │ │ ├── themes │ │ │ │ └── _all.scss │ │ │ ├── vendors │ │ │ │ ├── Roboto-Light.woff │ │ │ │ ├── Roboto-Regular.woff │ │ │ │ ├── RobotoCondensed-Regular.woff │ │ │ │ └── _all.scss │ │ │ ├── components │ │ │ │ ├── _existing_accounts.scss │ │ │ │ ├── _console.scss │ │ │ │ ├── _settings.scss │ │ │ │ ├── _footer.scss │ │ │ │ ├── _dashboard.scss │ │ │ │ ├── _all.scss │ │ │ │ ├── _wallet.scss │ │ │ │ ├── _pagination.scss │ │ │ │ ├── _cards.scss │ │ │ │ ├── _tables.scss │ │ │ │ └── _header.scss │ │ │ └── app.scss │ │ ├── favicon.ico │ │ ├── fresh-bolt2.png │ │ ├── logo-ico-blue.png │ │ ├── asset-symbols │ │ │ ├── bkt.png │ │ │ ├── btc.png │ │ │ ├── bts.png │ │ │ ├── btsr.png │ │ │ ├── cny.png │ │ │ ├── dao.png │ │ │ ├── dash.png │ │ │ ├── dct.png │ │ │ ├── dgd.png │ │ │ ├── eth.png │ │ │ ├── eur.png │ │ │ ├── eurt.png │ │ │ ├── game.png │ │ │ ├── gold.png │ │ │ ├── grc.png │ │ │ ├── icoo.png │ │ │ ├── lisk.png │ │ │ ├── mkr.png │ │ │ ├── nxc.png │ │ │ ├── usd.png │ │ │ ├── usdt.png │ │ │ ├── btwty.png │ │ │ ├── incnt.png │ │ │ ├── obits.png │ │ │ ├── steem.png │ │ │ ├── blockpay.png │ │ │ ├── open.btc.png │ │ │ └── peerplays.png │ │ ├── bts_genesiskeys_bloom.dat │ │ ├── loader-dev.js │ │ ├── locales │ │ │ └── locales.js │ │ ├── loader.js │ │ └── index-dev.html │ ├── counterpart-instance.js │ ├── components │ │ ├── Wallet │ │ │ ├── ImportKeys.scss │ │ │ └── BalanceClaimAssetTotal.jsx │ │ ├── Blockchain │ │ │ ├── operations.scss │ │ │ ├── LinkToAssetById.jsx │ │ │ ├── FeesContainer.jsx │ │ │ ├── LinkToWitnessById.jsx │ │ │ ├── BlockContainer.jsx │ │ │ ├── AssetContainer.jsx │ │ │ └── LinkToAccountById.jsx │ │ ├── Settings │ │ │ ├── PasswordSettings.jsx │ │ │ ├── SettingsContainer.jsx │ │ │ └── WalletSettings.jsx │ │ ├── Exchange │ │ │ ├── highcharts-plugins │ │ │ │ └── indicators.css │ │ │ └── MarketsContainer.jsx │ │ ├── Explorer │ │ │ ├── witnesses.scss │ │ │ ├── AccountsContainer.jsx │ │ │ ├── BlocksContainer.jsx │ │ │ └── AssetsContainer.jsx │ │ ├── Icon │ │ │ ├── thumb-tack.svg │ │ │ ├── chevron-down.svg │ │ │ ├── clock.svg │ │ │ ├── trash.svg │ │ │ ├── menu.svg │ │ │ ├── checkmark.svg │ │ │ ├── search.svg │ │ │ ├── cog.svg │ │ │ ├── icon.scss │ │ │ ├── plus-circle.svg │ │ │ ├── checkmark-circle.svg │ │ │ ├── user.svg │ │ │ ├── locked.svg │ │ │ ├── fi-star.svg │ │ │ ├── markets.svg │ │ │ ├── unlocked.svg │ │ │ ├── cross-circle.svg │ │ │ ├── question-circle.svg │ │ │ ├── layers.svg │ │ │ ├── key.svg │ │ │ ├── fees.svg │ │ │ ├── b-logo.svg │ │ │ └── Icon.jsx │ │ ├── BuySell │ │ │ └── BuySell.scss │ │ ├── Transfer │ │ │ ├── transfer.scss │ │ │ └── TransferPage.jsx │ │ ├── Notifier │ │ │ └── NotifierContainer.jsx │ │ ├── Utility │ │ │ ├── intlData.js │ │ │ ├── VestingBalance.jsx │ │ │ ├── Prototypes.js │ │ │ ├── BalanceComponent.jsx │ │ │ └── FormattedFee.jsx │ │ ├── Help.jsx │ │ ├── Account │ │ │ ├── AccountImage.jsx │ │ │ ├── AccountBalance.jsx │ │ │ ├── Statistics.jsx │ │ │ └── Connections.jsx │ │ ├── Forms │ │ │ └── MyAccounts.jsx │ │ └── Dashboard │ │ │ └── DashboardContainer.jsx │ ├── alt-instance.js │ ├── actions │ │ ├── BrainkeyActions.js │ │ ├── CachedPropertyActions.js │ │ ├── BalanceClaimActiveActions.js │ │ ├── PrivateKeyActions.js │ │ ├── SettingsActions.js │ │ ├── WalletUnlockActions.js │ │ ├── NotificationActions.js │ │ └── IntlActions.js │ ├── api │ │ ├── accountApi.js │ │ └── DebugApi.js │ ├── Main.js │ ├── Main-dev.js │ ├── stores │ │ ├── BaseStore.js │ │ ├── ImportKeysStore.js │ │ └── NotificationStore.js │ ├── index-dev.js │ └── index.js ├── lib │ ├── common │ │ ├── base58.coffee │ │ ├── qr-image.coffee │ │ ├── secureRandom.coffee │ │ ├── Counterpart.js │ │ ├── localStorageImpl.js │ │ ├── formPost.js │ │ └── localStorage.js │ ├── chain │ │ ├── serializer_config.coffee │ │ └── account_constants.js │ └── workers │ │ ├── AddressIndexWorker.js │ │ ├── GenesisFilterWorker.js │ │ └── AesWorker.js ├── conf │ ├── webpack-dev.js │ ├── webpack-prod.js │ ├── webpack-hash-history.js │ ├── webpack-prod-nougly.js │ └── webpack-electron.js ├── .gitignore ├── karma.conf.js ├── .htaccess.example ├── __tests__ │ ├── wallets │ │ ├── test-wif-import.txt │ │ ├── bts0-9_key-export-fjfjfjfj1.json │ │ └── testnet-shared-private-keys-export.json │ ├── components │ │ └── Utility │ │ │ └── FormattedAsset-test.jsx │ ├── jest-preprocessor.js │ └── utils │ │ └── stub_router_context.js ├── bower.json ├── .babelrc ├── nginx.local.conf └── server.js ├── electron ├── gulpfile.js ├── .gitignore ├── resources │ ├── icon.png │ ├── osx │ │ ├── icon.icns │ │ ├── dmg-icon.icns │ │ ├── dmg-background.png │ │ ├── dmg-background@2x.png │ │ ├── appdmg.json │ │ ├── helper_apps │ │ │ ├── Info.plist │ │ │ ├── Info EH.plist │ │ │ └── Info NP.plist │ │ └── Info.plist │ ├── windows │ │ ├── icon.ico │ │ ├── setup-icon.ico │ │ └── setup-banner.bmp │ └── linux │ │ ├── DEBIAN │ │ └── control │ │ └── app.desktop ├── config │ ├── env_test.json │ ├── env_production.json │ └── env_development.json ├── tasks │ ├── release.js │ ├── start.js │ ├── utils.js │ └── write_digest.js ├── build │ ├── package.json │ └── vendor │ │ └── electron_boilerplate │ │ ├── env_config.js │ │ ├── dev_helper.js │ │ └── context_menu.js ├── package.json └── .eslintrc ├── bloom_filter ├── bloom_bitshares.dat ├── package.json └── bloom.py ├── trollbox ├── config.js ├── package.json └── trollbox.js ├── .gitignore ├── .eslintrc └── LICENSE.md /docs/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | bloom_filter 2 | -------------------------------------------------------------------------------- /docs/components.rst: -------------------------------------------------------------------------------- 1 | Components 2 | ========== -------------------------------------------------------------------------------- /docs/data_layer.rst: -------------------------------------------------------------------------------- 1 | Data layer 2 | ========== -------------------------------------------------------------------------------- /docs/structure.rst: -------------------------------------------------------------------------------- 1 | General overview 2 | ================ -------------------------------------------------------------------------------- /help/cn/glossary.md: -------------------------------------------------------------------------------- 1 | ### 词汇表 2 | 3 | [返回索引页](index.md) 4 | -------------------------------------------------------------------------------- /web/app/assets/stylesheets/base/_all.scss: -------------------------------------------------------------------------------- 1 | @import "fonts"; -------------------------------------------------------------------------------- /web/app/assets/stylesheets/utils/_all.scss: -------------------------------------------------------------------------------- 1 | @import "utils"; -------------------------------------------------------------------------------- /docs/_build/html/_sources/components.txt: -------------------------------------------------------------------------------- 1 | Components 2 | ========== -------------------------------------------------------------------------------- /docs/_build/html/_sources/data_layer.txt: -------------------------------------------------------------------------------- 1 | Data layer 2 | ========== -------------------------------------------------------------------------------- /help/tr/glossary.md: -------------------------------------------------------------------------------- 1 | ### Terimler 2 | 3 | [İndexe Geri Git](index.md) -------------------------------------------------------------------------------- /web/app/assets/stylesheets/layout/_all.scss: -------------------------------------------------------------------------------- 1 | @import "page_layout"; -------------------------------------------------------------------------------- /web/lib/common/base58.coffee: -------------------------------------------------------------------------------- 1 | module.exports = require 'bs58' 2 | -------------------------------------------------------------------------------- /help/en/glossary.md: -------------------------------------------------------------------------------- 1 | ### Glossary 2 | 3 | [Back to index](index.md) 4 | -------------------------------------------------------------------------------- /web/lib/common/qr-image.coffee: -------------------------------------------------------------------------------- 1 | module.exports = require 'qr-image' 2 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/structure.txt: -------------------------------------------------------------------------------- 1 | General overview 2 | ================ -------------------------------------------------------------------------------- /electron/gulpfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | require('./tasks/release'); 4 | -------------------------------------------------------------------------------- /web/lib/common/secureRandom.coffee: -------------------------------------------------------------------------------- 1 | module.exports = require 'secure-random' 2 | -------------------------------------------------------------------------------- /web/lib/chain/serializer_config.coffee: -------------------------------------------------------------------------------- 1 | 2 | 3 | module.exports = 4 | hex_dump: no 5 | -------------------------------------------------------------------------------- /web/conf/webpack-dev.js: -------------------------------------------------------------------------------- 1 | module.exports = require("./webpack.config")({ 2 | prod: false 3 | }); 4 | -------------------------------------------------------------------------------- /web/conf/webpack-prod.js: -------------------------------------------------------------------------------- 1 | module.exports = require("./webpack.config")({ 2 | prod: true 3 | }); 4 | -------------------------------------------------------------------------------- /web/app/counterpart-instance.js: -------------------------------------------------------------------------------- 1 | import counterpart from "counterpart"; 2 | export default counterpart; 3 | -------------------------------------------------------------------------------- /electron/.gitignore: -------------------------------------------------------------------------------- 1 | build/* 2 | !build/electron.js 3 | !build/package.json 4 | !build/vendor 5 | releases 6 | -------------------------------------------------------------------------------- /electron/resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/electron/resources/icon.png -------------------------------------------------------------------------------- /web/app/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/favicon.ico -------------------------------------------------------------------------------- /docs/_build/html/objects.inv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/objects.inv -------------------------------------------------------------------------------- /web/lib/common/Counterpart.js: -------------------------------------------------------------------------------- 1 | var counterpart = require("counterpart"); 2 | 3 | module.exports = counterpart; 4 | -------------------------------------------------------------------------------- /bloom_filter/bloom_bitshares.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/bloom_filter/bloom_bitshares.dat -------------------------------------------------------------------------------- /docs/_build/html/_static/up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/up.png -------------------------------------------------------------------------------- /electron/resources/osx/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/electron/resources/osx/icon.icns -------------------------------------------------------------------------------- /web/app/assets/fresh-bolt2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/fresh-bolt2.png -------------------------------------------------------------------------------- /web/app/assets/logo-ico-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/logo-ico-blue.png -------------------------------------------------------------------------------- /web/app/assets/stylesheets/themes/_all.scss: -------------------------------------------------------------------------------- 1 | @import "dark-theme"; 2 | @import "light-theme"; 3 | @import "ol-dark-theme"; -------------------------------------------------------------------------------- /docs/_build/doctrees/help.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/doctrees/help.doctree -------------------------------------------------------------------------------- /docs/_build/doctrees/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/doctrees/index.doctree -------------------------------------------------------------------------------- /docs/_build/html/_static/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/down.png -------------------------------------------------------------------------------- /docs/_build/html/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/file.png -------------------------------------------------------------------------------- /docs/_build/html/_static/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/minus.png -------------------------------------------------------------------------------- /docs/_build/html/_static/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/plus.png -------------------------------------------------------------------------------- /help/cn/components/AccountPermActive.md: -------------------------------------------------------------------------------- 1 | 活跃权限用来设定拥有花费本账户资金权限的账户名或公钥。 2 | 3 | 可方便的架设多重签名机制,参见 [权限](accounts/permissions) 了解更新信息。 -------------------------------------------------------------------------------- /web/conf/webpack-hash-history.js: -------------------------------------------------------------------------------- 1 | module.exports = require("./webpack.config")({ 2 | prod: true, 3 | hash: true 4 | }); 5 | -------------------------------------------------------------------------------- /web/conf/webpack-prod-nougly.js: -------------------------------------------------------------------------------- 1 | module.exports = require("./webpack.config")({ 2 | prod: true, 3 | noUgly: true 4 | }); 5 | -------------------------------------------------------------------------------- /docs/_build/doctrees/license.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/doctrees/license.doctree -------------------------------------------------------------------------------- /docs/_build/html/_static/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/comment.png -------------------------------------------------------------------------------- /electron/resources/osx/dmg-icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/electron/resources/osx/dmg-icon.icns -------------------------------------------------------------------------------- /electron/resources/windows/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/electron/resources/windows/icon.ico -------------------------------------------------------------------------------- /help/cn/components/AccountPermOwner.md: -------------------------------------------------------------------------------- 1 | 账户权限设定谁可以控制本账户。控制人(账户名或公钥)可修改账户相关的各种设置,包括权限设置。 2 | 3 | 参见 [权限](accounts/permissions) 了解更多信息。 -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/bkt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/bkt.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/btc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/btc.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/bts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/bts.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/btsr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/btsr.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/cny.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/cny.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/dao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/dao.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/dash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/dash.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/dct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/dct.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/dgd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/dgd.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/eth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/eth.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/eur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/eur.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/eurt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/eurt.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/game.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/game.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/gold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/gold.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/grc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/grc.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/icoo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/icoo.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/lisk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/lisk.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/mkr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/mkr.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/nxc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/nxc.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/usd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/usd.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/usdt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/usdt.png -------------------------------------------------------------------------------- /docs/_build/doctrees/components.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/doctrees/components.doctree -------------------------------------------------------------------------------- /docs/_build/doctrees/data_layer.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/doctrees/data_layer.doctree -------------------------------------------------------------------------------- /docs/_build/doctrees/environment.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/doctrees/environment.pickle -------------------------------------------------------------------------------- /docs/_build/doctrees/structure.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/doctrees/structure.doctree -------------------------------------------------------------------------------- /docs/_build/html/_static/up-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/up-pressed.png -------------------------------------------------------------------------------- /electron/config/env_test.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test", 3 | "description": "Add here any environment specific stuff you like." 4 | } 5 | -------------------------------------------------------------------------------- /help/en/components/BorrowModalPrediction.md: -------------------------------------------------------------------------------- 1 | This is a binary prediction market. 2 | 3 | The collateral ratio of this market is 1:1. 4 | -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/btwty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/btwty.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/incnt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/incnt.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/obits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/obits.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/steem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/steem.png -------------------------------------------------------------------------------- /docs/_build/doctrees/contributing.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/doctrees/contributing.doctree -------------------------------------------------------------------------------- /docs/_build/html/_static/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/ajax-loader.gif -------------------------------------------------------------------------------- /docs/_build/html/_static/comment-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/comment-close.png -------------------------------------------------------------------------------- /docs/_build/html/_static/down-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/down-pressed.png -------------------------------------------------------------------------------- /electron/resources/osx/dmg-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/electron/resources/osx/dmg-background.png -------------------------------------------------------------------------------- /electron/resources/windows/setup-icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/electron/resources/windows/setup-icon.ico -------------------------------------------------------------------------------- /help/cn/assets/EUR.md: -------------------------------------------------------------------------------- 1 | [# summary] 2 | ### 资产 {symbol} 3 | 4 | {description} 5 | 发行人 {issuer} 6 | 7 | 欧元 (标识: €; 符号: EUR) 是欧元区参与国的官方货币。 8 | -------------------------------------------------------------------------------- /help/cn/assets/USD.md: -------------------------------------------------------------------------------- 1 | [# summary] 2 | ### 资产 {symbol} 3 | 4 | {description} 5 | 发行人 {issuer} 6 | 7 | 美元 (标识: $; 符号: USD) 是美利坚合众国的官方货币。 8 | -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/blockpay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/blockpay.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/open.btc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/open.btc.png -------------------------------------------------------------------------------- /web/app/assets/asset-symbols/peerplays.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/asset-symbols/peerplays.png -------------------------------------------------------------------------------- /web/app/assets/bts_genesiskeys_bloom.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/bts_genesiskeys_bloom.dat -------------------------------------------------------------------------------- /docs/_build/doctrees/getting_started.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/doctrees/getting_started.doctree -------------------------------------------------------------------------------- /docs/_build/html/_static/comment-bright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/comment-bright.png -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/Lato-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/fonts/Lato-Bold.ttf -------------------------------------------------------------------------------- /electron/config/env_production.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "production", 3 | "description": "Add here any environment specific stuff you like." 4 | } 5 | -------------------------------------------------------------------------------- /electron/resources/osx/dmg-background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/electron/resources/osx/dmg-background@2x.png -------------------------------------------------------------------------------- /electron/resources/windows/setup-banner.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/electron/resources/windows/setup-banner.bmp -------------------------------------------------------------------------------- /help/cn/components/InitError.md: -------------------------------------------------------------------------------- 1 | [# connection-error] 2 | 无法获取到全节点的 websocket 连接 3 | 4 | Possible reasons: TODO 5 | - reason #1 6 | - reason #2 7 | -------------------------------------------------------------------------------- /web/.gitignore: -------------------------------------------------------------------------------- 1 | .sass-cache 2 | node_modules 3 | bower_components 4 | bundle 5 | stats-dev.json 6 | stats-prod.json 7 | test/MarketClasses.js 8 | -------------------------------------------------------------------------------- /web/conf/webpack-electron.js: -------------------------------------------------------------------------------- 1 | module.exports = require("./webpack.config")({ 2 | prod: true, 3 | electron: true, 4 | hash: true 5 | }); 6 | -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/Lato-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/fonts/Lato-Regular.ttf -------------------------------------------------------------------------------- /electron/config/env_development.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "development", 3 | "description": "Add here any environment specific stuff you like." 4 | } 5 | -------------------------------------------------------------------------------- /help/cn/components/AccountVotingCommittee.md: -------------------------------------------------------------------------------- 1 | [理事会成员](introduction/committee) 可以提议修改区块链的动态参数,比如手续费,区块间隔时间以及其他很多参数。这是一个需要对BitShares系统如何运作有很深理解,需要有很强责任感的职位。 -------------------------------------------------------------------------------- /help/cn/components/AccountVotingProxy.md: -------------------------------------------------------------------------------- 1 | 代理投票账户代表你行使投票权力。你可以在[Bitsharestalk](https://bitsharestalk.org/index.php/board,104.0.html)论坛上找到一些申请成为投票代理人的提案。 -------------------------------------------------------------------------------- /help/cn/components/AccountVoting.md: -------------------------------------------------------------------------------- 1 | ### 投票 2 | 3 | 在BitShares系统中,投票是非常重要的一项特性,不仅事关网络安全,同时也能影响系统的后续开发方向。如果你愿意的话,你可以将你的投票权交由代理投票账户执行。如果你设定了代理投票账户,则手动投票将相应关闭。 -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/Inconsolata-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/fonts/Inconsolata-Bold.ttf -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/RobotoSlab-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/fonts/RobotoSlab-Bold.ttf -------------------------------------------------------------------------------- /help/cn/components/AccountPermMemo.md: -------------------------------------------------------------------------------- 1 | 交易附带的备注信息是使用备注公钥加密后传输的。为了解密备注信息,需要拥有备注公钥对应的私钥。 2 | 3 | 备注信息由单独公/私钥对进行管理,而非兼用活跃权限职权实体可让你安全的将备注信息的只读权限交由第三方,而无需暴露在资金控制权外泄的风险下。 -------------------------------------------------------------------------------- /help/tr/components/InitError.md: -------------------------------------------------------------------------------- 1 | [# connection-error] 2 | Ful noda websocket bağlantısı kuramadık. 3 | 4 | Olası sebepler: TODO 5 | - sebep #1 6 | - sebep #2 7 | -------------------------------------------------------------------------------- /web/app/assets/stylesheets/vendors/Roboto-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/stylesheets/vendors/Roboto-Light.woff -------------------------------------------------------------------------------- /web/karma.conf.js: -------------------------------------------------------------------------------- 1 | var karmaConfig = require('./gulpfile.js/config').karma; 2 | 3 | module.exports = function(config) { 4 | config.set(karmaConfig); 5 | }; 6 | -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/Inconsolata-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/fonts/Inconsolata-Regular.ttf -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/RobotoSlab-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/fonts/RobotoSlab-Regular.ttf -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /web/app/assets/stylesheets/vendors/Roboto-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/stylesheets/vendors/Roboto-Regular.woff -------------------------------------------------------------------------------- /docs/_build/html/_static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/docs/_build/html/_static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /help/cn/introduction/committee.md: -------------------------------------------------------------------------------- 1 | # 理事会 2 | 3 | 理事会由一组股东投票通过的理事会成员组成,理事会成员的职责在于设定系统运行参数。其中包括: 4 | 5 | * 转账及交易手续费 6 | * 区块链参数,比如区块大小,区块生成时间间隔,等等 7 | * 推荐及冻结/解冻参数,比如奖励返现比例和冻结时间等 8 | -------------------------------------------------------------------------------- /help/en/components/InitError.md: -------------------------------------------------------------------------------- 1 | [# connection-error] 2 | We couldn't establish websocket connection to a full node. 3 | 4 | Possible reasons: TODO 5 | - reason #1 6 | - reason #2 7 | -------------------------------------------------------------------------------- /web/app/components/Wallet/ImportKeys.scss: -------------------------------------------------------------------------------- 1 | div > div.asset-list:first-child { 2 | padding-top: 0.25rem; 3 | } 4 | 5 | div > div.asset-list { 6 | padding-bottom: 0.25rem; 7 | } -------------------------------------------------------------------------------- /web/app/assets/stylesheets/vendors/RobotoCondensed-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cryptonomex/graphene-ui/HEAD/web/app/assets/stylesheets/vendors/RobotoCondensed-Regular.woff -------------------------------------------------------------------------------- /help/tr/assets/USD.md: -------------------------------------------------------------------------------- 1 | [# summary] 2 | ### Aktif {symbol} 3 | 4 | {description} 5 | Piyasaya süren {issuer} 6 | 7 | Amerikan Doları (işeret: $; sembol: USD $) ABD'nin resmi para birimidir. -------------------------------------------------------------------------------- /web/.htaccess.example: -------------------------------------------------------------------------------- 1 | RewriteBase / 2 | RewriteRule ^index\.html$ - [L] 3 | RewriteCond %{REQUEST_FILENAME} !-f 4 | RewriteCond %{REQUEST_FILENAME} !-d 5 | RewriteRule . /index.html [L] 6 | -------------------------------------------------------------------------------- /help/cn/components/AccountAssetCreate.md: -------------------------------------------------------------------------------- 1 | 创建自定义资产需要以下信息: 2 | 3 | * 资产符号 4 | * 最大供给量 5 | 6 | 精度决定了资产支持的小数点后的位数。 7 | 8 | 资产创建需要支付的费用取决于资产符号的字符长度。 9 | 10 | 你可以设定交易手续费率来决定用户交易时需要向你支付多少比例的费用。 -------------------------------------------------------------------------------- /web/app/assets/stylesheets/vendors/_all.scss: -------------------------------------------------------------------------------- 1 | @import "foundation_settings"; 2 | @import "~foundation-apps/scss/foundation.scss"; 3 | @import "foundation_overrides"; 4 | @import "perfect-scrollbar"; 5 | -------------------------------------------------------------------------------- /web/app/components/Blockchain/operations.scss: -------------------------------------------------------------------------------- 1 | .left-td { 2 | min-width: 7em; 3 | padding-right: 1em; 4 | text-align: left; 5 | } 6 | 7 | .right-td { 8 | text-align: left; 9 | } 10 | -------------------------------------------------------------------------------- /web/app/assets/stylesheets/components/_existing_accounts.scss: -------------------------------------------------------------------------------- 1 | .existing-accounts-select { 2 | height: 150px; 3 | } 4 | 5 | #unclaimed_balance_rows { 6 | max-height: 400px; 7 | overflow-y: auto; 8 | } -------------------------------------------------------------------------------- /help/cn/accounts/general.md: -------------------------------------------------------------------------------- 1 | # 账户 2 | 3 | 或许你已经注意到,本区块链技术要求你注册一个账户名。这带来很多好处:这不仅增强了系统的可扩展性,同时我们可以将身份标示与交易授权签名分开。事实上,*拥有一个账户名*和能够*花费它的资金*是相互独立的。而且,这两种权利 (我们称之为*权限*)能够分散赋予任意复杂的人群关系中。我们称之为*职权实体*你可通过分配*权重*和设定 *门槛阀值*来实现。 4 | -------------------------------------------------------------------------------- /help/tr/assets/EUR.md: -------------------------------------------------------------------------------- 1 | [# summary] 2 | ### Aktif {symbol} 3 | 4 | {description} 5 | Piyasaya süren {issuer} 6 | 7 | Euro (işaret: €; sembol: EUR) Avrupa bölgesindeki katılımcı ülkelerin resmi para birimidir. 8 | -------------------------------------------------------------------------------- /electron/resources/linux/DEBIAN/control: -------------------------------------------------------------------------------- 1 | Package: {{name}} 2 | Version: {{version}} 3 | Maintainer: {{author}} 4 | Priority: optional 5 | Architecture: amd64 6 | Installed-Size: {{size}} 7 | Description: {{description}} 8 | -------------------------------------------------------------------------------- /trollbox/config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | port: 9000, 3 | useSSL: false, 4 | ssl: { 5 | key: '/path/to/your/ssl/key/here.key', 6 | cert: '/path/to/your/ssl/certificate/here.crt' 7 | } 8 | } -------------------------------------------------------------------------------- /web/lib/common/localStorageImpl.js: -------------------------------------------------------------------------------- 1 | var ls_key_exists = function _ls_key_exists(key,ls) { return (key in ls); } 2 | export {ls_key_exists}; 3 | export default (typeof localStorage === "undefined" ? null : localStorage); 4 | -------------------------------------------------------------------------------- /help/cn/assets/privbitassets.md: -------------------------------------------------------------------------------- 1 | 私有比特资产 2 | ==================== 3 | 4 | 通过私有比特资产,某些用户可以发行市场锚地资产,然后并不依赖见证人发布的喂价信息。相反的,在创建*私有比特资产*时,发行人设定一组授权账号来发布喂价信息。发行人可以设置与该资产相关的各种费率参数。 5 | 6 | 这个特性主要适用于一些中心化交易所和机构,它们往往能够获得实时的价格信息,并以此来增加交易量。 -------------------------------------------------------------------------------- /help/en/assets/EUR.md: -------------------------------------------------------------------------------- 1 | [# summary] 2 | ### Asset {symbol} 3 | 4 | {description} 5 | 6 | Issued by: {issuer} 7 | 8 | The Euro (sign: €; symbol: EUR) is the official currency of participating countries in the Europ zone. 9 | -------------------------------------------------------------------------------- /help/en/components/AccountPermOwner.md: -------------------------------------------------------------------------------- 1 | Owner permissions define who has control over the account. Owners may overwrite all keys and change any account settings. 2 | 3 | See [permissions](accounts/permissions) for more details. -------------------------------------------------------------------------------- /help/en/components/AccountVotingProxy.md: -------------------------------------------------------------------------------- 1 | A proxy handles voting on your behalf. You may find people proposing to act as proxies in the Bitshares forum [Bitsharestalk](https://bitsharestalk.org/index.php/board,104.0.html). 2 | -------------------------------------------------------------------------------- /web/app/alt-instance.js: -------------------------------------------------------------------------------- 1 | var Alt = require("alt"); 2 | var alt = new Alt(); 3 | 4 | // DEBUG log all action events 5 | // alt.dispatcher.register(console.log.bind(console, 'alt.dispatcher')) 6 | 7 | module.exports = alt; 8 | -------------------------------------------------------------------------------- /help/cn/components/AccountVotingWitnesses.md: -------------------------------------------------------------------------------- 1 | [见证人](introduction/witness) 是BitShares系统中区块的生产者。他们验证交易数据并维护网络安全。你可以投票选举你信任的人成为见证人。投票时,你选择的候选人将获得你投出的相同票数。见证人的竞选帖可在这里找到[Bitsharestalk](https://bitsharestalk.org/index.php/board,61.0.html)。 -------------------------------------------------------------------------------- /help/en/assets/USD.md: -------------------------------------------------------------------------------- 1 | [# summary] 2 | ### Asset {symbol} 3 | 4 | {description} 5 | 6 | Issued by: {issuer} 7 | 8 | The United States dollar (sign: $; symbol: USD) is the official currency of the United States of America. 9 | -------------------------------------------------------------------------------- /help/tr/components/AccountVotingProxy.md: -------------------------------------------------------------------------------- 1 | Bir vekil adınıza oy kullanımını yönetir. BitShares forumunda vekil olarak görev almaya gnüllü kişileri bulabilirsiniz [Bitsharestalk](https://bitsharestalk.org/index.php/board,104.0.html). -------------------------------------------------------------------------------- /help/cn/components/AccountVotingWorkers.md: -------------------------------------------------------------------------------- 1 | [预算项目](introduction/workers) 是BitShares系统中独有的概念。他们是一些期望通过提供服务来从区块链获得奖金的工作项目提案。一项提案包含一个指向网站或论坛帖子的链接,在其中详细解释了工作项目的介绍。在这里[Bitsharestalk](https://bitsharestalk.org/index.php/board,103.0.html)可以看到一些提案。 -------------------------------------------------------------------------------- /help/cn/components/Fees.md: -------------------------------------------------------------------------------- 1 | # 手续费率 2 | 3 | 在BitShares系统中,每一种操作都将花费*相应*手续费。手续费率可能发生变化。然而,手续费的调整需要获得股东的授权。所以每一位持有BitShares核心资产(BTS)的股东对费率的构成都有话语权。如果股东确信某种手续费的降低将带来好处,并且达成共识,那么该种手续费则由区块链自动进行调低。区块链参数的改变由理事会成员提出动议。这些成员由全体股东投票选举产生,以提高系统灵活性和响应率。 -------------------------------------------------------------------------------- /help/en/components/AccountPermActive.md: -------------------------------------------------------------------------------- 1 | Active permissions define the accounts that have permission to spend funds for this account. 2 | 3 | They can be used to easily setup a multi-signature scheme, see [permissions](accounts/permissions) for more details. -------------------------------------------------------------------------------- /help/tr/components/AccountPermOwner.md: -------------------------------------------------------------------------------- 1 | Sahip izinleri hesap üzerinde kimin kontrolü olduğunu belirler. Sahipler tüm anahtarların yenilerini belirleyebilir ve herhangi hesap ayarını değiştirebilir. 2 | 3 | Daha fazla bilgi için [izinler](accounts/permissions) . -------------------------------------------------------------------------------- /help/cn/components/BorrowModal.md: -------------------------------------------------------------------------------- 1 | 调整和设置你的债务及抵押物(保证金). 2 | 3 | 如果调低 {debt} 债务水平,将从 {borrower} 账户中扣除相应 {debt} 归还。 4 | 如果调高 {debt} 债务水平,只要 {borrower} 账户持有足够的 {collateral} 可供抵押冻结,新借入的 {debt} 将存入 {borrower} 账户中。 5 | 6 | 保证金可以增加或减少,只要抵押率超过维持保证金率。[更多信息](dex/shorting) 7 | -------------------------------------------------------------------------------- /docs/_build/html/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: 1da5a1a5435027eeeab3977e6dd08f82 4 | tags: 645f666f9bcd5a90fca523b33c5a78b7 5 | -------------------------------------------------------------------------------- /help/cn/assets/uia.md: -------------------------------------------------------------------------------- 1 | # 用户发行的资产 2 | 3 | 除了之前提到的 *市场锚定资产* 外,BitShares允许个人或公司用户创建和发行各种自定义资产凭证(UIA)。相关的应用场景数不胜数。比如,UIA可被用来代替简单的活动门票,存入合格用户的手机钱包中,在进入活动现场时进行实时验证。同样,UIA可被用来进行众筹、所有权追踪,甚至是代表公司的股权。 4 | 5 | 显然,适用于不同凭证使用场景的法律法规可能天差地别,尤其是在不同国家时。所以,BitShares提供了一组工具来帮助发行人来合规发行和管理UIA。 -------------------------------------------------------------------------------- /help/cn/introduction/witness.md: -------------------------------------------------------------------------------- 1 | # 见证人 2 | 3 | 见证人是为区块链打包生成新的区块的实体。每一个见证人由股东批准,打包经验证的交易,生成并签署区块。每一条进入网络的交易最终将被所有见证人验证。 4 | 5 | ## 共识机制 6 | 7 | 由谁在什么时间来*打包生成*区块是由被称为*Delegated Proof of Stak (DPOS)*的共识算法决定的。算法的本质是 BitShares 的股东(BTS的持有者)能通过投票来决定他们期望的块打包者。由获得最多票数的所谓"见证人"来打包生成区块。 -------------------------------------------------------------------------------- /web/app/assets/stylesheets/app.scss: -------------------------------------------------------------------------------- 1 | // http://sass-guidelin.es/#the-7-1-pattern 2 | 3 | @import "vendors/all"; 4 | 5 | @import "base/all"; 6 | 7 | @import "components/all"; 8 | 9 | @import "layout/all"; 10 | 11 | @import "themes/all"; 12 | 13 | @import "shame"; 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea 3 | */node_modules 4 | */npm-debug.log 5 | cli/bundle 6 | *.map 7 | *.log 8 | cli/examples.txt 9 | dist 10 | web/electron 11 | web/app/components/Exchange/exchange.css 12 | cli/bundle.js 13 | web/dist-prod 14 | web/stats* 15 | web/hash-history 16 | -------------------------------------------------------------------------------- /electron/resources/linux/app.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Type=Application 4 | Encoding=UTF-8 5 | Name={{productName}} 6 | Comment={{description}} 7 | Exec=/opt/{{name}}/{{name}} 8 | Icon=/opt/{{name}}/icon.png 9 | Terminal=false 10 | Categories=Application; 11 | -------------------------------------------------------------------------------- /help/tr/components/AccountPermActive.md: -------------------------------------------------------------------------------- 1 | Etkin izinler, bu hesaptaki fonları harcamaya izni olan hesapları belirler. 2 | 3 | Etkin izinler kolay bir şekilde çok-imzalı bir düzen kurmak için kullanılabilirler, daha fazla bilgi için [izinler](accounts/permissions) bölümüne bakabilirsiniz. -------------------------------------------------------------------------------- /help/cn/components/DepositWithdraw.md: -------------------------------------------------------------------------------- 1 | [# receive] 2 | ### 获取 BTS 3 | 为了从其他人或者交易所获得BTS,你只需要提供你的账户名: **{account}** 4 | 5 | [# deposit-short] 6 | ### 充值/提现 数字资产 7 | 如果你要充值或提现资产,无论是法币或是来自其他区块链,你需要使用[桥接](introduction/bridges_gateways) 或 [网关](introduction/bridges_gateways) 服务来实现。你可以从下面找到一系列提供服务的服务商: -------------------------------------------------------------------------------- /help/en/components/AccountPermMemo.md: -------------------------------------------------------------------------------- 1 | The memo key is where you receive memos, in order to decode the memos you need to control the private key for the public key. 2 | 3 | By using a public/private key pair without spending authority, you may give read-only access to your memos to third parties. 4 | -------------------------------------------------------------------------------- /help/en/components/AccountVotingCommittee.md: -------------------------------------------------------------------------------- 1 | [Committee members](introduction/committee) may propose changes to the dynamic parameters of the blockchain, such as fees, block time and many other things. It is a position of great responsibility that requires a good understanding of how Bitshares works. -------------------------------------------------------------------------------- /help/en/components/BorrowModal.md: -------------------------------------------------------------------------------- 1 | Update your {debt} margin position by adjusting the debt and collateral levels. 2 | 3 | Collateral and debt levels can be adjusted in any way you desire, as long as your collateral ratio stays above the maintenance collateral ratio of {mr}. [Read more.](dex/shorting) 4 | -------------------------------------------------------------------------------- /help/tr/components/AccountVoting.md: -------------------------------------------------------------------------------- 1 | ### Oy Kullanma 2 | 3 | BitShares'de oy kullanmak ağın hem gelişmesi hem de güvenliği için önemlidir. Eğer dilerseniz oy kullanma hakkınızı sizin için oy kullanabilecek bir vekile devredebilirsiniz. Eğer vekil tayin ederseniz, manuel oylama etkisiz hale getirilecektir. -------------------------------------------------------------------------------- /help/tr/components/AccountVotingCommittee.md: -------------------------------------------------------------------------------- 1 | [Kurul üyeleri](introduction/committee) blok zincirine ait ücretler, blok süreleri ve diğer bir çok şey gibi dinamik parametrelerin değiştirilmesini teklif edebilirler. BitShares'in nasıl işlediğine dair derin bilgi gerektiren büyük bir sorumluluk pozisyonudur. -------------------------------------------------------------------------------- /web/__tests__/wallets/test-wif-import.txt: -------------------------------------------------------------------------------- 1 | "genesis"+"nathan"=abcd5K9KhCCAgNSAJdaoYkZQp8DJaQYjauHUhUB37bbiDi9qMQE3uSY5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3zyxw 2 | "1"=AbcdefG5JdeC9P7Pbd1uGdFVEsJ41EkEnADbbHGq6p1BwFxm6txNBsQnswZyxW 3 | invalid 5JDec9P7Pbd1uGdFVEsJ41EkEnADbbHGq6p1BwFxm6txNBsQnsW 4 | -------------------------------------------------------------------------------- /web/app/actions/BrainkeyActions.js: -------------------------------------------------------------------------------- 1 | import alt from "alt-instance"; 2 | 3 | class BrainkeyActions { 4 | 5 | setBrainkey(brnkey) { 6 | return brnkey; 7 | } 8 | 9 | } 10 | 11 | var BrainkeyActionsWrapped = alt.createActions(BrainkeyActions); 12 | export default BrainkeyActionsWrapped; 13 | -------------------------------------------------------------------------------- /web/app/api/accountApi.js: -------------------------------------------------------------------------------- 1 | import {Apis} from "graphenejs-ws"; 2 | 3 | class Api { 4 | 5 | lookupAccounts(startChar, limit) { 6 | return Apis.instance().db_api().exec("lookup_accounts", [ 7 | startChar, limit 8 | ]); 9 | } 10 | } 11 | 12 | export default new Api(); 13 | -------------------------------------------------------------------------------- /web/app/assets/stylesheets/components/_console.scss: -------------------------------------------------------------------------------- 1 | textarea#console_input { 2 | width: 100%; 3 | color: white; 4 | background-color: black; 5 | border-color: black; 6 | min-height: 35px; 7 | height: 35px 8 | } 9 | 10 | .console_div, code { 11 | margin-right: 10px; 12 | } 13 | -------------------------------------------------------------------------------- /web/app/components/Settings/PasswordSettings.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import WalletChangePassword from "../Wallet/WalletChangePassword"; 3 | 4 | export default class PasswordSettings extends React.Component { 5 | render() { 6 | 7 | return ; 8 | } 9 | }; 10 | -------------------------------------------------------------------------------- /help/tr/components/AccountPermMemo.md: -------------------------------------------------------------------------------- 1 | Memo anahtarı, memoların size ulaştığı yerdir, memoları deşifre edebilmeniz için açık anahtara ait özel anahtarın yönetimine sahip olmanız gerekir. 2 | 3 | Bir açık/özel anahtar çifti kullanarak harcama yetkisi olmadan üçüncü şahıslara memolarınıza salt-okuma erişimi sağlayabilirsiniz. -------------------------------------------------------------------------------- /docs/help.rst: -------------------------------------------------------------------------------- 1 | Help 2 | ==== 3 | 4 | If you have any questions, please contact one of the following people: 5 | 6 | - fabian@bitshares.org 7 | - cass@bitshares.org 8 | - bitsharesblocks@gmail.com 9 | - valentine@cryptonomex.com 10 | 11 | There's also a very active `Telegram chatroom `_ -------------------------------------------------------------------------------- /electron/resources/osx/appdmg.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "{{productName}}", 3 | "icon": "{{dmgIcon}}", 4 | "background": "{{dmgBackground}}", 5 | "icon-size": 128, 6 | "contents": [ 7 | { "x": 410, "y": 220, "type": "link", "path": "/Applications" }, 8 | { "x": 130, "y": 220, "type": "file", "path": "{{appPath}}" } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /web/app/Main.js: -------------------------------------------------------------------------------- 1 | require("./assets/loader"); 2 | if (!window.Intl) { // Safari polyfill 3 | require.ensure(["intl"], require => { 4 | window.Intl = require("intl"); 5 | Intl.__addLocaleData(require("./assets/intl-data/en.json")); 6 | require("index.js"); 7 | }); 8 | } else { 9 | require("index.js"); 10 | } 11 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/help.txt: -------------------------------------------------------------------------------- 1 | Help 2 | ==== 3 | 4 | If you have any questions, please contact one of the following people: 5 | 6 | - fabian@bitshares.org 7 | - cass@bitshares.org 8 | - bitsharesblocks@gmail.com 9 | - valentine@cryptonomex.com 10 | 11 | There's also a very active `Telegram chatroom `_ -------------------------------------------------------------------------------- /web/app/assets/stylesheets/components/_settings.scss: -------------------------------------------------------------------------------- 1 | .settings-menu { 2 | > li { 3 | list-style-type: none; 4 | cursor: pointer; 5 | padding: 5px 0; 6 | &:hover { 7 | background-color: red; 8 | } 9 | 10 | &.active { 11 | color: blue; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /help/tr/components/AccountVotingWitnesses.md: -------------------------------------------------------------------------------- 1 | [Taniklar](introduction/witness) Bitshares'in blok üreticileridirler. İşlemlerin geçerliliklerini teyit eder ve ağın güvenliğini sağlarlar. Dilediğiniz kadar tanığa oy verebilirsiniz, hepsi aynı miktarda alır. Tanık tekliflerini buradan takip edebilirsiniz: [Bitsharestalk](https://bitsharestalk.org/index.php/board,61.0.html). -------------------------------------------------------------------------------- /web/app/Main-dev.js: -------------------------------------------------------------------------------- 1 | require("./assets/loader-dev"); 2 | if (!window.Intl) { // Safari polyfill 3 | require.ensure(["intl"], require => { 4 | window.Intl = require("intl"); 5 | Intl.__addLocaleData(require("./assets/intl-data/en.json")); 6 | require("index-dev.js"); 7 | }); 8 | } else { 9 | require("index-dev.js"); 10 | } 11 | -------------------------------------------------------------------------------- /web/__tests__/components/Utility/FormattedAsset-test.jsx: -------------------------------------------------------------------------------- 1 | import React from "react/addons"; 2 | var TestUtils = React.addons.TestUtils; 3 | jest.dontMock("../../../app/components/Utility/FormattedAsset.jsx"); 4 | 5 | describe("", function() { 6 | var FormattedAsset = require("../../../app/components/Utility/FormattedAsset.jsx"); 7 | 8 | }); 9 | 10 | -------------------------------------------------------------------------------- /web/app/components/Exchange/highcharts-plugins/indicators.css: -------------------------------------------------------------------------------- 1 | .chart-title { background-color: #3d3d3d; color: #fff; width: 1169px; padding: 10px; float: left; } 2 | .chart-subtitle { line-height: 1.7em; font-size: 0.8em; padding-right: 10px; color: rgba(255,0,0,0.8); float: right; } 3 | .chart-href, .chart-href a { float: right; color: red; text-decoration: none} 4 | -------------------------------------------------------------------------------- /help/tr/components/BorrowModal.md: -------------------------------------------------------------------------------- 1 | Bu ileti arzu ettiğiniz borç ve teminatı belirlemenizi sağlar. 2 | 3 | Eğer {debt} borç azaltılırsa {borrower} hesabından düşürülecektir. 4 | Eğer {debt} borç artarsa yeterli {collateral} teminat bulunması kaydıyla {borrower} hesabına yatırılacaktır. 5 | 6 | Asgari idame teminatı muhafaza edildiği sürece teminat eklenebilir yada eksiltilebilir. -------------------------------------------------------------------------------- /web/app/components/Explorer/witnesses.scss: -------------------------------------------------------------------------------- 1 | .active-witness { 2 | > td { 3 | background-color: rgba(80, 210, 194, 0.4); 4 | transition: background-color 0.6s ease; 5 | } 6 | } 7 | 8 | .clickable { 9 | cursor: pointer; 10 | user-select: none; 11 | } 12 | 13 | .view-switcher { 14 | padding-top: 1rem; 15 | text-align: right; 16 | } 17 | -------------------------------------------------------------------------------- /help/cn/introduction/wallets.md: -------------------------------------------------------------------------------- 1 | # 钱包软件 2 | 3 | 你或许已经注意到,本应用是一个基于web的应用软件,在浏览器中运行。通过与一个受信任的节点连接来获得整个生态系统的接入。 4 | 5 | ## 钱包安全性 6 | 7 | 你可以确信的是我们的服务器永远不会也不能访问你的资产。你的私钥不会离开你的本地浏览器。它们使用你的密码进行加密后保存在本地浏览器的数据库中。因此,你只需要确保你已经[备份](../introduction/backups.md)了钱包,就不用担心由于计算机失灵或者浏览器奔溃导致钱包数据丢失。 8 | 9 | ## 钱包管理 10 | 11 | 钱包系统的用户界面允许你使用多个独立的钱包,每个钱包可能包含相互独立的账户和资金。你可以通过`设置->钱包`菜单进行创建、备份和切换钱包的操作。 -------------------------------------------------------------------------------- /help/en/components/AccountVotingWitnesses.md: -------------------------------------------------------------------------------- 1 | [Witnesses](introduction/witness) are the block producers of Bitshares. They validate transactions and ensure the safety of the network. You may vote for as many witnesses as you'd like, and they will all receive the same amount of votes. Witness proposals can be found here: [Bitsharestalk](https://bitsharestalk.org/index.php/board,61.0.html). -------------------------------------------------------------------------------- /electron/tasks/release.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var gulp = require('gulp'); 4 | var utils = require('./utils'); 5 | 6 | var releaseForOs = { 7 | osx: require('./release_osx'), 8 | linux: require('./release_linux'), 9 | windows: require('./release_windows'), 10 | }; 11 | 12 | gulp.task('release', [], function () { 13 | return releaseForOs[utils.os()](); 14 | }); 15 | -------------------------------------------------------------------------------- /help/tr/components/AccountVotingWorkers.md: -------------------------------------------------------------------------------- 1 | [İşçiler](introduction/workers) BitShares'e özgü bir kavramdır. İşçiler, blok zincirinin kendisinden aldıkları maaş karşılığında hizmet sağlayan tekliflerdir. Teklifin amacını açıklayan bir web veya forum bağlantısı teklifin içine dahil edilmelidir, teklifleri burada görebilirsiniz : [Bitsharestalk](https://bitsharestalk.org/index.php/board,103.0.html). -------------------------------------------------------------------------------- /web/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webgui", 3 | "version": "0.0.1", 4 | "homepage": "https://github.com/cryptonomex/graphene_ui", 5 | "authors": [ 6 | "Cryptonomex, Inc." 7 | ], 8 | "description": "gui powered by react and graphene", 9 | "ignore": [ 10 | "**/.*", 11 | "node_modules", 12 | "bower_components" 13 | ], 14 | "dependencies": { 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /help/tr/introduction/committee.md: -------------------------------------------------------------------------------- 1 | #Kurul 2 | 3 | Kurul, hissedarlar tarafından onaylanan kişilerden oluşan ve bazı ticari 4 | parametreleri belirleyen bir gruptur. Bu parametrelerden bazıları şunlardır : 5 | 6 | * işlem ve alım-satım ücretleri 7 | * blok büyüklüğü ve blok aralıkları gibi blokzinciri parametreleri 8 | * nakit iade oranları ve vesting periodları gibi parametreleri 9 | gibi. -------------------------------------------------------------------------------- /help/en/introduction/committee.md: -------------------------------------------------------------------------------- 1 | # Committee 2 | 3 | The committee is a set of entities that are approved by the shareholders and 4 | define some business parameters. Among these parameters are 5 | 6 | * transaction and trading fees 7 | * blockchain parameters, such as block size, block interval, etc., and 8 | * referral and vesting parameters such as cash back percentage and vesting 9 | periods. 10 | -------------------------------------------------------------------------------- /help/en/components/AccountVotingWorkers.md: -------------------------------------------------------------------------------- 1 | [Workers](introduction/workers) are a unique concept to Bitshares. They are proposals to provide services in return for a salary from the blockchain itself. A proposal should include a link to a website or forum thread that explains the purpose of the proposal, a collection of proposals can be found here: [Bitsharestalk](https://bitsharestalk.org/index.php/board,103.0.html). -------------------------------------------------------------------------------- /help/tr/components/AccountAssetCreate.md: -------------------------------------------------------------------------------- 1 | Bir aktif yaratmak için şunlar gerekli : 2 | * Geçerli bir varlık sembolü 3 | * 0 (sıfır)dan büyük maksimum arz 4 | 5 | Hassasiyet , varlığın destekleyeceği ondalık hane sayısını belirler. 6 | 7 | Varlık yaratmanın masraf ücreti öncelikle varlığa ait sembolün uzunluğuna bağlıdır. 8 | 9 | Ücretlerin nekadarını tutacağınızı da piyasa ücreti ile yüzde olarak belirtebilirsiniz. -------------------------------------------------------------------------------- /help/en/components/AccountVoting.md: -------------------------------------------------------------------------------- 1 | ### Voting 2 | 3 | Voting in Bitshares is important for both the security and the development of the network. If you prefer, you may delegate your voting power to a Proxy, who can then vote on your behalf. If you do choose to use a Proxy, manual voting will be disabled. 4 | 5 | Voting changes will only be applied once you click on 'Publish changes' and broadcast your changes to the network. 6 | -------------------------------------------------------------------------------- /web/app/assets/loader-dev.js: -------------------------------------------------------------------------------- 1 | require("./stylesheets/app.scss"); 2 | require("file-loader?name=index.html!./index-dev.html"); 3 | require("file-loader?name=favicon.ico!./favicon.ico"); 4 | require("file-loader?name=dictionary.json!common/dictionary_en.json"); 5 | require("babel-polyfill"); 6 | require("whatwg-fetch"); 7 | require("indexeddbshim"); 8 | require("./asset-symbols/symbols.js"); 9 | require("./locales/locales.js"); 10 | -------------------------------------------------------------------------------- /electron/build/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BitShares-light", 3 | "productName": "BitShares2-light", 4 | "identifier": "org.bitshares.graphene", 5 | "description": "BitShares - cryptocurrency and decentralized exchange", 6 | "version": "2.0.160813", 7 | "author": "community@bitshares.org", 8 | "main": "electron.js", 9 | "config": { 10 | "target": "development" 11 | }, 12 | "dependencies": { 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /web/lib/chain/account_constants.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | account_listing: { 3 | no_listing: 0x0, ///< No opinion is specified about this account 4 | white_listed: 0x1, ///< This account is whitelisted, but not blacklisted 5 | black_listed: 0x2, ///< This account is blacklisted, but not whitelisted 6 | white_and_black_listed: 0x1 | 0x2 ///< This account is both whitelisted and blacklisted 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /web/__tests__/jest-preprocessor.js: -------------------------------------------------------------------------------- 1 | var coffee = require('coffee-script'); 2 | var babel_jest = require('babel-jest'); 3 | 4 | module.exports = { 5 | process: function(src, path) { 6 | src = babel_jest.process(src, path) 7 | // CoffeeScript files can be .coffee, .litcoffee, or .coffee.md 8 | if (coffee.helpers.isCoffee(path)) { 9 | return coffee.compile(src, {'bare': true}); 10 | } 11 | return src; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /web/app/actions/CachedPropertyActions.js: -------------------------------------------------------------------------------- 1 | import alt from "alt-instance"; 2 | 3 | class CachedPropertyActions { 4 | 5 | set(name, value) { 6 | return { name, value }; 7 | } 8 | 9 | get(name) { 10 | return { name }; 11 | } 12 | 13 | reset() { 14 | return true; 15 | } 16 | } 17 | 18 | var CachedPropertyActionsWrapped = alt.createActions(CachedPropertyActions); 19 | export default CachedPropertyActionsWrapped; 20 | -------------------------------------------------------------------------------- /web/app/assets/locales/locales.js: -------------------------------------------------------------------------------- 1 | require("file-loader?name=[name].[ext]!./locale-cn.json"); 2 | require("file-loader?name=[name].[ext]!./locale-de.json"); 3 | require("file-loader?name=[name].[ext]!./locale-en.json"); 4 | require("file-loader?name=[name].[ext]!./locale-es.json"); 5 | require("file-loader?name=[name].[ext]!./locale-fr.json"); 6 | require("file-loader?name=[name].[ext]!./locale-ko.json"); 7 | require("file-loader?name=[name].[ext]!./locale-tr.json"); 8 | -------------------------------------------------------------------------------- /help/cn/introduction/workers.md: -------------------------------------------------------------------------------- 1 | # 预算项目 2 | 3 | 预算项目期望通过提供服务来从区块链获得奖金的工作项目提案。一项提案包含至少以下信息: 4 | 5 | * 开始和结束时间 6 | * 每日支付预算 7 | * 预算上限 8 | 9 | 它还应该包含一个指向网页或论坛帖子的链接,以详细介绍工作项目内容。 10 | 11 | 针对预算项目,投票人可以选择支持或者反对。 12 | 13 | ## 预算项目支付机制 14 | 15 | 预算项目每天收到的金额来自一个金额固定的每日预算池,根据票数多寡排序进行分配,知道每日预算池中资金耗尽。举一个例子: 16 | 17 | * 每日预算池总额为400K BTS 18 | * 有5个预算项目符合条件(支持票多余反对票),他们都要求每天获得100K BTS的预算支持。 19 | 20 | 那么得票较多的4个项目将每天获得100K BTS的支付,但是由于付完这4各项目,每日预算池中已无资金剩余,那么第五个项目受付金额则为0。 21 | -------------------------------------------------------------------------------- /web/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["es2015", { "modules": false }], 4 | "stage-0", 5 | "react" 6 | ], 7 | "plugins": [ 8 | "react-hot-loader/babel" 9 | ], 10 | "env": { 11 | "test": { 12 | "presets": ["es2015", "stage-0","react"], 13 | "plugins": [ 14 | [ "babel-plugin-webpack-alias", { "config": "./conf/webpack.config.js" } ] 15 | ] 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /web/app/assets/loader.js: -------------------------------------------------------------------------------- 1 | require("./stylesheets/app.scss"); 2 | require("file-loader?name=index.html!./" + ((__ELECTRON__ || __HASH_HISTORY__) ? "index-electron" : "index") + ".html"); 3 | require("file-loader?name=favicon.ico!./favicon.ico"); 4 | require("file-loader?name=dictionary.json!common/dictionary_en.json"); 5 | require("babel-polyfill"); 6 | require("whatwg-fetch"); 7 | require("indexeddbshim"); 8 | require("./asset-symbols/symbols.js"); 9 | require("./locales/locales.js"); 10 | -------------------------------------------------------------------------------- /web/app/assets/stylesheets/components/_footer.scss: -------------------------------------------------------------------------------- 1 | .footer { 2 | background-color: #777; 3 | height: 36px; 4 | line-height: 36px; 5 | vertical-align: middle; 6 | color: #fff; 7 | padding-left: 1.75rem; 8 | padding-right: 1.75rem; 9 | a { 10 | text-decoration: underline; 11 | } 12 | 13 | .logo { 14 | font-size: 1.1rem; 15 | line-height: 2rem; 16 | .version { 17 | font-size: 75%; 18 | vertical-align: baseline; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /web/app/assets/stylesheets/components/_dashboard.scss: -------------------------------------------------------------------------------- 1 | div.fm-container { 2 | padding: 0.5rem; 3 | min-width: 13rem; 4 | &:hover { 5 | background-color: #D8D8D8; 6 | cursor: pointer; 7 | } 8 | 9 | .fm-title, .fm-volume, .fm-change { 10 | font-size: 0.85rem; 11 | } 12 | 13 | .fm-name { 14 | font-weight: bold; 15 | } 16 | 17 | .fm-volume { 18 | padding-top: 8px; 19 | } 20 | 21 | .fm-change { 22 | padding-top: 4px; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /help/cn/introduction/bridges_gateways.md: -------------------------------------------------------------------------------- 1 | ## 桥接及网关服务 2 | 3 | 桥接和网关服务帮助用户进行数字资产的充值和提现活动。但这两种服务模式有些不同。 4 | 5 | ### 桥接: 无需信任的模式 6 | 桥接服务运行用户存入一定数量的BTS以外的数字货币(资产),并获得相应的智能锚定货币(SmartCoin)。锚定货币没有对手方风险。所以这种模式下,用户面对的风险仅在于充值期间一小段时间的风险。这相对于比中心化的交易所的充值方式安全得多,因为中心化交易所总是面临各种黑客攻击或者其他管理漏洞而导致丢币的风险。 7 | 8 | ### 网关: 需要信任的模式 9 | 网关模式下基本上就和传统的交易所运作模式相似,依赖于交易所的偿付能力。网关发行资产,一般以网关品牌作为前缀,比如OPEN,TRADE或是META。这些资产由用户存入网关的对真实应资产背书,比如BTC,ETH等。 10 | 11 | OPEN.BTC理论上和你充值到一般中心化交易所,比如Poloniex的BTC一样,可以记作POLO.BTC。你都将依赖网关对你的数字资产进行兑付。 -------------------------------------------------------------------------------- /web/app/components/Icon/thumb-tack.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /help/en/components/AccountAssetCreate.md: -------------------------------------------------------------------------------- 1 | [# permissions] 2 | Permissions define the available features for an asset. However, even if a feature is permitted, it must still be activated using the corresponding flag in order to be enforced by the blockchain. 3 | 4 | After creation, you may only remove a given permission, you cannot enable a permission that was disabled on creation. 5 | 6 | [# flags] 7 | Flags define which asset features are active or inactive. They can be switched on and off by the asset owner at any time. -------------------------------------------------------------------------------- /help/cn/introduction/blockchain.md: -------------------------------------------------------------------------------- 1 | # 区块链 2 | 3 | 与大多数数字货币类似,Graphene (石墨烯) 使用区块链来记录参与者的转账信息及市场行为。由于每个区块总是指向前一个区块,我们获得一个区块链条包含了所有在网络上发生的交易信息。区块链是一个公开的,可审计的账簿,每个人都能够查看详细数据,并验证交易、市场订单和买卖盘数据。 4 | 5 | 当然,本钱包软件内置了一个区块链浏览工具,帮助你进行数据查看和审验。 6 | 7 | ## 共识机制 8 | 9 | 由谁在什么时间来*打包生成*区块是由被称为*Delegated Proof of Stak (DPOS)*的共识算法决定的。算法的本质是 BitShares 的股东(BTS的持有者)能通过投票来决定他们期望的块打包者。由获得最多票数的所谓"见证人"来打包生成区块。 10 | 11 | ## 交易 12 | 13 | Graphene (石墨烯) 区块链技术提供了多种交易类型。用户不仅可以相互进行简单的资产转账,还能与去中心化交易所进行交互。大多数交易类型可通过字面意思理解,其他的则要求对系统的内部运作机制有较深的理解。 -------------------------------------------------------------------------------- /help/cn/assets/mpa.md: -------------------------------------------------------------------------------- 1 | # 市场锚定资产 2 | 3 | 一种加密数字货币,拥有类似比特币的属性和优点,同时能保持价格与对应的全球接受的货币同步(比如美元)。具有很强的便利性和实用性,对管制免疫。BitShares的市场锚定资产(MPA)可以实现这样的目的。市场锚定资产是一种新型的可自由交易的数字资产,通过差价合约(CFD)机制,它的价值能够追踪传统的对应资产的价值。 4 | 5 | *SmartCoin* (市场锚定资产的另一种叫法)是一种数字货币,它的价值*总是*有100%或更多价值的比特股核心货币(BTS)来支撑。这些BTS在差价合约(CFD)中,作为抵押物存在,并在任何时间可被赎回。 6 | 7 | 市场锚定资产与众不同的一个特点在于,尽管它使用了有抵押的价差合约,它却能免于对手盘风险。这是由网络本身(软件协议)通过确保抵押充足,并在特定情况下进行强制清算的机制来实现的。 8 | 9 | 以下是部分已经可用的市场锚定资产 10 | * BitUSD (比特美元) 11 | * BitCNY (比特人民币) 12 | * BitEUR (比特欧元) 13 | * BitGOLD (比特黄金) 14 | * ... 15 | -------------------------------------------------------------------------------- /docs/getting_started.rst: -------------------------------------------------------------------------------- 1 | Getting Started 2 | =============== 3 | 4 | Getting started with Graphene UI is easy, and these docs will tell you how. First of all, you will need to clone the github repository to your local computer. This is accomplished by opening a terminal and entering:: 5 | 6 | git clone https://github.com/cryptonomex/graphene-ui.git 7 | 8 | This will clone the repo into a folder ``./graphene-ui`` on your computer. If you plan on contributing code, you should fork the repo on github and clone your own fork instead. More 9 | 10 | -------------------------------------------------------------------------------- /help/cn/introduction/backups.md: -------------------------------------------------------------------------------- 1 | # 备份 2 | 3 | 我们建议你经常备份你的钱包,尽管在绝大多数情况下备份一次已经足够。需要注意的是,从备份中恢复钱包数据时,由于*备份是加密保存*的,你需要提供创建钱包时使用的密码进行解密才能恢复。所以,如果你丢失了钱包文件或者忘记了你的密码,你将无法访问钱包中的资金! 4 | 5 | 备份功能可以通过钱包管理界面进行操作(`设置->钱包`)。 6 | 7 | ## 钱包导出 8 | 9 | 最便捷的备份方式是通过钱包管理界面提供的操作按钮进行钱包导出。请妥善保存你的备份文件,防止遗失、被盗或自然灾害。 10 | 11 | ## 脑钱包密钥 (仅高级用户适用) 12 | 13 | 如果你从未手动导入过账户私钥进入过你的钱包,那么你还可以选择通过导出*脑钱包密钥*进行备份。脑钱包密钥是一长串由单词组成的字符串,通过它钱包软件可进行确定性重算恢复你的账户私钥。 14 | 15 | ## 多层级职权实体 (仅高级用户适用) 16 | 17 | 如果你使用了多层级职权实体功能(设置了账户权限/活跃权限),那么只是备份你自己的钱包是不够的。还需要相关的被授权的职权实体的密钥也被安全备份。请阅读关于多层级职权实体的更多内容。 18 | -------------------------------------------------------------------------------- /web/app/stores/BaseStore.js: -------------------------------------------------------------------------------- 1 | class BaseStore { 2 | constructor() { 3 | } 4 | 5 | _export(...methods) { 6 | let publicMethods = {}; 7 | methods.forEach((method) => { 8 | if(!this[method]) throw new Error(`BaseStore._export: method '${method}' not found in ${this.__proto__._storeName}`); 9 | this[method] = this[method].bind(this); 10 | publicMethods[method] = this[method]; 11 | }); 12 | this.exportPublicMethods(publicMethods); 13 | } 14 | } 15 | 16 | export default BaseStore; 17 | -------------------------------------------------------------------------------- /web/app/actions/BalanceClaimActiveActions.js: -------------------------------------------------------------------------------- 1 | import alt from "alt-instance"; 2 | 3 | class BalanceClaimActiveActions { 4 | 5 | setPubkeys(pubkeys) { 6 | return pubkeys; 7 | } 8 | 9 | setSelectedBalanceClaims(selected_balances) { 10 | return selected_balances; 11 | } 12 | 13 | claimAccountChange(claim_account_name) { 14 | return claim_account_name; 15 | } 16 | 17 | } 18 | 19 | const BalanceClaimActiveActionsWrapped = alt.createActions(BalanceClaimActiveActions); 20 | export default BalanceClaimActiveActionsWrapped; 21 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/getting_started.txt: -------------------------------------------------------------------------------- 1 | Getting Started 2 | =============== 3 | 4 | Getting started with Graphene UI is very simple, and here you will find out how. First of all, you will need to clone the github repository to your local computer. This is accomplished by opening a terminal and entering:: 5 | 6 | git clone https://github.com/cryptonomex/graphene-ui.git 7 | 8 | This will clone the repo into a folder ``./graphene-ui`` on your computer. If you plan on contributing code, you should fork the repo on github and clone your own fork instead. More 9 | 10 | -------------------------------------------------------------------------------- /web/lib/workers/AddressIndexWorker.js: -------------------------------------------------------------------------------- 1 | import {key} from "graphenejs-lib/es"; 2 | 3 | onmessage = function(event) { 4 | try { 5 | console.log("AddressIndexWorker start"); 6 | var {pubkeys, address_prefix} = event.data 7 | var results = [] 8 | for (let pubkey of pubkeys) { 9 | results.push( key.addresses(pubkey, address_prefix) ) 10 | } 11 | postMessage( results ) 12 | console.log("AddressIndexWorker done"); 13 | } catch( e ) { 14 | console.error("AddressIndexWorker", e) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /web/app/assets/stylesheets/utils/_utils.scss: -------------------------------------------------------------------------------- 1 | @mixin color($font-color, $bg-color, $is_imp: false) { 2 | @if $is_imp == false { 3 | color: $font-color; 4 | background-color: $bg-color; 5 | } @else { 6 | color: $font-color !important; 7 | background-color: $bg-color !important; 8 | } 9 | } 10 | 11 | //buttons 12 | @mixin button-focus($color, $bg-color, $number) { 13 | color: lighten($color, $number); 14 | background-color: lighten($bg-color, $number); 15 | //not good in dark theme 16 | //border-color: lighten($color, $number); 17 | } 18 | -------------------------------------------------------------------------------- /help/en/accounts/general.md: -------------------------------------------------------------------------------- 1 | # Accounts 2 | 3 | As you may have already noticed by now, this blockchain technology requires you 4 | to register an account name. This comes with many advantages: Besides improved 5 | scalability, we have separated the identity from the transaction authorizing 6 | signature. In practice, *owning an account name* is independent from being able 7 | to *spend its funds*. Furthermore, both rights (we call them *permissions*) can 8 | split among an arbitrary complex relation of people (we call them *authorities*) 9 | using *weights* and a required *thresholds*. 10 | -------------------------------------------------------------------------------- /help/es/accounts/general.md: -------------------------------------------------------------------------------- 1 | # Cuentas 2 | 3 | Como ya se habrá notado, esta tecnología blockchain requiere que usted 4 | registre un nombre de cuenta. Esto trae numerosas ventajas. Además de incrementar 5 | la escalabilidad, hemos separado la identidad de la firma autorizante 6 | de las transacciones. En la práctica, *ser propietario de una cuenta* es independiente de poder 7 | *utilizar sus fondos". Adicionalmente, ambos derechos (que llamamos "permisos") pueden 8 | combinarse en una compleja relación arbitraria entre personas (que llamamos "autoridades") 9 | usando los parámetros *peso* y *humbral*. -------------------------------------------------------------------------------- /help/en/components/DepositWithdraw.md: -------------------------------------------------------------------------------- 1 | [# receive] 2 | ### Receiving BTS 3 | In order to receive BTS from another person or from an exchange, simply give them your account name: **{account}** 4 | 5 | [# deposit-short] 6 | ### Depositing or withdrawing coins 7 | If you want to deposit or withdraw funds, either in fiat or from other blockchains, you may use a [bridge](introduction/bridges_gateways) or [gateway](introduction/bridges_gateways) service to do so. You'll find a selection of service providers in the tabs below. Start by choosing a provider, then pick a service: Bridge, Gateway (or Fiat where available). -------------------------------------------------------------------------------- /bloom_filter/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bitshares-keys-bloom-filter", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "bloom_filter_wallet.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "cat wallet.json | node bloom_filter_wallet.js > filtered_wallet.json", 9 | "start-windows": "type wallet.json | node bloom_filter_wallet.js > filtered_wallet.json" 10 | }, 11 | "author": "", 12 | "license": "ISC", 13 | "devDependencies": { 14 | "coffee-script": "^1.12.2", 15 | "graphenejs-lib": "^0.4.10" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /electron/build/vendor/electron_boilerplate/env_config.js: -------------------------------------------------------------------------------- 1 | // Loads config/env_XXX.json file and puts it 2 | // in proper place for given Electron context. 3 | 4 | 'use strict'; 5 | 6 | (function () { 7 | var fs = require('fs'); 8 | if (typeof window === 'object') { 9 | // Web browser context, __dirname points to folder where app.html file is. 10 | window.env = JSON.parse(fs.readFileSync(__dirname + '/env_config.json')); 11 | } else { 12 | // Node context 13 | module.exports = {} //fs.readFileSync(__dirname + '/../../env_config.json'); 14 | } 15 | }()); 16 | -------------------------------------------------------------------------------- /web/app/components/Blockchain/LinkToAssetById.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import {Link} from "react-router/es"; 3 | import ChainTypes from "../Utility/ChainTypes"; 4 | import BindToChainState from "../Utility/BindToChainState"; 5 | 6 | class LinkToAssetById extends React.Component { 7 | static propTypes = { 8 | asset: ChainTypes.ChainObject.isRequired 9 | } 10 | render() { 11 | let symbol = this.props.asset.get("symbol"); 12 | return {symbol}; 13 | } 14 | } 15 | 16 | export default BindToChainState(LinkToAssetById); 17 | -------------------------------------------------------------------------------- /help/tr/accounts/general.md: -------------------------------------------------------------------------------- 1 | # Hesaplar 2 | 3 | Şu ana kadar farkkettiğiniz gibi, bu blokzinciri teknolojisi bir hesap adı kaydetmenizi 4 | mecbur kılar. Bunun bir çok avantajı vardır : Gelişmiş ölçeklenebilirlik bir yana, 5 | biz bu şekilde , kimlik bilgilerini , işlemleri yetkilendiren imzalardan ayırmış oluyoruz. 6 | Uygulamada , *bir hesap adına sahip olmak* *o hesaba ait fonları* harcayabilmekten 7 | bağımsızdır. Dahası her iki hak da (biz bunlara *izinler* diyoruz) *ağırlıklar* ve 8 | *eşikler* kullanılarak gelişigüzel karmaşık insan ilişkileri (biz bunlara "yetkiler" 9 | diyoruz) arasında paylaştırılabilirler. -------------------------------------------------------------------------------- /web/app/components/Icon/chevron-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /web/app/components/BuySell/BuySell.scss: -------------------------------------------------------------------------------- 1 | .BuySell__inputs { 2 | > div { 3 | padding: 20px; 4 | } 5 | 6 | .inputs__header { 7 | padding-bottom: 20px; 8 | } 9 | 10 | .inputs__input { 11 | position: relative; 12 | > div { 13 | padding-bottom: 5px; 14 | } 15 | 16 | span.inputs__symbol { 17 | position: absolute; 18 | top: 32px; 19 | right: 5px; 20 | } 21 | } 22 | 23 | .BuySell__balance { 24 | color: blue; 25 | text-decoration: underline; 26 | cursor: pointer; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /electron/resources/osx/helper_apps/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleIdentifier 6 | {{identifier}}.helper 7 | CFBundleName 8 | {{productName}} Helper 9 | CFBundlePackageType 10 | APPL 11 | DTSDKName 12 | macosx 13 | LSUIElement 14 | 15 | NSSupportsAutomaticGraphicsSwitching 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /web/app/stores/ImportKeysStore.js: -------------------------------------------------------------------------------- 1 | import alt from "alt-instance"; 2 | import BaseStore from "stores/BaseStore"; 3 | 4 | class ImportKeysStore extends BaseStore { 5 | 6 | constructor() { 7 | super() 8 | this.state = this._getInitialState() 9 | this._export("importing") 10 | } 11 | 12 | _getInitialState() { 13 | return { importing: false } 14 | } 15 | 16 | importing(importing) { 17 | this.setState({ importing }) 18 | } 19 | 20 | } 21 | 22 | export var ImportKeysStoreWrapped = alt.createStore(ImportKeysStore, "ImportKeysStore") 23 | export default ImportKeysStoreWrapped 24 | -------------------------------------------------------------------------------- /electron/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "asar": "^0.12.4", 4 | "babel-eslint": "^7.1.1", 5 | "electron": "^1.4.14", 6 | "fs-jetpack": "^0.10.5", 7 | "gulp": "^3.9.0", 8 | "gulp-less": "^3.0.3", 9 | "gulp-util": "^3.0.6", 10 | "q": "^1.4.1", 11 | "tree-kill": "^1.1.0", 12 | "yargs": "^6.6.0" 13 | }, 14 | "optionalDependencies": { 15 | "appdmg": "^0.4.5", 16 | "rcedit": "^0.7.0" 17 | }, 18 | "scripts": { 19 | "release": "./node_modules/.bin/gulp release --env=production", 20 | "postrelease": "node ./tasks/write_digest", 21 | "start": "node ./tasks/start" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /help/en/assets/privbitassets.md: -------------------------------------------------------------------------------- 1 | Privatized BitAssets 2 | ==================== 3 | 4 | Privatized BitAssets serve those customers that would like to issue a market 5 | pegged asset but do not want the witnesses to publish the prices. Instead, when 6 | creating a *privatized* bitasset, the issuer can define a set of authorities that 7 | are allowed to publish the price for that particular asset. The issuer can 8 | further define all kinds of fees involving this asset and make a profit. 9 | 10 | This feature is of particular interest for exchanges and institutes that have 11 | access to real-time prices and would like to increase exposure and volume. 12 | -------------------------------------------------------------------------------- /web/app/assets/stylesheets/components/_all.scss: -------------------------------------------------------------------------------- 1 | @import "account"; 2 | @import "blocktrades"; 3 | @import "cards"; 4 | @import "console"; 5 | @import "existing_accounts"; 6 | @import "footer"; 7 | @import "forms"; 8 | @import "header"; 9 | @import "loading-indicator"; 10 | @import "pagination"; 11 | @import "tables"; 12 | @import "wallet"; 13 | @import "chatbox"; 14 | @import "dashboard"; 15 | @import "settings"; 16 | 17 | .lifetime { 18 | background: url("../fresh-bolt2.png") no-repeat 100% 50%; 19 | background-size: auto 80%; 20 | padding-right: 0.75rem; 21 | } 22 | 23 | .bottom-border { 24 | border-bottom: 1px solid #444; 25 | } 26 | -------------------------------------------------------------------------------- /web/lib/workers/GenesisFilterWorker.js: -------------------------------------------------------------------------------- 1 | 2 | var GenesisFilter = require( "chain/GenesisFilter" ) 3 | 4 | onmessage = function(event) { try { 5 | console.log("GenesisFilterWorker start"); 6 | var { account_keys, bloom_filter } = event.data 7 | var genesis_filter = new GenesisFilter( bloom_filter ) 8 | genesis_filter.filter( account_keys, status => { 9 | if( status.success ) { 10 | postMessage({ account_keys, status }) 11 | console.log("GenesisFilterWorker done") 12 | return 13 | } 14 | postMessage({ status }) 15 | }) 16 | } catch( e ) { console.error("GenesisFilterWorker", e) } } -------------------------------------------------------------------------------- /electron/tasks/start.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var Q = require('q'); 4 | var electron = require('electron'); 5 | var pathUtil = require('path'); 6 | var childProcess = require('child_process'); 7 | var kill = require('tree-kill'); 8 | var utils = require('./utils'); 9 | var watch; 10 | 11 | var gulpPath = pathUtil.resolve('./node_modules/.bin/gulp'); 12 | if (process.platform === 'win32') { 13 | gulpPath += '.cmd'; 14 | } 15 | 16 | var runApp = function () { 17 | var app = childProcess.spawn(electron, ['./build'], { 18 | stdio: 'inherit' 19 | }); 20 | 21 | app.on('close', function (code) { 22 | }); 23 | }; 24 | 25 | runApp(); 26 | -------------------------------------------------------------------------------- /web/app/components/Blockchain/FeesContainer.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import SettingsStore from "stores/SettingsStore"; 3 | import AltContainer from "alt-container"; 4 | import Fees from "./Fees"; 5 | 6 | class FeesContainer extends React.Component { 7 | 8 | render() { 9 | return ( 10 | 15 | 16 | 17 | ); 18 | } 19 | } 20 | 21 | export default FeesContainer; 22 | -------------------------------------------------------------------------------- /web/lib/workers/AesWorker.js: -------------------------------------------------------------------------------- 1 | require("babel-polyfill"); 2 | import {Aes} from "graphenejs-lib/es"; 3 | 4 | onmessage = function(event) { try { 5 | console.log("AesWorker start"); 6 | var {private_plainhex_array, iv, key} = event.data; 7 | var aes = new Aes(iv, key); 8 | var private_cipherhex_array = []; 9 | for(let private_plainhex of private_plainhex_array) { 10 | var private_cipherhex = aes.encryptHex( private_plainhex ); 11 | private_cipherhex_array.push( private_cipherhex ); 12 | } 13 | postMessage( private_cipherhex_array ); 14 | console.log("AesWorker done"); 15 | } catch( e ) { console.error("AesWorker", e); } }; 16 | -------------------------------------------------------------------------------- /help/tr/assets/privbitassets.md: -------------------------------------------------------------------------------- 1 | Özelleştirilmiş BitAktifler (Privatized BitAssets) 2 | ==================== 3 | 4 | Özelleştirilmiş BitAktifler piyasa-sabitli-aktif çıkarmak isteyen fakat 5 | fiyatların tanıklar tarafından duyurulmasını istemeyen müşterilere hitab eder. Onun 6 | yerine, süren kimse *özelleştirilmiş* bitaktif yaratırken o aktif için özel olarak 7 | fiyatlarını duyurmaya müsadesi olan bir takım yetkililer belirleyebilir. Süren kimse 8 | aktifle ilgili başka her türlü ücreti belirleyebilir ve kar elde edebilir. 9 | 10 | Bu özellik gerçek-zamanlı fiyatlara erişimi olan ve teşhir ve hacim arttırmak isteyen 11 | borsalar ve kuruluşlar için ayrıca ilgi çekicidir. -------------------------------------------------------------------------------- /web/app/components/Icon/clock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /web/app/components/Transfer/transfer.scss: -------------------------------------------------------------------------------- 1 | ol.prog-tracker { 2 | margin: 0; 3 | padding: 0; 4 | li { 5 | display: inline-block; 6 | text-align: center; 7 | line-height: 2rem; 8 | padding-left: 0.75rem; 9 | padding-right: 0.75rem; 10 | } 11 | } 12 | 13 | ol.prog-tracker li.prog-tracker-done, ol.prog-tracker li.prog-tracker-current { 14 | color: black; 15 | border-bottom: 4px solid yellowgreen; 16 | } 17 | ol.prog-tracker li.prog-tracker-todo { 18 | color: silver; 19 | border-bottom: 4px solid silver; 20 | } 21 | 22 | .prog-tracker-current { 23 | font-weight: bold; 24 | } 25 | 26 | .prog-tracker-todo { 27 | color: #8B8B8B; 28 | } 29 | 30 | -------------------------------------------------------------------------------- /help/cn/introduction/bitshares.md: -------------------------------------------------------------------------------- 1 | # BitShares (比特股) 2 | 3 | Graphene (石墨烯) 旨在实现一种*区块链技术*或*协议*。然而,与具体的区块链整合后,比如 BitShares (比特股),它逐渐进化为一种生态系统。 4 | 5 | BitShares 不断寻求拓展区块链应用技术创新,为所有通过互联网提供服务的行业提供基础支持。无论是银行、证券交易、博彩、投票、音乐、拍卖或其他很多行业,一个数字公共账簿使得分布式自治公司(简称DACs)的创建相对于传统的中心化的方式成本更低,从而带来更佳的服务质量。 6 | 7 | 分布式自治公司的出现引领了一种崭新的公司组织结构的变革,公司不再需要"人类"的管理,并在一系列不可腐化的业务规则下运行。 8 | 9 | 这些运营规则编码入公开可审计的开源软件系统中,分布运行于公司股东用户的电脑中,从而保证公司的运作不受独断控制。 10 | 11 | BitShares 为商业而生,如同 Bitcoin 为货币而生。两者皆采用分布式共识机制来创建与生俱来的具有全球性、透明性、可信赖的、更高效的系统,更重要的是能为企业带来更多利润。 12 | 13 | ## 钱包软件 14 | 15 | 通过在浏览器中运行本钱包软件,你可以使用 BitShares 网络提供的各种服务和功能,包括但不限于 16 | [比特资产](../assets/mpa.md),[用户发行资产](../assets/uia.md) 和 17 | [去中心化交易所](../dex/introduction.md). 18 | -------------------------------------------------------------------------------- /web/app/components/Blockchain/LinkToWitnessById.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ChainTypes from "../Utility/ChainTypes"; 3 | import BindToChainState from "../Utility/BindToChainState"; 4 | import LinkToAccountById from "./LinkToAccountById"; 5 | 6 | class LinkToWitnessById extends React.Component { 7 | static propTypes = { 8 | witness: ChainTypes.ChainObject.isRequired 9 | } 10 | 11 | render() { 12 | let witness_account = this.props.witness.get("witness_account"); 13 | return ; 14 | } 15 | } 16 | LinkToWitnessById = BindToChainState(LinkToWitnessById); 17 | 18 | export default LinkToWitnessById; 19 | -------------------------------------------------------------------------------- /help/en/components/Fees.md: -------------------------------------------------------------------------------- 1 | # Fees 2 | 3 | In the BitShares ecosystem every operation is assigned an *individual* fee. 4 | These fees are subject to change. However, they are defined solely by 5 | shareholder approval, thus each and every shareholder of the BitShares core 6 | asset (BTS) has a say as to what the fees should be. If shareholders can be 7 | convinced to reduce a certain fee and consensus is reached, the fee will be 8 | reduced automatically by the blockchain. Changes of blockchain parameters are 9 | proposed by members of the committee. These members are voted by shareholders 10 | and improve the flexibility and reaction rate. 11 | 12 | \*: These operations require Lifetime membership! 13 | -------------------------------------------------------------------------------- /help/cn/toc.md: -------------------------------------------------------------------------------- 1 | #### 目录 2 | 3 | * [介绍](index.md) 4 | * [词汇表](glossary.md) 5 | * [BitShares比特股](introduction/bitshares.md) 6 | * [钱包](introduction/wallets.md) 7 | * [备份](introduction/backups.md) 8 | * [区块链](introduction/blockchain.md) 9 | * [见证人](introduction/witness.md) 10 | * [预算项目](introduction/witness.md) 11 | * [理事会成员](introduction/committee.md) 12 | * [账户](accounts/general.md) 13 | * [权限](accounts/permissions.md) 14 | * [会员等级](accounts/membership.md) 15 | * [市场锚定资产](assets/mpa.md) (BitUSD, BitEUR, BitGOLD, Bit\*,...) 16 | * [用户发行资产](assets/uia.md) 17 | * [私有比特资产](assets/privbitassets.md) 18 | * [去中心化交易所](dex/introduction.md) 19 | * [交易](dex/trading.md) 20 | * [卖空比特资产](dex/shorting.md) 21 | -------------------------------------------------------------------------------- /web/lib/common/formPost.js: -------------------------------------------------------------------------------- 1 | module.exports = 2 | { 3 | SerializeToQuery:function(obj) 4 | { 5 | var str = []; 6 | for( var p in obj) 7 | if (obj.hasOwnProperty(p)) 8 | { 9 | str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); 10 | } 11 | return str.join("&"); 12 | }, 13 | PostForm:function(endPoint, jsonObject) 14 | { 15 | return fetch( endPoint, 16 | { 17 | method:'post', 18 | headers: new Headers( { "Accept": "application/json", "Content-Type":"application/x-www-form-urlencoded" } ), 19 | body: this.SerializeToQuery(jsonObject) 20 | }); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /electron/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "parser": "babel-eslint", 3 | "env": { 4 | "browser": true, 5 | "node": true, 6 | "es6": true 7 | }, 8 | "parserOptions": { 9 | "ecmaFeatures": { 10 | "blockBindings": true, 11 | "forOf": true 12 | } 13 | }, 14 | "rules": { 15 | "no-unused-vars": ["error", { "vars": "all", "args": "after-used" }], 16 | "comma-dangle": 0, 17 | "indent": [2,4], 18 | "quotes": [2, "double", "avoid-escape"], 19 | "semi": [2, "always"], 20 | "camelcase": [0], 21 | "no-console": [0], 22 | "object-curly-spacing": [0], 23 | "react/prop-types": [0] 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /trollbox/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "trollbox", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "trollbox.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "nodemon --delay 5 trollbox.js ", 9 | "forever": "forever --minUptime 600000 --spinSleepTime 10 -e error.log trollbox.js 2>&1 | logrotate-stream trollbox.log --keep 3 --size '50m' --compress &" 10 | }, 11 | "author": "Sigve Kvalsvik ", 12 | "license": "ISC", 13 | "dependencies": { 14 | "peer": "git+https://github.com/svk31/peerjs-server" 15 | }, 16 | "devDependencies": { 17 | "logrotate-stream": "^0.2.5", 18 | "nodemon": "^1.9.2" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | Graphene UI documentation 2 | ======================================== 3 | 4 | Graphene UI is the open-source front-end for `Cryptonomex Graphene `_. A live hosted wallet running a custom themed version of Graphene UI for Bitshares can be found at ``_ 5 | 6 | 7 | Contents: 8 | 9 | .. toctree:: 10 | :maxdepth: 2 11 | :caption: The basics 12 | 13 | getting_started 14 | 15 | .. toctree:: 16 | :maxdepth: 2 17 | :caption: Project structure 18 | 19 | structure 20 | data_layer 21 | components 22 | 23 | .. toctree:: 24 | :maxdepth: 2 25 | :caption: General info 26 | 27 | contributing 28 | license 29 | help 30 | -------------------------------------------------------------------------------- /web/app/actions/PrivateKeyActions.js: -------------------------------------------------------------------------------- 1 | var alt = require("alt-instance"); 2 | 3 | class PrivateKeyActions { 4 | 5 | addKey(private_key_object, transaction) { 6 | // returned promise is deprecated 7 | return (dispatch) => { 8 | return new Promise( resolve => { 9 | dispatch({private_key_object, transaction, resolve}); 10 | }); 11 | }; 12 | } 13 | 14 | loadDbData() { 15 | // returned promise is deprecated 16 | return (dispatch) => { 17 | return new Promise( resolve => { 18 | dispatch(resolve); 19 | }); 20 | }; 21 | 22 | } 23 | 24 | } 25 | 26 | export default alt.createActions(PrivateKeyActions); 27 | -------------------------------------------------------------------------------- /trollbox/trollbox.js: -------------------------------------------------------------------------------- 1 | var fs = require("fs"); 2 | var config = require("./config"); 3 | var PeerServer = require('peer').PeerServer; 4 | 5 | var psConfig = { 6 | port: config.port, 7 | path: '/trollbox', 8 | allow_discovery: true 9 | }; 10 | 11 | if (config.useSSL) { 12 | psConfig.ssl = { 13 | key: fs.readFileSync(config.ssl.key), 14 | cert: fs.readFileSync(config.ssl.cert) 15 | } 16 | } 17 | var server = PeerServer(psConfig); 18 | 19 | server.on('connection', function(id) { 20 | console.log("connection from:", id); 21 | }); 22 | 23 | server.on('disconnect', function(id) { 24 | console.log("disconnect from:", id); 25 | }); 26 | 27 | console.log("Trollbox listening at port", config.port); 28 | 29 | -------------------------------------------------------------------------------- /web/app/assets/stylesheets/components/_wallet.scss: -------------------------------------------------------------------------------- 1 | .modal-header { 2 | padding: 1rem; 3 | text-align: center; 4 | } 5 | 6 | .modal-content { 7 | padding: 1rem; 8 | } 9 | 10 | .modal-footer { 11 | text-align: right; 12 | } 13 | 14 | .text-group { 15 | width: 100%; 16 | display: table; 17 | padding:0.5em; 18 | div { 19 | display: table-cell; 20 | vertical-align: middle; 21 | } 22 | div:nth-child(1) { 23 | min-width: 3rem; 24 | } 25 | div:nth-child(2) { 26 | text-align: right; 27 | padding-left: 0.5rem; 28 | } 29 | } 30 | 31 | .text-group 32 | 33 | .left-menu { 34 | padding-bottom: 1em; 35 | } 36 | 37 | @include breakpoint(medium) { 38 | .left-menu { 39 | padding-top: 5em; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /help/tr/components/Fees.md: -------------------------------------------------------------------------------- 1 | # Ücretler 2 | 3 | BitShares ekosistemi içerisinde her işleme tahsis edilmiş *bireysel* bir ücret vardır. 4 | Bu ücretler değişime tabidirler. Bununla birlikte, bunlar sadece hissedarların oylarıyla 5 | belirlenirler, böylece BitShares'in esas varlığı olan BTS hissedarlarının her biri 6 | ücretlerin ne olacağı konusunda söz sahibi olur. Eğer hissedarlar belli bir ücretin 7 | düşürülmesi konusunda fikir birliği sağlarlarsa o ücret blok zinciri tarafından otomatik 8 | olarak düşürülür. Blok zinciri parametrelerinin düzenlemesiyle ilgili teklifler kurul 9 | üyeleri tarafından yapılırlar. Bu üyeler hissedarlar tarafından oy kullanılarak seçilirler 10 | ve herhangi bir durumda, esneklik ve reaksiyon kabiliyetini arttırırlar. -------------------------------------------------------------------------------- /help/en/introduction/witness.md: -------------------------------------------------------------------------------- 1 | # Witness 2 | 3 | Witnesses are entities that work for the blockchain by constructing new blocks. 4 | Each witness is approved by the shareholders and constructs and signs blocks 5 | from validated transactions. Every transaction made in the network is required 6 | to be validated by all witnesses eventually. 7 | 8 | ## Consensus Mechanism 9 | 10 | Who exactly is allows to *produce* a block at which time instant is defined by a 11 | consensus mechanism called *Delegated Proof of Stake*. In essence, the 12 | shareholders of BitShares (holders of the BTS token) can cast a vote for their 13 | preferred block producers on the blockchain. Those so called *witnesses* with 14 | the most votes are allowed to produce blocks. 15 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/index.txt: -------------------------------------------------------------------------------- 1 | Graphene UI documentation 2 | ======================================== 3 | 4 | Graphene UI is the open-source front-end for `Cryptonomex Graphene `_. A live hosted wallet running a custom themed version of Graphene UI for Bitshares can be found at ``_ 5 | 6 | 7 | Contents: 8 | 9 | .. toctree:: 10 | :maxdepth: 2 11 | :caption: The basics 12 | 13 | getting_started 14 | 15 | .. toctree:: 16 | :maxdepth: 2 17 | :caption: Project structure 18 | 19 | structure 20 | data_layer 21 | components 22 | 23 | .. toctree:: 24 | :maxdepth: 2 25 | :caption: General info 26 | 27 | contributing 28 | license 29 | help 30 | -------------------------------------------------------------------------------- /help/cn/accounts/membership.md: -------------------------------------------------------------------------------- 1 | # 会员级别 2 | 3 | BitShares 系统中,用户账户分为3个种类。我们运行用户升级账户到类似VIP的会员级别,享受费率折扣以及其他专属特性。 4 | 5 | ## 非会员(普通账户) 6 | 7 | 一个*非会员账户*,也就是一个*普通账户* 8 | 9 | ## 终身会员 10 | 11 | 终身会员账户可以从自己支付的各种手续费中获得一定比例的返现奖励,并有资格加入引荐计划,通过引荐或注册用户获得引荐奖励。升级到终身会员要求支付一笔一次性的升级费用,具体金额由理事会成员通过投票设定和调整。 12 | 13 | ## 年度会员 14 | 15 | 如果你暂时不想成为终身会员,那么你还可以选择升级到年度会员,也可获得一定比例的手续费返现。升级到年度会员,每年需要花费较少数量的会员费用。 16 | 17 | ### 手续费分配 18 | 19 | 每次你推荐的用户支付手续费时,该手续费将分配给多个不同账户。网络、推荐人都将获得一部分分成。 20 | 21 | 注册人是账户注册时代其支付注册费的账户。注册人账户可自行决定剩余的手续费如何在它自己及它的市场合作方之间分配。 22 | 23 | #### 待结费用 24 | 手续费每个维护周期在网络、推荐人和注册人之间结算一次。尚未结算的手续费称为*待结费用*。 25 | 26 | #### 待解冻金额 27 | 28 | 大部分获取手续费的利益账户可立即使用资金,但金额超过一定数量的费用(比如支付升级终身会员的手续费、注册高级账户名的手续费等)则需要暂时冻结,并在一段时间内线性解冻释放。 29 | 30 | -------------------------------------------------------------------------------- /help/tr/introduction/witness.md: -------------------------------------------------------------------------------- 1 | # Tanık 2 | 3 | Tanıklar yeni bloklar inşa etmek suretiyle blokzincirine çalışan kimselerdir. 4 | Her tanık, hissedarlar tarafından onaylanır ve tasdikli işlemlerden bloklar inşaa eder 5 | ve imzalar. Ağın içinde gerçekleşen her işlem en sonunda tüm tanıklar tarafından 6 | tasdik edilmek zorundadır. 7 | 8 | ## Mutabakat Mekanizması 9 | 10 | Kimin tam olarak hangi anda blok *ürettiği* , *Delegated Proof of Stake* 11 | (Yetkilendirilmiş-vekil-pay-ispatı) denilen mutabakat mekanizmasıyla belirlenir. 12 | Esasında, BitShares hissedarları (elinde BTS kuponu olan) tercih edilen blok 13 | üreticilerine blokzincirinde oy verebilirler. O *tanıklar* adı verilen, en çok oyu alan 14 | kimselerin blokları üretmelerine müsade edilir. -------------------------------------------------------------------------------- /web/app/components/Icon/trash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /web/__tests__/wallets/bts0-9_key-export-fjfjfjfj1.json: -------------------------------------------------------------------------------- 1 | { 2 | "password_checksum": "bae28fc07bbcbc3f629de4879cd1f75fbfc660efb68ded09c191d9d85fe2890eb8905ec11090d5f8e6992fd6b5ec6c695e05a7c76780dd8478072c6831347679", 3 | "account_keys": [{ 4 | "account_name": "", 5 | "encrypted_private_keys": [ 6 | "1107133cab12c1a0cdee2e3b5154b57b9d3c8538f67d6678a0fc3b8c8163fe61074281dbcf5b79cb9af2840d14e32ef1" 7 | ] 8 | },{ 9 | "account_name": "test12345", 10 | "encrypted_private_keys": [ 11 | "2a334a2034c6b50df743767a1ce5e3361246f1f5edd743f6b4f66af1e18e49643a25c3e042d58654101d56a25fcd1ab6", 12 | "b7fab8babebf3c18027fa498460c7a64b3d3abe211b1f6440b8b5483a6c0271b08f78ff652bb6cec512b096454de97d2" 13 | ] 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /web/app/components/Notifier/NotifierContainer.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import AccountStore from "stores/AccountStore"; 3 | import AltContainer from "alt-container"; 4 | import Notifier from "./Notifier"; 5 | 6 | class NotifierContainer extends React.Component { 7 | 8 | render() { 9 | 10 | return ( 11 | { 15 | return AccountStore.getState().currentAccount; 16 | } 17 | }} 18 | > 19 | 20 | 21 | ); 22 | } 23 | } 24 | 25 | export default NotifierContainer; 26 | -------------------------------------------------------------------------------- /web/app/components/Icon/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /help/es/toc.md: -------------------------------------------------------------------------------- 1 | #### Indice 2 | 3 | * [Introducción](index.md) 4 | * [Glosario](glossary.md) 5 | * [BitShares](introduction/bitshares.md) 6 | * [Billetera](introduction/wallets.md) 7 | * [Backups](introduction/backups.md) 8 | * [Blockchain](introduction/blockchain.md) 9 | * [Testigos](introduction/witness.md) 10 | * [Miembros del Comité](introduction/committee.md) 11 | * [Cuentas](accounts/general.md) 12 | * [Permisos](accounts/permissions.md) 13 | * [Membresías](accounts/membership.md) 14 | * [Market Pegged Assets](assets/mpa.md) (BitUSD, BitEUR, BitGOLD, Bit\*,...) 15 | * [Activos Emitidos por Usuarios](assets/uia.md) 16 | * [BitAssets Privados](assets/privbitassets.md) 17 | * [Exchange Descentralizado](dex/introduction.md) 18 | * [Trading](dex/trading.md) 19 | * [Short Selling BitAssets](dex/shorting.md) -------------------------------------------------------------------------------- /web/app/components/Icon/checkmark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /web/app/components/Utility/intlData.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | formats: { 3 | "date": { 4 | full: { 5 | second: "numeric", 6 | minute: "numeric", 7 | hour: "numeric", 8 | day: "numeric", 9 | month: "long", 10 | year: "numeric" 11 | }, 12 | short: { 13 | second: "numeric", 14 | minute: "numeric", 15 | hour: "numeric", 16 | day: "numeric", 17 | month: "numeric", 18 | year: "numeric" 19 | }, 20 | time: { 21 | second: "numeric", 22 | minute: "numeric", 23 | hour: "numeric" 24 | } 25 | } 26 | } 27 | }; 28 | -------------------------------------------------------------------------------- /web/app/components/Icon/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /web/app/components/Icon/cog.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /web/app/stores/NotificationStore.js: -------------------------------------------------------------------------------- 1 | import alt from "alt-instance"; 2 | import NotificationActions from "actions/NotificationActions"; 3 | 4 | class NotificationStore { 5 | 6 | constructor() { 7 | this.bindListeners({ 8 | addNotification: [ 9 | NotificationActions.addNotification, 10 | NotificationActions.success, 11 | NotificationActions.warning, 12 | NotificationActions.error, 13 | NotificationActions.info 14 | ] 15 | }) 16 | 17 | this.state = { 18 | notification: null 19 | } 20 | } 21 | 22 | addNotification(notification) { 23 | this.setState({ notification: notification }) 24 | } 25 | } 26 | 27 | export default alt.createStore(NotificationStore, 'NotificationStore') 28 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | "react", "json" 4 | ], 5 | "extends": ["plugin:react/recommended"], 6 | "parser": "babel-eslint", 7 | "env": { 8 | "browser": true, 9 | "node": true, 10 | "es6": true 11 | }, 12 | "parserOptions": { 13 | "ecmaFeatures": { 14 | "blockBindings": true, 15 | "forOf": true, 16 | "jsx": true 17 | } 18 | }, 19 | "rules": { 20 | "no-unused-vars": ["error", { "vars": "all", "args": "after-used" }], 21 | "comma-dangle": 0, 22 | "indent": [2,4], 23 | "quotes": [2, "double", "avoid-escape"], 24 | "semi": [2, "always"], 25 | "camelcase": [0], 26 | "no-console": [0], 27 | "object-curly-spacing": [0], 28 | "react/prop-types": [0] 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /electron/resources/osx/helper_apps/Info EH.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDisplayName 6 | {{productName}} Helper EH 7 | CFBundleExecutable 8 | {{productName}} Helper EH 9 | CFBundleIdentifier 10 | {{identifier}}.helper.EH 11 | CFBundleName 12 | {{productName}} Helper EH 13 | CFBundlePackageType 14 | APPL 15 | DTSDKName 16 | macosx 17 | LSUIElement 18 | 19 | NSSupportsAutomaticGraphicsSwitching 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /electron/resources/osx/helper_apps/Info NP.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDisplayName 6 | {{productName}} Helper NP 7 | CFBundleExecutable 8 | {{productName}} Helper NP 9 | CFBundleIdentifier 10 | {{identifier}}.helper.NP 11 | CFBundleName 12 | {{productName}} Helper NP 13 | CFBundlePackageType 14 | APPL 15 | DTSDKName 16 | macosx 17 | LSUIElement 18 | 19 | NSSupportsAutomaticGraphicsSwitching 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /web/app/components/Blockchain/BlockContainer.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import BlockchainStore from "stores/BlockchainStore"; 3 | import AltContainer from "alt-container"; 4 | import Block from "./Block"; 5 | 6 | class BlockContainer extends React.Component { 7 | 8 | render() { 9 | let height = parseInt(this.props.params.height, 10); 10 | 11 | return ( 12 | { 16 | return BlockchainStore.getState().blocks; 17 | } 18 | }} 19 | > 20 | 21 | 22 | ); 23 | } 24 | } 25 | 26 | export default BlockContainer; 27 | -------------------------------------------------------------------------------- /help/en/toc.md: -------------------------------------------------------------------------------- 1 | #### Table of Contents 2 | 3 | * [Introduction](index.md) 4 | * [Glossary](glossary.md) 5 | * [BitShares](introduction/bitshares.md) 6 | * [Wallet](introduction/wallets.md) 7 | * [Backups](introduction/backups.md) 8 | * [Blockchain](introduction/blockchain.md) 9 | * [Witness](introduction/witness.md) 10 | * [Workers](introduction/workers.md) 11 | * [Committe Member](introduction/committee.md) 12 | * [Accounts](accounts/general.md) 13 | * [Permissions](accounts/permissions.md) 14 | * [Memberships](accounts/membership.md) 15 | * [Market Pegged Assets](assets/mpa.md) (BitUSD, BitEUR, BitGOLD, Bit\*,...) 16 | * [User Issued Assets](assets/uia.md) 17 | * [Privatized BitAssets](assets/privbitassets.md) 18 | * [Decentralized Exchange](dex/introduction.md) 19 | * [Trading](dex/trading.md) 20 | * [Short Selling BitAssets](dex/shorting.md) 21 | -------------------------------------------------------------------------------- /help/tr/toc.md: -------------------------------------------------------------------------------- 1 | #### İçindekiler 2 | 3 | * [ Giriş ](index.md) 4 | * [Terimler Listesi](glossary.md) 5 | * [BitShares](introduction/bitshares.md) 6 | * [Cüzdan](introduction/wallets.md) 7 | * [Yedeklemeler](introduction/backups.md) 8 | * [Blokzinciri](introduction/blockchain.md) 9 | * [Tanık](introduction/witness.md) 10 | * [İşçiler](introduction/workers.md) 11 | * [Kurul Üyesi](introduction/committee.md) 12 | * [Hesaplar](accounts/general.md) 13 | * [İzinler](accounts/permissions.md) 14 | * [Üyelikler](accounts/membership.md) 15 | * [Piyasaya Sabitli Aktifler](assets/mpa.md) (BitUSD, BitEUR, BitGOLD, Bit\*,...) 16 | * [Kullanıcı Aktifler](assets/uia.md) 17 | * [Özelleştirilmiş BitAktifler](assets/privbitassets.md) 18 | * [Merkezsiz/dağıtık Borsa](dex/introduction.md) 19 | * [Alış-Satış/Trade](dex/trading.md) 20 | * [BitAktiflerin Kısa Satışları](dex/shorting.md) -------------------------------------------------------------------------------- /web/app/components/Icon/icon.scss: -------------------------------------------------------------------------------- 1 | .icon { 2 | position: relative; 3 | top: 1px; 4 | } 5 | 6 | 7 | 8 | .icon > svg, span.icon { 9 | width: 1.12rem; 10 | height: 1.12rem; 11 | } 12 | 13 | .icon-14px > svg, span.icon-14px { 14 | width: 14px; 15 | height: 14px; 16 | } 17 | 18 | .icon-2x > svg, span.icon-2x { 19 | width: 2.30rem; 20 | height: 2.30rem; 21 | } 22 | 23 | .icon-3x > svg, span.icon-3x { 24 | width: 3.45rem; 25 | height: 3.45rem; 26 | } 27 | 28 | .icon-4x > svg, span.icon-4x { 29 | width: 4.60rem; 30 | height: 4.60rem; 31 | } 32 | 33 | .icon-5x > svg, span.icon-5x { 34 | width: 5.75rem; 35 | height: 5.75rem; 36 | margin: 24px 0 24px 0; 37 | } 38 | 39 | .icon-10x > svg, span.icon-10x { 40 | width: 10rem; 41 | height: 10rem; 42 | margin: 24px 0 24px 0; 43 | } 44 | 45 | .icon.fill-black > svg > path { 46 | fill:black; 47 | } 48 | -------------------------------------------------------------------------------- /help/cn/dex/trading.md: -------------------------------------------------------------------------------- 1 | # 交易 2 | 3 | 文本将介绍在BitShares DEX去中心化交易所系统中使用的一些术语,以及交易对的呈现方式。 4 | 5 | ## 交易对 6 | 7 | 在BitShares系统中,任何资产之间都可相互交易。我们选取任意2种资产,它们就形成了*市场交易对*。比如,我们可以使用美元USD与欧元EUR在USD:EUR交易对市场中进行交易。 8 | 9 | 为了与外汇交易习惯统一,交易对中的资产标准化为 *基础资产* 和 *报价资产*,表现形式如下: 10 | 11 | *报价资产* : *基础资产* 12 | 13 | 比如*基础资产*为USD和*报价资产*为EUR的交易对表现为EUR:USD。 14 | 15 | ## 买卖盘 16 | 17 | 买卖盘由*买盘*和*卖盘*构成。由于交易对并无固定的顺序,所以可以进行反转,下表展示了买盘和卖盘对应的资产买、卖操作: 18 | 19 | | 方向 | 卖 | 买 | 20 | | -------- | --------- | --------- | 21 | | 买 | *报价资产* | *基础资产* | 22 | | 卖 | *基础资产* | *报价资产* | 23 | | -------- | --------- | --------- | 24 | 25 | 显然在 USD:EUR 交易对的买方即为 EUR:USD 交易对的卖方。价格在系统内部自动转换,在交易对反转时也能正确转换。 26 | 27 | ## 交易 28 | 29 | 下单时,需要填写*买单*或*卖单*表单(对应希望的*买入*或*卖出*)。你需要填写打算买入或卖出的*价格*和*数量*。订单总额将自动计算。下单时可能需要支付额外的手续费。 30 | 31 | 一旦订单被撮合(比如你的订单被其他人接受),你的账户将存入相应的资产。 32 | 33 | 未撮合订单可随时取消。 34 | -------------------------------------------------------------------------------- /help/en/assets/uia.md: -------------------------------------------------------------------------------- 1 | # User Issued Assets 2 | 3 | In addition to the aforementioned *market pegged* assets, BitShares allows 4 | individuals and companies to create and issue their own tokens for anything 5 | they can imagine. The potential use cases for so called user-issued assets 6 | (UIA) are innumerable. On the one hand, UIAs can be used as simple event 7 | tickets deposited on the customers mobile phone to pass the entrance of a 8 | concert. On the other hand, they can be used for crowd funding, ownership 9 | tracking or even to sell equity of a company in form of stock. 10 | 11 | Obviously, the regulations that apply to each kind of token vary widely and are 12 | often different in every jurisdiction. Hence, BitShares comes with tools that 13 | allow issuers to remain compliant with all applicable regulations when issuing 14 | assets assuming regulators allow such assets in the first place. 15 | -------------------------------------------------------------------------------- /web/app/assets/stylesheets/components/_pagination.scss: -------------------------------------------------------------------------------- 1 | .pagination { 2 | display: inline-block; 3 | padding: 1rem; 4 | margin: 20px 0; 5 | 6 | } 7 | 8 | 9 | .pagination > li { 10 | padding: 1rem; 11 | display: inline; 12 | border: 0px solid #ddd; 13 | -webkit-touch-callout: none; 14 | -webkit-user-select: none; 15 | -khtml-user-select: none; 16 | -moz-user-select: none; 17 | -ms-user-select: none; 18 | user-select: none; 19 | &:first-child { 20 | margin-left: 0.2rem; 21 | cursor: pointer; 22 | } 23 | &:nth-child(2) { 24 | margin-right: 0; 25 | } 26 | &:last-child { 27 | margin-right: 0.2rem; 28 | margin-left: 0; 29 | cursor: pointer; 30 | } 31 | > input { 32 | display: inline; 33 | width: 4rem; 34 | margin: 0 0rem 0 0rem; 35 | border: none; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /web/app/components/Explorer/AccountsContainer.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import AccountStore from "stores/AccountStore"; 3 | import AltContainer from "alt-container"; 4 | import Accounts from "./Accounts"; 5 | 6 | class AccountsContainer extends React.Component { 7 | 8 | render() { 9 | return ( 10 | { 14 | return AccountStore.getState().searchAccounts; 15 | }, 16 | searchTerm: () => { 17 | return AccountStore.getState().searchTerm; 18 | } 19 | }} 20 | > 21 | 22 | 23 | ); 24 | } 25 | } 26 | 27 | export default AccountsContainer; 28 | -------------------------------------------------------------------------------- /web/app/components/Utility/VestingBalance.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import FormattedAsset from "./FormattedAsset"; 3 | import ChainTypes from "./ChainTypes"; 4 | import BindToChainState from "./BindToChainState"; 5 | 6 | /** 7 | * Given a balance_object, displays it in a pretty way 8 | * 9 | * Expects one property, 'balance' which should be a balance_object id 10 | */ 11 | 12 | class VestingBalance extends React.Component { 13 | 14 | static propTypes = { 15 | balance: ChainTypes.ChainObject.isRequired 16 | } 17 | 18 | render() { 19 | let amount = Number(this.props.balance.getIn(["balance","amount"])); 20 | let type = this.props.balance.getIn(["balance","asset_id"]); 21 | return ; 22 | } 23 | } 24 | 25 | export default BindToChainState(VestingBalance, {keep_updating: true}); 26 | -------------------------------------------------------------------------------- /web/app/components/Explorer/BlocksContainer.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import BlockchainStore from "stores/BlockchainStore"; 3 | import AltContainer from "alt-container"; 4 | import Blocks from "./Blocks"; 5 | 6 | class BlocksContainer extends React.Component { 7 | 8 | render() { 9 | 10 | return ( 11 | { 15 | return BlockchainStore.getState().latestBlocks; 16 | }, 17 | latestTransactions: () => { 18 | return BlockchainStore.getState().latestTransactions; 19 | } 20 | }} 21 | > 22 | 23 | 24 | ); 25 | } 26 | } 27 | 28 | export default BlocksContainer; 29 | -------------------------------------------------------------------------------- /web/app/components/Utility/Prototypes.js: -------------------------------------------------------------------------------- 1 | Array.prototype.equals = function (array) { 2 | // if the other array is a falsy value, return 3 | if (!array) { 4 | return false; 5 | } 6 | // compare lengths - can save a lot of time 7 | if (this.length !== array.length) { 8 | return false; 9 | } 10 | for (var i = 0, l = this.length; i < l; i++) { 11 | // Check if we have nested arrays 12 | if (this[i] instanceof Array && array[i] instanceof Array) { 13 | // recurse into the nested arrays 14 | if (!this[i].equals(array[i])) { 15 | return false; 16 | } 17 | } 18 | else if (this[i] !== array[i]) { 19 | // Warning - two different object instances will never be equal: {x:20} != {x:20} 20 | return false; 21 | } 22 | } 23 | return true; 24 | }; 25 | -------------------------------------------------------------------------------- /web/app/assets/stylesheets/components/_cards.scss: -------------------------------------------------------------------------------- 1 | .card { 2 | border-radius: 0; 3 | border: none; 4 | > h4 { 5 | margin: 0; 6 | padding-top: 0.2rem; 7 | padding-bottom: 0.2rem; 8 | } 9 | > .card-content { 10 | margin: 1rem; 11 | } 12 | margin-bottom: 1rem; 13 | } 14 | 15 | .card-section .text-group { 16 | text-align: left; 17 | } 18 | 19 | .account-card { 20 | padding: 0 1rem 0 0 !important; 21 | .balances { 22 | margin: 0; 23 | padding: 0; 24 | list-style: none; 25 | margin-left: 78px; 26 | } 27 | cursor: pointer; 28 | &.worker-card { 29 | cursor: auto; 30 | } 31 | } 32 | 33 | .card:hover { 34 | border: none; 35 | } 36 | 37 | .card a>div:first-child { 38 | text-align: center; 39 | padding: 5px; 40 | } 41 | 42 | 43 | .asset-card { 44 | padding: 0 1rem 0 0 !important; 45 | margin: 0 0 2rem 0; 46 | .card-divider { 47 | margin-bottom: 1rem; 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /web/app/assets/stylesheets/components/_tables.scss: -------------------------------------------------------------------------------- 1 | .table { 2 | width: 100%; 3 | } 4 | 5 | .table > thead > tr > th { 6 | border-bottom: 1px solid #ddd; 7 | padding: 12px 5px; 8 | //padding-right: 8px; 9 | text-transform: uppercase; 10 | font-weight: normal; 11 | font-size: 0.9rem; 12 | color: #777; 13 | text-align: left; 14 | } 15 | 16 | .table > tbody > tr > td { 17 | // border-bottom: 1px solid #ddd; 18 | padding: 5px; 19 | } 20 | 21 | .table > tbody > tr:last-of-type > td { 22 | border-bottom: none; 23 | } 24 | 25 | .table-hover > tbody > tr:hover > td, .table-hover > tbody > tr:hover > th { 26 | background-color: #f5f5f5; 27 | cursor: pointer; 28 | } 29 | 30 | .key-value-table { 31 | tr > td:first-child { 32 | padding-left: 0 !important; 33 | } 34 | tr > td:last-child { 35 | text-align: right; 36 | } 37 | } 38 | 39 | .table.compact { 40 | td, th { 41 | font-size: 94%; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /help/cn/components/AccountMembership.md: -------------------------------------------------------------------------------- 1 | [# lifetime] 2 | ### 可获得 {feesCashback}% 手续费返现奖励 3 | 4 | 终身会员可获得自己支付的每笔交易手续费的{feesCashback}%的现金返现,并自动作为推荐人加入引荐计划,通过引荐用户注册获得推荐奖励。升级到终身会员只需要花费 {price}。 5 | 6 | [# annual] 7 | 8 | 如果你暂时不想成为终身会员,那么你还可以选择升级到年度会员,可获得 {feesCashback}% 的手续费返现。升级为年度会员,每年只需花费 {price}。 9 | 10 | [# fee-division] 11 | #### 手续费分配 12 | 每次 {account} 支付交易手续费时,该手续费将分配给多个不同账户。网络将收取 {networkFee}%,引荐 {account} 的推荐人账户将获得 {lifetimeFee}%。 13 | 14 | _注册人账户_ 是在 {account} 注册时代其支付注册费的账户。注册人账户可自行决定剩余的 {referrerTotalFee}% 手续费如何在它自己及它的 _合作推荐人_ 之间分配。 15 | 16 | {account}的注册人账户决定与它的_合作推荐人_分享{referrerFee}%手续费,自己保留{registrarFee}%。 17 | 18 | 19 | #### 待结费用 20 | {account} 支付的手续费每个维护周期 ({maintenanceInterval} 秒)在网络、推荐人和注册人之间结算一次。下一个维护时间在 {nextMaintenanceTime}。 21 | 22 | #### 待解冻金额 23 | 24 | 大部分获取手续费的利益账户可立即使用资金,但金额超过{vestingThreshold}的费用(比如支付升级终身会员的手续费、注册高级账户名的手续费等)则需要暂时冻结,并在{vestingPeriod}天内线性解冻释放。 -------------------------------------------------------------------------------- /web/app/components/Help.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import HelpContent from "./Utility/HelpContent"; 3 | import {pairs} from "lodash"; 4 | 5 | class Help extends React.Component { 6 | 7 | render() { 8 | let path = pairs(this.props.params).map(p => p[1]).join("/"); 9 | return ( 10 |
11 |
12 |
13 | 14 |
15 |
16 |
17 |
18 | 19 |
20 |
21 |
22 | ); 23 | } 24 | } 25 | 26 | export default Help; 27 | -------------------------------------------------------------------------------- /web/app/components/Icon/plus-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /help/tr/assets/uia.md: -------------------------------------------------------------------------------- 1 | # Kullanıcı Sürümü Aktifler (UIA-User Issued Assets) 2 | 3 | Daha önce bahsedilen *piyasaya sabitli varlıkların* yanısıra , BitShares bireylere ve 4 | şirketlere, hayal edebilecekleri herşeye ait kendi kuponlarını yaratma ve piyasaya 5 | sürme imkanı verir. Kullanıcı Sürümü Varlıklar (UIA) için potansiyel kullanım alanları 6 | sayısızdır. Bir tarafta UIA'ler müşterilerin telefonlarına konser girişlerinde 7 | kullanabilecekleri basit organizasyon biletleri olarak yüklenebilirler. Diğer tarafta ise 8 | kitle fonlaması, mülkiyet takibi , ya da hisse şeklinde şirket özsermayesi satışında bile 9 | kullanılabilirler. 10 | 11 | Tabiiki, her tür kupona uygulanan kurallar çeşitlidir ve her yetki bölgesinde farklılık 12 | gösterir. Dolayısıyla BitShares, varlıklar piyasaya sürülürken , piyasaya süren kişinin 13 | geçerli kanunlar çerçevesinde korunmasına yardımcı olacak araçlarla gelir -kanunların 14 | böyle varlıklara zaten izin verdiğini farz ediyoruz. -------------------------------------------------------------------------------- /web/app/components/Icon/checkmark-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /help/en/introduction/wallets.md: -------------------------------------------------------------------------------- 1 | # Wallet 2 | 3 | As you may have noticed already, this application is a web application and runs 4 | in a browser. A connection is established to a trusted node in the network that 5 | serves as a gateway to the rest of the ecosystem. 6 | 7 | ## Wallet Security 8 | 9 | Rest assured that our servers do never have access to your funds because none of 10 | your private keys ever leave your browser. Instead they are encrypted with your 11 | pass phrase and are stored in your local browser's database. Hence you should 12 | make sure to have a proper [Backup](../introduction/backups.md) to not lose 13 | access to your funds on computer malfunctions or browser crashes. 14 | 15 | ## Wallet Management 16 | 17 | Furthermore, the user interface is capable of carrying and accessing several 18 | separated wallets each containing possible several accounts and corresponding 19 | funds. You can add, backup, and switch existing wallets in `Settings->Wallets`. 20 | -------------------------------------------------------------------------------- /web/app/components/Utility/BalanceComponent.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import FormattedAsset from "./FormattedAsset"; 3 | import ChainTypes from "./ChainTypes"; 4 | import BindToChainState from "./BindToChainState"; 5 | 6 | /** 7 | * Given a balance_object, displays it in a pretty way 8 | * 9 | * Expects one property, 'balance' which should be a balance_object id 10 | */ 11 | 12 | class BalanceComponent extends React.Component { 13 | 14 | static propTypes = { 15 | balance: ChainTypes.ChainObject.isRequired, 16 | assetInfo: React.PropTypes.node 17 | } 18 | 19 | render() { 20 | let amount = Number(this.props.balance.get("balance")); 21 | let type = this.props.balance.get("asset_type"); 22 | return (); 23 | } 24 | } 25 | 26 | export default BindToChainState(BalanceComponent, {keep_updating: true}); 27 | -------------------------------------------------------------------------------- /help/cn/index.md: -------------------------------------------------------------------------------- 1 | # Graphene 石墨烯 2 | 3 | BitShares(比特股) 2.0 是一个金融智能合约平台,该平台基于[Cryptonomex](http://cryptonomex.com)公司研发的[Graphene(石墨烯)](https://github.com/cryptonomex/graphene)技术开发。Graphene(石墨烯)是一个开发工具包,同时也是实时区块链的技术实现。 4 | 5 | 本帮助文档旨在提供用户一个系统概述,并解释系统中的一些基本概念。 6 | 7 | ## 简介 8 | * [BitShares(比特股)](introduction/bitshares.md) 9 | * [钱包](introduction/wallets.md) 10 | * [备份](introduction/backups.md) 11 | * [区块链](introduction/blockchain.md) 12 | * [见证人](introduction/witness.md) 13 | * [预算项目](introduction/workers.md) 14 | * [理事会](introduction/committee.md) 15 | 16 | ## 账户 17 | * [介绍](accounts/general.md) 18 | * [权限](accounts/permissions.md) 19 | * [会员级别](accounts/membership.md) 20 | 21 | ## 资产 22 | * [市场锚定资产](assets/mpa.md) (BitUSD, BitEUR, BitGOLD, Bit\*,...) 23 | * [用户发行资产](assets/uia.md) 24 | * [私有比特资产](assets/privbitassets.md) 25 | 26 | ## 去中心化交易所 27 | * [介绍](dex/introduction.md) 28 | * [交易](dex/trading.md) 29 | * [卖空比特资产](dex/shorting.md) 30 | 31 | ---------- 32 | [词汇表](glossary.md) 33 | -------------------------------------------------------------------------------- /web/app/components/Account/AccountImage.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Identicon from "./Identicon"; 3 | import {PropTypes, Component} from "react"; 4 | 5 | class AccountImage extends Component { 6 | render() { 7 | let {account, image} = this.props; 8 | let {height, width} = this.props.size; 9 | let custom_image = image ? 10 | : 11 | ; 12 | return ( 13 |
14 | {custom_image} 15 |
16 | ); 17 | } 18 | } 19 | 20 | AccountImage.defaultProps = { 21 | src: "", 22 | account: "", 23 | size: {height: 120, width: 120} 24 | }; 25 | 26 | AccountImage.propTypes = { 27 | src: PropTypes.string, 28 | account: PropTypes.string, 29 | size: PropTypes.object.isRequired 30 | }; 31 | 32 | export default AccountImage; 33 | -------------------------------------------------------------------------------- /help/cn/dex/shorting.md: -------------------------------------------------------------------------------- 1 | # 卖空比特资产 2 | 3 | 为了看多BTS,并且为比特资产,比如USD, EUR, GOLD等提供市场深度,你可以从网络*借入*比特资产,并且*卖出*。我们来介绍下相关步骤。 4 | 5 | ## 借入 6 | 7 | BitShares网络能够发行比特资产,并借给用户,只要用户能够提供足够的抵押担保。 8 | 9 | * *喂价*: 在外部交易所中1BTS的交易价格 10 | * *维持保证金比率* (MCR): 由见证人维护并调节的起始抵押比率 11 | * *最大强制平仓比率* (MSQR): 由见证人维护并调节的最大强制平仓比率以保护空头围堵。 12 | * *强制平仓保护价* (SQP): 指定一个空头头寸被强制平仓支付最多时的价格 13 | * *强制平仓价* (CP): 将触发空头/贷款头寸强制平仓的价格 14 | 15 | ### 强制平仓 16 | 17 | BitShares网络可以强制平仓那些抵押不足的空头仓位。任何时候,如果空头仓位抵押物的市场最高买价低于*强制平仓价(CP)*,且高于*强制平仓保护价(SQP)*时将触发强制平仓,空头仓位将被强制卖出抵押物。 18 | 19 | SQP = 喂价 / MSQR 20 | CP = 债务价值 / 抵押物价值 * MCR 21 | 22 | 强制平仓发生时,将用抵押物按市场价格(最高到SQP价格)买入之前接入的比特资产,进行平仓。剩余的抵押BTS将会归还用户。 23 | 24 | ### 清算 25 | 26 | 比特资产的持有人可以随时要求按*公允价格*进行清算。清算发生时将关闭抵押率最低的空头/借贷头寸,卖出抵押物已完成清算。 27 | 28 | ## 卖出 29 | 30 | 借入比特资产后,用户可以随时在市场上以自己意愿的价格卖出。卖出后,用户即实现了卖空该比特资产的目的。 31 | 32 | ## 更新抵押率 33 | 34 | 任何时间,持有空头/借贷头寸的用户可以修改抵押率来灵活地适应市场变化。如果调高抵押率,则额外的BTS将被锁定以增加抵押,而调低抵押率则要求用户返还网络相应差额数量的比特资产。 35 | 36 | ## 平仓 37 | 38 | 空头/借贷头寸平仓时,用户必须持有相应借入的比特资产,以返还网络。网络将相应数量的比特资产从流通供给中去除,并解锁抵押物返还用户账户。 -------------------------------------------------------------------------------- /help/tr/introduction/wallets.md: -------------------------------------------------------------------------------- 1 | # Cüzdan 2 | 3 | Şu ana kadar farketmiş olduğunuz gibi bu uygulama bir web uygulamasıdır ve 4 | tarayacı içerisinde çalışır. Ekosistemin geri kalanına geçit görevi gören , ağda bulunan 5 | güvenilir bir düğüm(node) bağlantı kurar. test 6 | 7 | ## Cüzdan Güvenliği 8 | 9 | İçiniz rahat olsun , sunucularımızın fonlarınıza erişimi mümkün değildir, çünkü özel 10 | anahtarlarınızın hiçbiri asla tarayıcınızdan ayrılmazlar. Onun yerine , parola cümlenizle 11 | kriptolanmış vaziyette yerel tarayıcınızın veritabanında saklı tutulurlar. 12 | O yüzden, bilgisayar arızaları ve tarayıcı çökmelerine karşı mutlaka uygun bir 13 | [Backup](../introduction/backups.md) yapmayı ihmal etmeyin. 14 | 15 | ## Cüzdan Yönetimi 16 | 17 | Dahası , bu kullanıcı arayüzü , birden çok sayıda ve içerisinde muhtemel birçok 18 | hesap ve bunlara ait fonlar bulunduran ayrı cüzdanları muhafaza edebilir ve bunlara erişebilir. 19 | `Ayarlar->Cüzdanlar`'dan ekleme, yedekleme yapabilir ve mevcut cüzdanlar arasında geçiş yapabilirsiniz. -------------------------------------------------------------------------------- /electron/tasks/utils.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var argv = require('yargs').argv; 4 | var os = require('os'); 5 | var fs = require('fs'); 6 | 7 | module.exports.os = function () { 8 | switch (os.platform()) { 9 | case 'darwin': 10 | return 'osx'; 11 | case 'linux': 12 | return 'linux'; 13 | case 'win32': 14 | return 'windows'; 15 | } 16 | return 'unsupported'; 17 | }; 18 | 19 | module.exports.replace = function (str, patterns) { 20 | Object.keys(patterns).forEach(function (pattern) { 21 | var matcher = new RegExp('{{' + pattern + '}}', 'g'); 22 | str = str.replace(matcher, patterns[pattern]); 23 | }); 24 | return str; 25 | }; 26 | 27 | module.exports.getEnvName = function () { 28 | return argv.env || 'development'; 29 | }; 30 | 31 | module.exports.getElectronVersion = function () { 32 | var manifest = JSON.parse(fs.readFileSync(__dirname + '/../package.json')); 33 | return manifest.devDependencies['electron'].substring(1); 34 | }; 35 | -------------------------------------------------------------------------------- /web/lib/common/localStorage.js: -------------------------------------------------------------------------------- 1 | // Localstorage 2 | import ls, {ls_key_exists} from "./localStorageImpl"; 3 | 4 | if (null===ls) throw "localStorage is required but isn't available on this platform"; 5 | 6 | const localStorage = (key) => { 7 | 8 | var STORAGE_KEY = key; 9 | 10 | return { 11 | get(key, dv = {}) { 12 | 13 | let rv; 14 | if ( ls_key_exists(STORAGE_KEY + key, ls) ) { 15 | rv = JSON.parse(ls.getItem(STORAGE_KEY + key)); 16 | } 17 | return rv ? rv : dv; 18 | }, 19 | 20 | set(key, object) { 21 | if (object && object.toJS) { 22 | object = object.toJS(); 23 | } 24 | ls.setItem(STORAGE_KEY + key, JSON.stringify(object)); 25 | }, 26 | 27 | remove(key) { 28 | ls.removeItem(STORAGE_KEY + key); 29 | }, 30 | 31 | has(key) { 32 | return ls_key_exists(STORAGE_KEY + key, ls); 33 | } 34 | }; 35 | }; 36 | 37 | export default localStorage; 38 | -------------------------------------------------------------------------------- /electron/build/vendor/electron_boilerplate/dev_helper.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var app = require('electron').app; 4 | var Menu = require('electron').Menu; 5 | var BrowserWindow = require('electron').BrowserWindow; 6 | 7 | module.exports.setDevMenu = function () { 8 | var devMenu = Menu.buildFromTemplate([{ 9 | label: 'Development', 10 | submenu: [{ 11 | label: 'Reload', 12 | accelerator: 'CmdOrCtrl+R', 13 | click: function () { 14 | BrowserWindow.getFocusedWindow().reload(); 15 | } 16 | },{ 17 | label: 'Toggle DevTools', 18 | accelerator: 'Alt+CmdOrCtrl+I', 19 | click: function () { 20 | BrowserWindow.getFocusedWindow().toggleDevTools(); 21 | } 22 | },{ 23 | label: 'Quit', 24 | accelerator: 'CmdOrCtrl+Q', 25 | click: function () { 26 | app.quit(); 27 | } 28 | }] 29 | }]); 30 | Menu.setApplicationMenu(devMenu); 31 | }; 32 | -------------------------------------------------------------------------------- /help/en/introduction/workers.md: -------------------------------------------------------------------------------- 1 | # Workers 2 | 3 | Workers are proposals to perform a service in return for a salary from the blockchain. A worker proposal contains at a minimum the following information: 4 | 5 | * A start and end date 6 | * A daily pay 7 | * A maximum total pay 8 | 9 | It should also contain a link to a webpage where the worker proposal is explained in more detail. 10 | 11 | Votes for worker proposals can be positive or negative, which means you can downvote a proposal that you do not like. 12 | 13 | ## Worker budget mechanics 14 | Workers receive pay from a fixed daily budget on a first-come, first-serve basis until there are no more funds left. To see how this works, say we the following: 15 | 16 | * A daily total budget of 400k BTS for all workers 17 | * 5 worker proposals with a positive votes total, with daily pay requests of 100k BTS each 18 | 19 | Now the four workers with the most votes will all receive 100k BTS each per day, but once they've been paid the worker budget is empty. Therefore the fifth worker will receive nothing. 20 | 21 | -------------------------------------------------------------------------------- /web/app/components/Icon/user.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /help/tr/introduction/workers.md: -------------------------------------------------------------------------------- 1 | # Emekçiler 2 | 3 | Emekçiler maaş karşılığında hizmet veren tekliflerdir, maaşlarını blok zincirinden alırlar. Bir emekçi teklifi en azından aşağıdaki bilgileri kapsamalıdır : 4 | 5 | * Bir başlangıç ve bitiş tarihi 6 | * Gündelik bir ücret 7 | * Maksimum bir toplam maaş 8 | 9 | Emekçi teklifinin daha detaylı anlatıldığı bir web sayfasına da bağlantı sunmalıdır. 10 | 11 | Emekçi tekliflerine verilen oylar pozitif yada negatif olabilirler, yani beğenmediğiniz bir teklife red oyu kullanabilirsiniz. 12 | 13 | ## Emekçi bütçesi mekanizması 14 | Emekçilerin ücretleri, ilk-gelen ilk-çalışır prensibiyle günlük sabit bir bütçeden para tükenene kadar ödenir. Nasıl işlediğini görmek için şu örneğe bakın: 15 | 16 | * Tüm Emekçiler için günlük toplam bütçe 400 bin BTS olsun 17 | * Her biri günlük 100k BTS talep eden toplam oyların pozitif olduğu 5 emekçi teklifi 18 | 19 | Oyların çoğuna sahip 4 emekçinin her birine günlük 100 bin BTS ödenecek, fakat ödemeler tamamlandığında emekçi bütçesi tükenmiş olacak. O yüzden 5. emekçiye hiç bir şey ödenmeyecek. 20 | -------------------------------------------------------------------------------- /web/app/components/Icon/locked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /web/app/components/Icon/fi-star.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /web/app/components/Account/AccountBalance.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import AssetName from "../Utility/AssetName"; 3 | import ChainTypes from "../Utility/ChainTypes"; 4 | import BindToChainState from "../Utility/BindToChainState"; 5 | import BalanceComponent from "../Utility/BalanceComponent"; 6 | 7 | /** 8 | * Given a balance_object, displays it in a pretty way 9 | * 10 | * Expects one property, 'balance' which should be a balance_object id 11 | */ 12 | 13 | class AccountBalance extends React.Component { 14 | 15 | static propTypes = { 16 | account: ChainTypes.ChainAccount.isRequired, 17 | asset: ChainTypes.ChainAsset.isRequired 18 | } 19 | 20 | render() { 21 | let asset_id = this.props.asset.get("id"); 22 | let balance_id = this.props.account.getIn( ["balances", asset_id] ); 23 | 24 | if( balance_id ) return ; 25 | else return ; 26 | } 27 | } 28 | 29 | export default BindToChainState(AccountBalance, {keep_updating: true}); 30 | -------------------------------------------------------------------------------- /web/__tests__/utils/stub_router_context.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | let stubRouterContext = (Component, props, stubs) => { 4 | function RouterStub() { } 5 | 6 | Object.assign(RouterStub, { 7 | makePath () {}, 8 | makeHref () {}, 9 | transitionTo () {}, 10 | replaceWith () {}, 11 | goBack () {}, 12 | getCurrentPath () {}, 13 | getCurrentRoutes () {}, 14 | getCurrentPathname () {}, 15 | getCurrentParams () {}, 16 | getCurrentQuery () {}, 17 | isActive () {}, 18 | getRouteAtDepth() {}, 19 | setRouteComponentAtDepth() {} 20 | }, stubs); 21 | 22 | return React.createClass({ 23 | childContextTypes: { 24 | router: React.PropTypes.func, 25 | routeDepth: React.PropTypes.number 26 | }, 27 | 28 | getChildContext () { 29 | return { 30 | router: RouterStub, 31 | routeDepth: 0 32 | }; 33 | }, 34 | 35 | render () { 36 | return ; 37 | } 38 | }); 39 | }; 40 | 41 | export default stubRouterContext; 42 | -------------------------------------------------------------------------------- /web/app/index-dev.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import { AppContainer } from "react-hot-loader"; 4 | 5 | /* 6 | * Routes-dev is only needed for react hot reload, as this does not work with 7 | * the async routes defined in Routes.jsx. Any changes to the routes must be kept 8 | * synchronized between the two files 9 | */ 10 | import Routes from "./Routes-dev"; 11 | 12 | require("./components/Utility/Prototypes"); // Adds a .equals method to Array for use in shouldComponentUpdate 13 | 14 | const rootEl = document.getElementById("content"); 15 | const render = () => { 16 | ReactDOM.render( 17 | 18 | 19 | , 20 | rootEl 21 | ); 22 | }; 23 | render(); 24 | 25 | if (module.hot) { 26 | module.hot.accept("./Routes-dev.jsx", () => { 27 | const NextApp = require("./Routes-dev").default; 28 | ReactDOM.render( 29 | 30 | 31 | , 32 | document.getElementById("content"), 33 | ); 34 | }); 35 | } 36 | -------------------------------------------------------------------------------- /web/app/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import { AppContainer } from "react-hot-loader"; 4 | import { Router, browserHistory, hashHistory } from "react-router/es"; 5 | /* 6 | * Routes-dev is only needed for react hot reload, as this does not work with 7 | * the async routes defined in Routes.jsx. Any changes to the routes must be kept 8 | * synchronized between the two files 9 | */ 10 | import routes from "./Routes"; 11 | 12 | require("./components/Utility/Prototypes"); // Adds a .equals method to Array for use in shouldComponentUpdate 13 | 14 | /* 15 | * Electron does not support browserHistory, so we need to use hashHistory. 16 | * The same is true for servers without configuration options, such as Github Pages 17 | */ 18 | const history = __HASH_HISTORY__ ? hashHistory : browserHistory; 19 | 20 | const rootEl = document.getElementById("content"); 21 | const render = () => { 22 | ReactDOM.render( 23 | 24 | 25 | , 26 | rootEl 27 | ); 28 | }; 29 | render(); 30 | -------------------------------------------------------------------------------- /electron/tasks/write_digest.js: -------------------------------------------------------------------------------- 1 | var crypto = require('crypto'); 2 | var fs = require('fs'); 3 | var path = require("path"); 4 | var utils = require('./utils'); 5 | var jetpack = require('fs-jetpack'); 6 | var releasesDir = jetpack.dir('./releases'); 7 | 8 | var currentRelease = releasesDir.read("current-release.json", "json"); 9 | 10 | // change the algo to sha1, sha256 etc according to your requirements 11 | var sha1 = crypto.createHash('sha1'); 12 | var sha256 = crypto.createHash('sha256'); 13 | 14 | var file = path.resolve('releases/', currentRelease[utils.os()]); 15 | var s = fs.ReadStream(file); 16 | s.on('data', function(d) { 17 | sha1.update(d); 18 | sha256.update(d); 19 | }); 20 | 21 | s.on('end', function() { 22 | var d = sha1.digest('hex'); 23 | var d2 = sha256.digest('hex'); 24 | 25 | console.log(currentRelease[utils.os()]); 26 | console.log("sha1:", d); 27 | console.log("sha256:", d2); 28 | 29 | releasesDir.write("current-hash.json", { 30 | file: currentRelease[utils.os()], 31 | os: utils.os(), 32 | sha1: d, 33 | sha256: d2 34 | }) 35 | }); 36 | -------------------------------------------------------------------------------- /web/app/actions/SettingsActions.js: -------------------------------------------------------------------------------- 1 | var alt = require("alt-instance"); 2 | 3 | class SettingsActions { 4 | 5 | changeSetting(value) { 6 | return value; 7 | } 8 | 9 | changeViewSetting(value) { 10 | return value; 11 | } 12 | 13 | changeMarketDirection(value) { 14 | return value; 15 | } 16 | 17 | addStarMarket(quote, base) { 18 | return {quote, base}; 19 | } 20 | 21 | removeStarMarket(quote, base) { 22 | return {quote, base}; 23 | } 24 | 25 | addStarAccount(account) { 26 | return account; 27 | } 28 | 29 | removeStarAccount(account) { 30 | return account; 31 | } 32 | 33 | addWS(ws) { 34 | return ws; 35 | } 36 | 37 | removeWS(index) { 38 | return index; 39 | } 40 | 41 | hideAsset(id, status) { 42 | 43 | return {id, status}; 44 | } 45 | 46 | clearSettings() { 47 | return true; 48 | } 49 | // changeBase(index, value) { 50 | // this.dispatch({index, value}); 51 | // } 52 | } 53 | 54 | export default alt.createActions(SettingsActions); 55 | -------------------------------------------------------------------------------- /electron/resources/osx/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDisplayName 6 | {{productName}} 7 | CFBundleExecutable 8 | {{productName}} 9 | CFBundleIconFile 10 | icon.icns 11 | CFBundleIdentifier 12 | {{identifier}} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | {{productName}} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleVersion 20 | {{version}} 21 | CFBundleGetInfoString 22 | {{version}} 23 | LSMinimumSystemVersion 24 | 10.8.0 25 | NSMainNibFile 26 | MainMenu 27 | NSPrincipalClass 28 | AtomApplication 29 | NSSupportsAutomaticGraphicsSwitching 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /web/app/components/Explorer/AssetsContainer.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import AssetStore from "stores/AssetStore"; 3 | import SettingsStore from "stores/SettingsStore"; 4 | import AltContainer from "alt-container"; 5 | import Assets from "./Assets"; 6 | 7 | class AssetsContainer extends React.Component { 8 | 9 | render() { 10 | 11 | return ( 12 | { 16 | return AssetStore.getState().assets; 17 | }, 18 | filterMPA: () => { 19 | return SettingsStore.getState().viewSettings.get("filterMPA"); 20 | }, 21 | filterUIA: () => { 22 | return SettingsStore.getState().viewSettings.get("filterUIA"); 23 | } 24 | }} 25 | > 26 | 27 | 28 | ); 29 | } 30 | } 31 | 32 | export default AssetsContainer; 33 | -------------------------------------------------------------------------------- /web/app/components/Icon/markets.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /web/app/components/Icon/unlocked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /web/app/components/Forms/MyAccounts.jsx: -------------------------------------------------------------------------------- 1 | import React, {Component} from "react"; 2 | import AccountStore from "stores/AccountStore"; 3 | import ChainTypes from "components/Utility/ChainTypes"; 4 | import AccountSelect from "components/Forms/AccountSelect"; 5 | import BindToChainState from "components/Utility/BindToChainState"; 6 | 7 | class MyAccounts extends Component { 8 | 9 | static propTypes = { 10 | accounts: ChainTypes.ChainAccountsList.isRequired, 11 | onChange: React.PropTypes.func.isRequired 12 | } 13 | 14 | render() { 15 | var account_names = this.props.accounts 16 | .filter( account => !!account ) 17 | .filter( account => AccountStore.isMyAccount(account) ) 18 | .map( account => account.get("name") ).sort(); 19 | 20 | return 21 | 23 | ; 24 | } 25 | 26 | onAccountSelect(account_name) { 27 | this.props.onChange(account_name); 28 | } 29 | } 30 | 31 | export default BindToChainState(MyAccounts, {keep_updating: true}); 32 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015 Cryptonomex, Inc., and contributors. 2 | 3 | The MIT License 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /web/app/components/Icon/cross-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /web/app/components/Icon/question-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /help/cn/dex/introduction.md: -------------------------------------------------------------------------------- 1 | # DEX去中心化交易所简介 2 | 3 | BitShares 去中心化交易所(简称*DEX*)允许用户在BitShares系统中直接进行数字商品的交易。 4 | 5 | 去中心化交易所相对于传统的中心化交易所拥有很多优势,文档中对其中一些特性进行简单介绍。BitShares DEX拥有的众多特性,用户可以根据自身需求来选择利用全部或者部分功能。 6 | 7 | * **权力分离**: 8 | 由同一个实体来发行资产(IOU)和处理订单是不合理,也是不必要的。在BitShares系统中,订单撮合是由网络协议执行,并不关心相关资产的内涵。 9 | * **全球整合的买卖盘**: 10 | 全世界任何人只要能访问互联网就能访问BitShares,并使用DEX进行交易。这使得全球的流动性汇聚到同一个去中心化的买卖盘市场。 11 | * **交易几乎任何标的**: 12 | BitShares DEX可交易的资产是不受限的。你可以交易**任何**交易对。尽管有些交易对市场深度可能很低,比如白银:黄金(SILVER:GOLD),而有些交易对则会非常活跃,交易量很大,比如外汇交易美元:欧元(USD:EUR)。 13 | * **乐趣无限**: 14 | BitShares协议将无法限制你的交易体验。 15 | * **去中心化**: 16 | DEX在全球都是去中心化的。这不仅意味着不存在单点失败,而且BitShares交易所全年无休,7/24开放交易,因为任何时间,在世界上总有一个地方是白天交易时间。 17 | * **安全性**: 18 | 你的资金和交易订单都由工业级别的椭圆曲线加密算法进行加密保护。没有人能够在未经你许可的情况下访问这些信息。我们还为用户提供了担保和多重签名机制进一步提高安全性。 19 | * **快捷**: 20 | 与其他去中心化网络相比,BitShares DEX可以实现实时交易,速度仅受制于光速和地球的大小。 21 | * **可自证的订单撮合算法**: 22 | 使BitShares DEX独一无二的是可自证的订单撮合算法。给定的一组交易订单,你总是可以验证这些订单是被正确的撮合,而不存在欺诈。 23 | * **抵押担保的智能资产(Smartcoins)**: 24 | BitShares一个最重要的特性是*智能资产(smartcoins)*,比如比特美元(bitUSD)、比特欧元(bitEUR)、比特人民币(bitCNY)等等。为了方便起见,系统中这些资产直接已美元(USD),欧元(EUR),人民币(CNY)表示。这些数字资产代表其对应物理货币的价值。钱包中的1比特美元等价于$1,可自由兑换。这些数字资产由BitShares公司股份(BTS)冻结抵押进行担保,并可按市价进行清算。 25 | -------------------------------------------------------------------------------- /web/app/assets/index-dev.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Graphene 9 | 10 | 23 | 24 | 25 |
26 |

Loading...

27 |
28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /web/app/components/Blockchain/AssetContainer.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import AccountStore from "stores/AccountStore"; 3 | import AssetStore from "stores/AssetStore"; 4 | import AltContainer from "alt-container"; 5 | import Asset from "./Asset"; 6 | 7 | class AssetContainer extends React.Component { 8 | 9 | render() { 10 | let symbol = this.props.params.symbol; 11 | return ( 12 | { 16 | return AssetStore.getState().assets; 17 | }, 18 | asset_symbol_to_id: () => { 19 | return AssetStore.getState().asset_symbol_to_id; 20 | }, 21 | accounts: () => { 22 | return AccountStore.getState().account_id_to_name; 23 | } 24 | }} 25 | > 26 | 27 | 28 | ); 29 | } 30 | } 31 | 32 | export default AssetContainer; 33 | -------------------------------------------------------------------------------- /docs/license.rst: -------------------------------------------------------------------------------- 1 | License 2 | ======= 3 | 4 | Copyright (c) 2015 Cryptonomex, Inc., and contributors. 5 | 6 | The MIT License 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | -------------------------------------------------------------------------------- /help/en/assets/mpa.md: -------------------------------------------------------------------------------- 1 | # Market Pegged Assets 2 | 3 | A crypto-currency, with the properties and advantages of Bitcoin, that is 4 | capable of maintaining price parity with a globally adopted currency (e.g. U.S. 5 | dollar), has high utility for convenient and censorship resistant commerce. This 6 | can be achieved by BitShares' market pegged assets (MPA), a new type of freely 7 | traded digital asset whose value is meant to track the value of a conventional 8 | underlying asset by means of contracts for difference (CFD). 9 | 10 | A *SmartCoin* (synonym for MPA) is a crypto-currency that *always* has 100% or 11 | more of its value backed by the BitShares core currency (BTS), to which they can 12 | be converted at any time, as *collateral* in a CFD. 13 | 14 | What makes MPAs unique is that they are free from counterparty risk even though 15 | they resemble a CFD backed by collateral. This is achievable by letting the 16 | network itself (implemented as a software protocol) be responsible for securing 17 | the collateral and performing settlements as will be described in more detail 18 | below. 19 | 20 | This is a subset of the available market pegged assets: 21 | * BitUSD 22 | * BitCNY 23 | * BitEUR 24 | * BitGOLD 25 | * ... 26 | -------------------------------------------------------------------------------- /web/app/components/Icon/layers.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/license.txt: -------------------------------------------------------------------------------- 1 | License 2 | ======= 3 | 4 | Copyright (c) 2015 Cryptonomex, Inc., and contributors. 5 | 6 | The MIT License 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | -------------------------------------------------------------------------------- /web/app/components/Settings/SettingsContainer.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import SettingsStore from "stores/SettingsStore"; 3 | import IntlStore from "stores/IntlStore"; 4 | import AltContainer from "alt-container"; 5 | import Settings from "./Settings"; 6 | 7 | class SettingsContainer extends React.Component { 8 | 9 | render() { 10 | 11 | return ( 12 | { 16 | return SettingsStore.getState().settings; 17 | }, 18 | viewSettings: () => { 19 | return SettingsStore.getState().viewSettings; 20 | }, 21 | defaults: () => { 22 | return SettingsStore.getState().defaults; 23 | }, 24 | localesObject: () => { 25 | return IntlStore.getState().localesObject; 26 | } 27 | }} 28 | > 29 | 30 | 31 | ); 32 | } 33 | } 34 | 35 | export default SettingsContainer; 36 | -------------------------------------------------------------------------------- /web/app/components/Icon/key.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /web/app/actions/WalletUnlockActions.js: -------------------------------------------------------------------------------- 1 | import alt from "alt-instance"; 2 | 3 | class WalletUnlockActions { 4 | 5 | /** If you get resolved then the wallet is or was just unlocked. If you get 6 | rejected then the wallet is still locked. 7 | 8 | @return nothing .. Just test for resolve() or reject() 9 | */ 10 | unlock() { 11 | return (dispatch) => { 12 | return new Promise( (resolve, reject) => { 13 | dispatch({resolve, reject}); 14 | }).then( was_unlocked => { 15 | //DEBUG console.log('... WalletUnlockStore\tmodal unlock') 16 | if(was_unlocked) WrappedWalletUnlockActions.change(); 17 | }); 18 | }; 19 | 20 | } 21 | 22 | lock() { 23 | return (dispatch) => { 24 | return new Promise( resolve => { 25 | dispatch({resolve}); 26 | }).then( was_unlocked => { 27 | if(was_unlocked) WrappedWalletUnlockActions.change(); 28 | }); 29 | }; 30 | } 31 | 32 | cancel() { 33 | return true; 34 | } 35 | 36 | change() { 37 | return true; 38 | } 39 | 40 | } 41 | 42 | var WrappedWalletUnlockActions = alt.createActions(WalletUnlockActions); 43 | export default WrappedWalletUnlockActions; 44 | -------------------------------------------------------------------------------- /web/app/components/Utility/FormattedFee.jsx: -------------------------------------------------------------------------------- 1 | import React, {PropTypes} from "react"; 2 | import FormattedAsset from "./FormattedAsset"; 3 | import ChainTypes from "./ChainTypes"; 4 | import BindToChainState from "./BindToChainState"; 5 | import utils from "common/utils"; 6 | 7 | /** 8 | * 9 | * Given an operation type, displays the CORE fee for that operation 10 | * 11 | */ 12 | 13 | class FormattedFee extends React.Component { 14 | 15 | static propTypes = { 16 | globalObject: ChainTypes.ChainObject.isRequired, 17 | opType: PropTypes.string, 18 | options: PropTypes.array 19 | }; 20 | 21 | static defaultProps = { 22 | globalObject: "2.0.0", 23 | options: [] 24 | }; 25 | 26 | getFee() { // Return fee via refs 27 | return utils.estimateFee(this.props.opType, this.props.options, this.props.globalObject); 28 | } 29 | 30 | render() { 31 | let {opType, options, globalObject} = this.props; 32 | 33 | if (!opType || !options || !globalObject) { 34 | return null; 35 | } 36 | 37 | let amount = utils.estimateFee(opType, options, globalObject); 38 | 39 | return ; 40 | } 41 | } 42 | 43 | export default BindToChainState(FormattedFee, {keep_updating: true}); 44 | -------------------------------------------------------------------------------- /help/en/index.md: -------------------------------------------------------------------------------- 1 | # Graphene Help 2 | 3 | BitShares 2.0 is a Financial Smart Contracts platform that is based on the 4 | [Graphene](https://github.com/cryptonomex/graphene) technology built by 5 | [Cryptonomex](http://cryptonomex.com). You can see Graphene as a toolkit or 6 | technology for real-time blockchains. 7 | 8 | This help section gives a brief overview and describes the most basic concepts 9 | of this application. 10 | 11 | ## Introduction 12 | * [BitShares](introduction/bitshares.md) 13 | * [Wallet](introduction/wallets.md) 14 | * [Backups](introduction/backups.md) 15 | * [Blockchain](introduction/blockchain.md) 16 | * [Witnesses](introduction/witness.md) 17 | * [Workers](introduction/workers.md) 18 | * [Committe Members](introduction/committee.md) 19 | 20 | ## Accounts 21 | * [Introduction](accounts/general.md) 22 | * [Permissions](accounts/permissions.md) 23 | * [Memberships](accounts/membership.md) 24 | 25 | ## Assets 26 | * [Market Pegged Assets](assets/mpa.md) (BitUSD, BitEUR, BitGOLD, Bit\*,...) 27 | * [User Issued Assets](assets/uia.md) 28 | * [Privatized BitAssets](assets/privbitassets.md) 29 | 30 | ## Decentralized Exchange 31 | * [Introduction](dex/introduction.md) 32 | * [Trading](dex/trading.md) 33 | * [Short Selling BitAssets](dex/shorting.md) 34 | 35 | ---------- 36 | [Glossary](glossary.md) 37 | -------------------------------------------------------------------------------- /web/app/components/Exchange/MarketsContainer.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import MarketsStore from "stores/MarketsStore"; 3 | import AssetStore from "stores/AssetStore"; 4 | import SettingsStore from "stores/SettingsStore"; 5 | import AltContainer from "alt-container"; 6 | import Markets from "./Markets"; 7 | 8 | class MarketsContainer extends React.Component { 9 | 10 | render() { 11 | 12 | return ( 13 | { 17 | return SettingsStore.getState().starredMarkets; 18 | }, 19 | viewSettings: () => { 20 | return SettingsStore.getState().viewSettings; 21 | }, 22 | lookupResults: () => { 23 | return AssetStore.getState().lookupResults; 24 | }, 25 | marketBase: () => { 26 | return MarketsStore.getState().marketBase; 27 | } 28 | }} 29 | > 30 | 31 | 32 | ); 33 | } 34 | } 35 | 36 | export default MarketsContainer; 37 | -------------------------------------------------------------------------------- /help/tr/assets/mpa.md: -------------------------------------------------------------------------------- 1 | # Piyasa Sabitli Aktifler (MPA-Market Pegged Assets) 2 | 3 | Bitcoin'e benzeyen özelliklerde ve avantajlarda, amerikan Doları gibi tüm dünya 4 | tarafından benimsenmiş bir parayla pariteyi koruyabilen bir kripto-paranın 5 | sansürsüz ve kolay bir ticaret için çok faydası vardır. Bu, BitShares'in 6 | piyasaya sabitli varlıkları (MPA) sayesinde mümkün olur. Bunlar, serbestçe 7 | alıp-satılabilen yeni bir tür dijital varlıklardır. Bunların değerleri, fark-kontratı (CFD) yöntemiyle 8 | dayandıkları geleneksel varlıkların değerlerini takip etmek üzere dizayn edilmişlerdir. 9 | 10 | *AkıllıPara* (eşanlamı MPA) , değerinin *daima* 100% yada daha fazlası BitShares'in 11 | ana para birimi (BTS) ile desteklenen bir kripto-paradır. Bu *AkıllıParalar* herhangi bir 12 | zamanda bir fark-kontratı (CFD) içinde *teminat* olarak BTS'ye dönüştürülebilirler . 13 | 14 | Teminatla desteklenen FK'nı andırmalarına rağmen PSV'leri nadir yapan şey 15 | onların karşı taraf riskinden muaf olmalarıdır. Bunun mümkün olması için teminatı 16 | güvence altına alma ve hesap görme işlemleri ağın kendi sorumluluğuna bırakılmıştır 17 | (yazılım protokolüyle uygulanarak) . Bu konunun detayları aşağıda 18 | anlatılacaktır. 19 | 20 | Bu, piyasaya-sabitli-varlıkların mevcut bir alt kümesidir: 21 | * BitUSD 22 | * BitCNY 23 | * BitEUR 24 | * BitGOLD 25 | * ... -------------------------------------------------------------------------------- /help/en/introduction/backups.md: -------------------------------------------------------------------------------- 1 | # Backups 2 | 3 | It is recommended to make regular backups of your wallet even though in most 4 | cases a single backup may be sufficient. Please note that in order to recover 5 | from a backup you will also need to provide the pass phrase because **backups 6 | are encrypted**. Hence, if you either lose your wallet or your pass phrase you 7 | will be unable to access any of your funds again! 8 | 9 | Backups can be obtain from the Wallet Management Console (`Settings -> 10 | Wallets`). 11 | 12 | ## Wallet Exports 13 | 14 | The most convenient way to create a new backup is by exporting the wallet with 15 | the provided link in the Wallet Management Console. Please store your backups 16 | safe from loss, theft, and natural catastrophes 17 | 18 | ## Brainkey (advanced users ONLY) 19 | 20 | If you never manually imported an account key into your wallet, you can 21 | alternatively backup your accounts and their funds by exporting the *brainkey*, 22 | a string of words from which your keys are derived deterministically. 23 | 24 | ## Remark: Hierarchical Authorities (advanced uses ONLY) 25 | 26 | If you are using hierarchical authorities (account and/or active permissions), 27 | backing up your keys alone may not be sufficient to regain access to your funds! 28 | Please revise the documentations about hierarchical authorities. 29 | -------------------------------------------------------------------------------- /web/app/api/DebugApi.js: -------------------------------------------------------------------------------- 1 | import { SerializerValidation, types} from "graphenejs-lib/es"; 2 | var config = require("chain/serializer_config"); 3 | 4 | class DebugApi { 5 | 6 | set_hex_dump(flag = !config.hex_dump) { 7 | return config.hex_dump = flag; 8 | } 9 | 10 | type(operation_name) { 11 | SerializerValidation.required(operation_name, "operation_name"); 12 | var operation_type = types[operation_name]; 13 | SerializerValidation.required(operation_type, "unknown operation name " + operation_name); 14 | return operation_type; 15 | } 16 | 17 | template(operation_name, debug = {use_default: true, annotate: false}) { 18 | var operation_type = this.type(operation_name); 19 | return operation_type.toObject(undefined, debug); 20 | } 21 | 22 | hex_dump(operation_name, object) { 23 | var operation_type = this.type(operation_name); 24 | SerializerValidation.required(object, "transaction json object"); 25 | var operation = operation_type.fromObject(object); 26 | var hex_dump = config.hex_dump; 27 | try { 28 | config.hex_dump = true; 29 | return operation_type.toObject(operation); 30 | } finally { 31 | config.hex_dump = hex_dump; 32 | } 33 | } 34 | 35 | } 36 | 37 | export default DebugApi; 38 | -------------------------------------------------------------------------------- /web/app/components/Icon/fees.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | Fill 119 10 | Created with Sketch. 11 | 18 | 19 | -------------------------------------------------------------------------------- /electron/build/vendor/electron_boilerplate/context_menu.js: -------------------------------------------------------------------------------- 1 | // This gives you default context menu (cut, copy, paste) 2 | // in all input fields and textareas across your app. 3 | 4 | (function () { 5 | 'use strict'; 6 | 7 | var remote = require('electron').remote; 8 | var Menu = remote.menu; 9 | var MenuItem = remote.MenuItem; 10 | 11 | var cut = new MenuItem({ 12 | label: "Cut", 13 | click: function () { 14 | document.execCommand("cut"); 15 | } 16 | }); 17 | 18 | var copy = new MenuItem({ 19 | label: "Copy", 20 | click: function () { 21 | document.execCommand("copy"); 22 | } 23 | }); 24 | 25 | var paste = new MenuItem({ 26 | label: "Paste", 27 | click: function () { 28 | document.execCommand("paste"); 29 | } 30 | }); 31 | 32 | var textMenu = new Menu(); 33 | textMenu.append(cut); 34 | textMenu.append(copy); 35 | textMenu.append(paste); 36 | 37 | document.addEventListener('contextmenu', function(e) { 38 | 39 | switch (e.target.nodeName) { 40 | case 'TEXTAREA': 41 | case 'INPUT': 42 | e.preventDefault(); 43 | textMenu.popup(remote.getCurrentWindow()); 44 | break; 45 | } 46 | 47 | }, false); 48 | 49 | }()); 50 | -------------------------------------------------------------------------------- /help/tr/index.md: -------------------------------------------------------------------------------- 1 | # Graphene Yardım 2 | 3 | BitShares 2.0 , [Cryptonomex](http://cryptonomex.com) tarafından inşa edilmiş olan 4 | [Graphene](https://github.com/cryptonomex/graphene) teknolojisine dayanan bir 5 | Finansal-Akıllı-Kontratlar platformudur. Graphene'i gerçek-zamanlı blokzincirleri için 6 | bir araç takımı yada bir teknoloji olarak da görebilirsiniz. 7 | 8 | Bu yardım bölümü özet bir genel bakış sağlar ve bu uygulamanın en temel 9 | kavramlarını tanımlar. 10 | 11 | ## Takdim 12 | * [BitShares](introduction/bitshares.md) 13 | * [Cüzdan](introduction/wallets.md) 14 | * [Yedekler](introduction/backups.md) 15 | * [Blokzinciri](introduction/blockchain.md) 16 | * [Tanıklar](introduction/witness.md) 17 | * [İşçiler](introduction/workers.md) 18 | * [Kurul Üyeleri](introduction/committee.md) 19 | 20 | ## Hesaplar 21 | * [Giriş](accounts/general.md) 22 | * [İzinler](accounts/permissions.md) 23 | * [Üyelikler](accounts/membership.md) 24 | 25 | ## Aktifler 26 | * [Piyasa Sabitli Varlıklar](assets/mpa.md) (BitUSD, BitEUR, BitGOLD, Bit\*,...) 27 | * [Kullanıcı Aktifleri](assets/uia.md) 28 | * [Özelleştirilmiş Varlıklar](assets/privbitassets.md) 29 | 30 | ## Merkezsiz/Dağıtık Borsa 31 | * [Giriş](dex/introduction.md) 32 | * [Alış/Satış](dex/trading.md) 33 | * [BitAktif Kısa Satışları](dex/shorting.md) 34 | 35 | ---------- 36 | [Terimler](glossary.md) -------------------------------------------------------------------------------- /bloom_filter/bloom.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # Matching exmaple: 4 | # ./bloom.py BTS87mopaNqLDjT1BvzqQR3QjWzWSTgkWnMcwt5sqxHuavCBi1s3m 5 | 6 | # Sample program by theoriticalbts used to create js implementation 7 | 8 | import hashlib 9 | import sys 10 | 11 | k = sys.argv[1] 12 | 13 | # specified with -s parameter 14 | size = 8388608 15 | 16 | # specified with -n parameter 17 | hashes = 3 18 | 19 | with open("bloom.dat", "rb") as f: 20 | filter_result = True 21 | 22 | for i in range(hashes): 23 | x = (str(i)+":"+k).encode("UTF-8") 24 | print("getting hash of ", repr(x)) 25 | hash = hashlib.sha256(x).hexdigest() 26 | print("hash value is ", repr(hash)) 27 | bit_address = int(hash, 16) % size 28 | print("bit address is", hex(bit_address)) 29 | byte_address = bit_address >> 3 30 | print("byte address is", hex(byte_address)) 31 | mask = 1 << (bit_address & 7) 32 | print("mask is", hex(mask)) 33 | f.seek(byte_address) 34 | b = f.read(1) 35 | print("byte is", hex(b[0])) 36 | # print("b[0] & mask", b[0] & mask) 37 | ok = (b[0] & mask) 38 | print("ok", ok, ok == 0) 39 | if ok == 0: 40 | filter_result = False 41 | print("returning False result") 42 | break 43 | print("filter_result is", filter_result) 44 | -------------------------------------------------------------------------------- /web/app/actions/NotificationActions.js: -------------------------------------------------------------------------------- 1 | import alt from "alt-instance"; 2 | 3 | class NotificationActions { 4 | 5 | addNotification(notification) { 6 | notification = normalize(notification); 7 | return notification; 8 | } 9 | 10 | // Creating aliases: success, error, warning and info 11 | 12 | success(notification) { 13 | notification = normalize(notification, "success"); 14 | return notification; 15 | } 16 | 17 | error(notification) { 18 | notification = normalize(notification, "error"); 19 | return notification; 20 | } 21 | 22 | warning(notification) { 23 | notification = normalize(notification, "warning"); 24 | return notification; 25 | } 26 | 27 | info(notification) { 28 | notification = normalize(notification, "info"); 29 | return notification; 30 | } 31 | } 32 | 33 | export default alt.createActions(NotificationActions); 34 | 35 | var normalize = (notification, level) => { 36 | if(typeof notification == "string") 37 | notification = {message: notification}; 38 | if(level) 39 | notification.level = level; 40 | // Adjust the css position for notices.. bottom messages can't be seen 41 | //if(notification.level === "success" && ! notification.position) 42 | // notification.position = 'br' //bottom right 43 | return notification; 44 | }; 45 | -------------------------------------------------------------------------------- /help/en/introduction/blockchain.md: -------------------------------------------------------------------------------- 1 | # Blockchain 2 | 3 | As most crypto currencies, Graphene makes use of a blockchain to update 4 | participants about transfers and market activities. Since blocks always refer to 5 | the previous block, we get a chain of blocks (blockchain) that contains all 6 | transactions every made in the network. Because the blockchain is a publicly 7 | accessible and auditable ledger, everyone can take a closer look and verify 8 | transfers as well as market orders and order books. 9 | 10 | Of course, this web wallet offers a block explorer to assist you with your 11 | audit. 12 | 13 | ## Consensus Mechanism 14 | 15 | Who exactly is allows to *produce* a block at which time instant is defined by a 16 | consensus mechanism called *Delegated Proof of Stake*. In essence, the 17 | shareholders of BitShares (holders of the BTS token) can cast a vote for their 18 | preferred block producers on the blockchain. Those so called *witnesses* with 19 | the most votes are allowed to produce blocks. 20 | 21 | ## Transactions 22 | 23 | The Graphene blockchain technology offers a variety of transaction types. Users 24 | are not only able to simply transfer assets between each other, but there are 25 | also transactions to interact with the decentralized exchange. Most of these 26 | transaction types are labeled with a self-explaining tag, others require more 27 | knowledge about the inner workings of the company. 28 | -------------------------------------------------------------------------------- /help/tr/introduction/backups.md: -------------------------------------------------------------------------------- 1 | # Yedeklemer 2 | 3 | Çoğu zaman tek bir yedekleme yeterli olsa bile cüzdanınızı düzenli bir şekilde 4 | yedeklemeniz önerilir. Bir yedeklemeden geri kurtarma yapabilmek için şifre 5 | cümlenize ihtiyacınız olduğunu unutmayın , çünkü **yedeklemeler kriptolanmıştır**. 6 | Dolayısıyla , cüzdanınızı yada şifre cümlenizi kaybederseniz fonlarınıza tekrar 7 | erişmeniz imkansız olur. 8 | 9 | Yedeklere Cüzdan Yönetim Panelinden ulaşabilirsiniz . 10 | (`Ayarlar ->Cüzdanlar`). 11 | 12 | ## Cüzdan İhracı 13 | 14 | Yeni bir yedekleme oluşturmanın en kolay yolu Cüzdan Yönetim Panelinde 15 | verilen bağlantıdan cüzdanı dışarı ihrac etmektir. Lütfen yedeklerinizi güvenli bir 16 | kaybetmekten, hırsızlıklardan, ve doğal afetlerden koruyunuz. 17 | 18 | ## Beyin-anahtarı (YALNIZCA gelişmiş kullanıcılar ) 19 | 20 | Eğer cüzdanınızın içine hiç hesap anahtarı aktarmadıysanız , alternatif olarak 21 | hesaplarınızı ve fonlarınızı dışarı *beyin-anahtarı* ihrac ederek yedekleyebilirsiniz. 22 | Beyin-anahtarı anahtarlarınızın deterministik yöntemle türetildiği bir kelimeler dizisidir. 23 | 24 | ## Dikkat : Hiyerarşik Yetkililer (SADECE uzman kullanıcılar) 25 | 26 | Eğer hiyerarşik yetkiler kullanıyorsanız (hesap ve/yada etkin izinler), 27 | sadece anahtarları yedeklemeniz fonlarınıza tekrar erişmenize yeterli olmayabilir! 28 | Lütfen hiyerarşik yetkiler konusundaki dokümantasyonları tekrar gözden geçirin. -------------------------------------------------------------------------------- /web/app/components/Icon/b-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /web/nginx.local.conf: -------------------------------------------------------------------------------- 1 | # This is an example nginx conf file that shows how to host the GUI locally using 2 | # nginx. This conf file assumes the complied html/javascript is located in /www/current/ 3 | 4 | worker_processes 4; 5 | 6 | events { 7 | worker_connections 1024; 8 | } 9 | 10 | http { 11 | include mime.types; 12 | default_type application/octet-stream; 13 | 14 | access_log /www/logs/access.log; 15 | error_log /www/logs/error.log; 16 | log_not_found off; 17 | 18 | sendfile on; 19 | 20 | keepalive_timeout 165; 21 | 22 | gzip on; 23 | 24 | server { 25 | listen 80; 26 | server_name 127.0.0.1; 27 | root /www/current/; 28 | 29 | ssl off; 30 | 31 | location ~ ^/(img|images|photo|photos|page|pages|uploads|countries|make|pic|foto|list|pictures|news|feed|rotated|carimg|category|reviews) { 32 | access_log off; 33 | return 404; 34 | } 35 | 36 | location ~ ^/[\w\d\.-]+\.(js|css|dat|png|json|ico)$ { 37 | access_log /www/logs/root_access.log; 38 | error_log /www/logs/root_error.log; 39 | try_files $uri 404; 40 | } 41 | 42 | location / { 43 | access_log /www/logs/root1_access.log; 44 | error_log /www/logs/root1_error.log; 45 | try_files $uri /index.html; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /web/app/actions/IntlActions.js: -------------------------------------------------------------------------------- 1 | var alt = require("alt-instance"); 2 | 3 | var locales = {}; 4 | if (__ELECTRON__) { 5 | ["cn", "de", "es", "fr", "ko", "tr"].forEach(locale => { 6 | locales[locale] = require("json-loader!assets/locales/locale-" + locale + ".json"); 7 | }); 8 | } 9 | 10 | class IntlActions { 11 | 12 | switchLocale(locale) { 13 | if (locale === "en") { 14 | return {locale}; 15 | } 16 | if (__ELECTRON__) { 17 | return { 18 | locale: locale, 19 | localeData: locales[locale] 20 | }; 21 | } else { 22 | return (dispatch) => { 23 | fetch("/locale-" + locale + ".json").then( (reply) => { 24 | return reply.json().then(result => { 25 | dispatch({ 26 | locale, 27 | localeData: result 28 | }); 29 | }); 30 | }).catch(err => { 31 | console.log("fetch locale error:", err); 32 | return (dispatch) => { 33 | dispatch({locale: "en"}); 34 | }; 35 | }); 36 | }; 37 | 38 | } 39 | } 40 | 41 | getLocale(locale) { 42 | return locale; 43 | } 44 | } 45 | 46 | export default alt.createActions(IntlActions); 47 | -------------------------------------------------------------------------------- /web/app/components/Dashboard/DashboardContainer.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import AccountStore from "stores/AccountStore"; 3 | import SettingsStore from "stores/SettingsStore"; 4 | 5 | import AltContainer from "alt-container"; 6 | import Dashboard from "./Dashboard"; 7 | 8 | class DashboardContainer extends React.Component { 9 | render() { 10 | return ( 11 | { 16 | //console.log( "Linked Accounts: ", AccountStore.getState().linkedAccounts, AccountStore.getState().linkedAccounts.toJS() ); 17 | // return Immutable.List(AccountStore.getState().linkedAccounts); 18 | // }, 19 | /** the dashboard only really needs the list of accounts */ 20 | linkedAccounts: () => { 21 | return AccountStore.getState().linkedAccounts; 22 | }, 23 | myIgnoredAccounts: () => { 24 | return AccountStore.getState().myIgnoredAccounts; 25 | } 26 | }}> 27 | 28 | 29 | ); 30 | } 31 | } 32 | 33 | export default DashboardContainer; 34 | -------------------------------------------------------------------------------- /web/app/components/Wallet/BalanceClaimAssetTotal.jsx: -------------------------------------------------------------------------------- 1 | import React, {Component} from "react"; 2 | import { connect } from "alt-react"; 3 | import BalanceClaimActiveStore from "stores/BalanceClaimActiveStore"; 4 | import FormattedAsset from "components/Utility/FormattedAsset"; 5 | import Translate from "react-translate-component"; 6 | 7 | class BalanceClaimAssetTotals extends Component { 8 | render() { 9 | 10 | if( this.props.balances === undefined ) 11 | return
; 12 | 13 | var total_by_asset = this.props.balances 14 | .groupBy( v => v.balance.asset_id ) 15 | .map( l => l.reduce( (r,v) => r + Number(v.balance.amount), 0 )); 16 | 17 | if( ! total_by_asset.size) 18 | return
None
; 19 | 20 | return
21 | {total_by_asset.map( (total, asset_id) => 22 |
23 | 24 |
25 | ).toArray()} 26 |
; 27 | } 28 | } 29 | 30 | BalanceClaimAssetTotals = connect(BalanceClaimAssetTotals, { 31 | listenTo() { 32 | return [BalanceClaimActiveStore]; 33 | }, 34 | getProps() { 35 | return BalanceClaimActiveStore.getState(); 36 | } 37 | }); 38 | 39 | export default BalanceClaimAssetTotals; 40 | -------------------------------------------------------------------------------- /web/app/components/Icon/Icon.jsx: -------------------------------------------------------------------------------- 1 | // look for more icons here https://linearicons.com/free or here http://hawcons.com/preview/ 2 | 3 | import React from "react"; 4 | 5 | let icons = ["user", "trash", "chevron-down", "menu", "database", "search", 6 | "plus-circle", "question-circle", "cross-circle", "cog", "layers", "users", "wand", "b-logo", 7 | "accounts", "witnesses", "assets", "proposals", "blocks", "committee_members", "workers", "key", 8 | "checkmark-circle", "checkmark", "piggy", "locked", "unlocked" , "markets", "fi-star" ,"fees", 9 | "thumb-tack", "clock"]; 10 | 11 | let icons_map = {}; 12 | for (let i of icons) icons_map[i] = require(`./${i}.svg`); 13 | 14 | require("./icon.scss"); 15 | 16 | class Icon extends React.Component { 17 | render() { 18 | let classes = "icon " + this.props.name; 19 | if(this.props.size) { 20 | classes += " icon-" + this.props.size; 21 | } 22 | if(this.props.className) { 23 | classes += " " + this.props.className; 24 | } 25 | return ; 26 | } 27 | } 28 | 29 | Icon.propTypes = { 30 | name: React.PropTypes.string.isRequired, 31 | size: React.PropTypes.oneOf(["1x", "2x", "3x", "4x", "5x", "10x"]), 32 | inverse: React.PropTypes.bool, 33 | className: React.PropTypes.string 34 | }; 35 | 36 | export default Icon; 37 | -------------------------------------------------------------------------------- /help/tr/introduction/blockchain.md: -------------------------------------------------------------------------------- 1 | # Blokzinciri 2 | 3 | Graphene de çoğu kripto para gibi , transferler ve piyasa hareketleriyle 4 | ilgili katılımcıları haberdar etmek için blokzincirinden faydalanır. 5 | Her blok bir önceki bloğu kaynak olarak gösterdiği için ağda daha önceden 6 | gerçekleşmiş tüm işlemleri içeren bir bloklar zinciri (blokzinciri) elde ederiz . Blokzinciri 7 | açık ve erişilebilir ve denetlenebilir bir defteri-kebir olduğundan , herkes transferlere, 8 | piyasa emirlerine ve sipariş defterlerine yakından bakabilir ve teyit edebilir. 9 | 10 | Tabii ki, bu web cüzdanı denetlemelerinize yardımcı olması için size bir blok 11 | araştırıcısı da sunmaktadır. 12 | 13 | ## Mutabakat Mekanizması 14 | 15 | Hangi anda ve kimin blok *üretmeye* izni olduğu , *Delegated Proof of Stake* 16 | (Yetkilendirilmiş-vekil-pay-ispatı) denilen mutabakat mekanizmasıyla belirlenir. 17 | Esasında, BitShares hissedarları (elinde BTS kuponu olan) tercih ettikleri blok 18 | üreticilerine blokzincirinde oy verebilirler. En çok oyu alan o *tanıklar*ın 19 | blokları üretmelerine izin verilir. 20 | 21 | ## İşlemler 22 | 23 | Graphene blokzinciri teknolojisi çeşitli işlem türleri sunmaktadır. Kullanıcılar 24 | aralarında aktiif transferleri yapabildikleri gibi dağıtık borsayla ilişkili 25 | işlemler de vardır. Bu işlem türlerinin bir çoğu kendini izah eden 26 | fişlerle etiketlenmişlerdir, diğer işlemler ise şirketin iç işleriyle alakalı daha çok 27 | bilgi gerektirir. -------------------------------------------------------------------------------- /web/app/components/Account/Statistics.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Translate from "react-translate-component"; 3 | import FormattedAsset from "../Utility/FormattedAsset"; 4 | import ChainTypes from "../Utility/ChainTypes"; 5 | import BindToChainState from "../Utility/BindToChainState"; 6 | 7 | class Statistics extends React.Component { 8 | 9 | static propTypes = { 10 | stat_object: ChainTypes.ChainObject.isRequired 11 | } 12 | 13 | render() { 14 | let stat_object = this.props.stat_object.toJS(); 15 | return ( 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | } 32 | } 33 | 34 | export default BindToChainState(Statistics, {keep_updating: true}); 35 | -------------------------------------------------------------------------------- /web/app/components/Settings/WalletSettings.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { ChangeActiveWallet, WalletDelete} from "../Wallet/WalletManager"; 3 | import BalanceClaimActive from "../Wallet/BalanceClaimActive"; 4 | import Translate from "react-translate-component"; 5 | 6 | export default class WalletSettings extends React.Component { 7 | 8 | constructor() { 9 | super(); 10 | 11 | this.state = { 12 | lookupActive: false 13 | }; 14 | } 15 | 16 | onLookup() { 17 | this.setState({ 18 | lookupActive: !this.state.lookupActive 19 | }); 20 | } 21 | 22 | render() { 23 | let {lookupActive} = this.state; 24 | 25 | return ( 26 |
27 | 28 | 29 | 30 |
31 |
:
32 | 33 |
34 |
35 | : 36 |
37 |
38 | Lookup balances 39 |
40 | 41 | 42 | {lookupActive ? : null} 43 | 44 |
45 | ); 46 | } 47 | }; 48 | -------------------------------------------------------------------------------- /web/__tests__/wallets/testnet-shared-private-keys-export.json: -------------------------------------------------------------------------------- 1 | { 2 | "password_checksum": "826df068457df5dd195b437ab7e7739ff75d2672183f02bb8e1089fabcf97bd9dc80110cf42dbc7cff41c78ecb68d8ba78abe6b5178dea3984df8c55541bf949", 3 | "account_keys": [{ 4 | "account_name": "nathan", 5 | "encrypted_private_keys": [ 6 | "d17eb9597431495939414d0f68ec336998ab4309d84279474f02a0ed023a1176c2347293647947924475a140a0ce5adc", 7 | "cdcddd398fc436161e2d6ceedcd75a0f19c5a0e2893b7aff0f5e4618c95570d109dea5257274599edcac0c3f14cd131e", 8 | "fec1d0974600443561f4f530570c9ffd50c9b8e593f174003c0a7286dd0d876d2e170bd3691abf7d2462298545e8cf61", 9 | "73b01de80c11e71a93c889c2091ec063cc6c6801e765cf562a9e1770b22910174dac93c89b78aaf5bdf79c5b7cbb223e", 10 | "43722a81ae98762b9d89401c4de071200e6e83ba237454620ea847e7a70f39c94cf85fc4562a5cc5cc7da557a915dc4d", 11 | "22e913f84ec14e3ec56605504d5330bc23724a2dda097aac89515bba2bfe04add5609f59d0319102adc56ee895e510b8", 12 | "8cffd72a96b27aa516ebc5426dae8fd3e5139d0cdb9caae5bd5281df96381bee85dd1f552f7f98b5fb5579b3f33f65d0", 13 | "69aedfa4e31e7aad614053258c27525c179bec3740e1163d73cedbb9d44fb35bd411a86959504703237b48f54aa24c77", 14 | "0c4c80139dc84ab5c2de32ed9515dc6a7d66fb826d0f5f6eec6b9e7037cfe85f8664781bb734872cc7a49f8c6d626d6d", 15 | "d410b1d3ecc29a46b22b577de5c1f9075382cc7ba669f9d286d8f23fcff5aff3ad38dec0ee3e4890e15652551cf99ba2", 16 | "b0cffcd4fabf01aefa199fc65346e88157cc736106da8ead1534ccd33c1eeeb0dd5d06d4707359084de596f46b49ad80" 17 | 18 | ] 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /web/app/components/Transfer/TransferPage.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import AccountStore from "stores/AccountStore"; 3 | import AssetStore from "stores/AssetStore"; 4 | import AltContainer from "alt-container"; 5 | import Transfer from "./Transfer"; 6 | 7 | class TransferPage extends React.Component { 8 | constructor(props) { 9 | super(props); 10 | } 11 | 12 | render() { 13 | return ( 14 | { 18 | return AccountStore.getState().cachedAccounts; 19 | }, 20 | myAccounts: () => { 21 | return AccountStore.getState().myAccounts; 22 | }, 23 | accountBalances: () => { 24 | return AccountStore.getState().balances; 25 | }, 26 | assets: () => { 27 | return AssetStore.getState().assets; 28 | }, 29 | account_name_to_id: () => { 30 | return AccountStore.getState().account_name_to_id; 31 | }, 32 | searchAccounts: () => { 33 | return AccountStore.getState().searchAccounts; 34 | } 35 | }}> 36 | 37 | 38 | ); 39 | } 40 | } 41 | 42 | 43 | export default TransferPage; 44 | -------------------------------------------------------------------------------- /web/server.js: -------------------------------------------------------------------------------- 1 | var path = require("path"); 2 | var webpack = require("webpack"); 3 | var express = require("express"); 4 | var devMiddleware = require("webpack-dev-middleware"); 5 | var hotMiddleware = require("webpack-hot-middleware"); 6 | 7 | var ProgressPlugin = require("webpack/lib/ProgressPlugin"); 8 | var config = require("./conf/webpack-dev"); 9 | 10 | var app = express(); 11 | var compiler = webpack(config); 12 | 13 | compiler.apply(new ProgressPlugin(function (percentage, msg) { 14 | process.stdout.write((percentage * 100).toFixed(2) + '% ' + msg + ' \033[0G'); 15 | })); 16 | 17 | app.use(devMiddleware(compiler, { 18 | publicPath: config.output.publicPath, 19 | historyApiFallback: true 20 | })); 21 | 22 | app.use(hotMiddleware(compiler)); 23 | 24 | app.get("*", function (req, res) { 25 | res.sendFile(path.join(__dirname, "app/assets/index-dev.html")); 26 | }); 27 | 28 | app.listen(8080, function (err) { 29 | if (err) { 30 | return console.error(err); 31 | } 32 | 33 | console.log("Listening at http://localhost:8080/"); 34 | }); 35 | 36 | // new WebpackDevServer(compiler, { 37 | // publicPath: config.output.publicPath, 38 | // hot: true, 39 | // historyApiFallback: true, 40 | // quiet: false, 41 | // stats: {colors: true}, 42 | // port: 8080 43 | // }).listen(8080, '0.0.0.0', function (err, result) { 44 | // if (err) { 45 | // console.log(err); 46 | // } 47 | // console.log('Listening at 0.0.0.0:8080'); 48 | // }); 49 | -------------------------------------------------------------------------------- /web/app/components/Account/Connections.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import {Link} from "react-router/es"; 3 | import Translate from "react-translate-component"; 4 | 5 | class Connections extends React.Component { 6 | 7 | render() { 8 | let {organizations, blackList, isMyAccount} = this.props; 9 | let knownBy = organizations ? organizations.map((account, i) => { 10 | if (i< 5) { 11 | return
  • X: {account}
  • ; 12 | } 13 | }) : null; 14 | 15 | let unwanted = blackList ? blackList.map((account, i) => { 16 | if (i< 5) { 17 | return
  • X: {account}
  • ; 18 | } 19 | }) : null; 20 | 21 | return ( 22 |
    23 |
    24 |
      25 | {knownBy} 26 |
    27 |
    28 |
    {isMyAccount ? : null} 29 |
      30 | {unwanted} 31 |
    32 |
    33 | ); 34 | } 35 | } 36 | 37 | export default Connections; 38 | -------------------------------------------------------------------------------- /web/app/components/Blockchain/LinkToAccountById.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import {Link} from "react-router/es"; 3 | import ChainTypes from "../Utility/ChainTypes"; 4 | import BindToChainState from "../Utility/BindToChainState"; 5 | 6 | class LinkToAccountById extends React.Component { 7 | 8 | static propTypes = { 9 | account: ChainTypes.ChainObject.isRequired, 10 | subpage: React.PropTypes.string.isRequired 11 | }; 12 | 13 | static defaultProps = { 14 | subpage: "overview" 15 | }; 16 | 17 | shouldComponentUpdate(nextProps) { 18 | // console.log("linkToAccountById:", nextProps.account.toJS()); 19 | if (nextProps.account.get("name") && this.props.account.get("name") && nextProps.account.get("name") === this.props.account.get("name")) { 20 | return false; 21 | } 22 | return true; 23 | } 24 | 25 | render() { 26 | let account_name = this.props.account.get("name"); 27 | if (!account_name) { 28 | console.log( "!account_name: ", this.props.account.toJS() ); 29 | return {this.props.account.get("id")}; 30 | } else { 31 | // console.log( "account_name exists: ", this.props.account.get("id"), this.props.account.get("name") ); 32 | } 33 | 34 | return {}} to={`/account/${account_name}/${this.props.subpage}/`}>{account_name}; 35 | } 36 | } 37 | 38 | export default BindToChainState(LinkToAccountById); 39 | -------------------------------------------------------------------------------- /help/en/components/AccountMembership.md: -------------------------------------------------------------------------------- 1 | [# lifetime] 2 | ### Get {feesCashback}% Cashback on Fees 3 | 4 | Lifetime Members get {feesCashback}% cashback on every transaction fee they pay and 5 | qualify to earn referral income from users they register with or refer to the network. A Lifetime Membership is just {price}. 6 | 7 | [# fee-division] 8 | #### Fee Division 9 | Every time {account} pays a transaction fee, that fee is divided among several different accounts. The network takes 10 | a {networkFee}% cut, and the Lifetime Member who referred {account} gets a {lifetimeFee}% cut. 11 | 12 | The _registrar_ is the account that paid the transaction fee to register {account} with the network. The registrar gets to decide how to 13 | divide the remaining {referrerTotalFee}% between themselves and their own _Affiliate Referrer_ program. 14 | 15 | {account}'s registrar chose to share {referrerFee}% of the total fee with the _Affiliate Referrer_ and keep {registrarFee}% of the total fee for themselves. 16 | 17 | 18 | #### Pending Fees 19 | Fees paid by {account} are only divided among the network, referrers, and registrars once every maintenance interval ({maintenanceInterval} seconds). The 20 | next maintenance time is {nextMaintenanceTime}. 21 | 22 | #### Vesting Fees 23 | 24 | Most fees are made available immediately, but fees over {vestingThreshold} 25 | (such as those paid to upgrade your membership or register a premium account name) must vest for a total of {vestingPeriod} days. 26 | -------------------------------------------------------------------------------- /web/app/assets/stylesheets/layout/_page_layout.scss: -------------------------------------------------------------------------------- 1 | .page-layout { 2 | 3 | > .grid-block { 4 | border-top: 1px solid transparent; 5 | border-bottom: 1px solid transparent; 6 | > .grid-content, > .grid-block { 7 | padding: 10px; 8 | } 9 | } 10 | 11 | .left-column { 12 | background-color: #fafafa; 13 | } 14 | 15 | .main-content { 16 | background-color: #f3f3f3; 17 | } 18 | 19 | .right-column { 20 | background-color: #eaeaea; 21 | } 22 | 23 | .regular-padding { 24 | padding: 1rem 1.75rem 1rem 1.75rem !important; 25 | } 26 | 27 | } 28 | 29 | #account-notify { 30 | position: absolute; 31 | top: auto !important; 32 | right: 0.5em; 33 | width: 30em; 34 | } 35 | 36 | @media (max-width: 1100px) { 37 | .hide-column-small { 38 | display: none !important; 39 | } 40 | } 41 | 42 | @media (max-width: 1300px) { 43 | .hide-column-large { 44 | display: none !important; 45 | } 46 | } 47 | 48 | div.bordered-header { 49 | text-transform: uppercase; 50 | font-size: 1.10rem; 51 | padding-left: 10px; 52 | padding-top: 0.55rem; 53 | font-weight: 500; 54 | overflow: hidden; 55 | } 56 | 57 | .exchange-bordered { 58 | border: 1px solid rgba(183, 183, 183, 0.29); 59 | 60 | div:first-child & { 61 | margin: 0 10px 0 10px; 62 | } 63 | 64 | div:last-child & { 65 | margin: 0 10px 0 10px; 66 | } 67 | } 68 | 69 | .generic-bordered-box { 70 | //border: 1px solid rgba(183, 183, 183, 0.29); 71 | 72 | .box-content { 73 | //padding-left: 10px; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /web/app/assets/stylesheets/components/_header.scss: -------------------------------------------------------------------------------- 1 | .header.menu-group { 2 | justify-content: flex-start; 3 | } 4 | 5 | .icon > svg { 6 | > path { 7 | fill : #fff; 8 | } 9 | } 10 | 11 | .float-left > span.icon.user { 12 | top: 0; 13 | } 14 | 15 | .header { 16 | padding-left: 0 !important; 17 | padding-right: 1rem; 18 | min-height: 48px; 19 | .menu-bar > li { 20 | display: list-item; 21 | padding: 0; 22 | > a { 23 | padding-left: 0.5rem; 24 | padding-right: 0.5rem; 25 | font-size: 0.9rem; 26 | @include breakpoint(large) { 27 | padding-left: 1.75rem; 28 | padding-right: 1.75rem; 29 | } 30 | } 31 | } 32 | } 33 | 34 | .grp-menu-items-group { 35 | flex-flow: row nowrap; 36 | display: flex; 37 | justify-content: flex-end; 38 | } 39 | 40 | .grp-menu-item { 41 | display: flex; 42 | flex-wrap: nowrap; 43 | align-items: center; 44 | .button:hover { 45 | background: #414141 !important; 46 | } 47 | > a, .button { 48 | color: #fff !important; 49 | padding: 0.5rem; 50 | @include breakpoint(large) { 51 | padding-left: 0.75rem; 52 | padding-right: 0.75rem; 53 | } 54 | font-size: 1rem; 55 | &:hover { 56 | background: #414141; 57 | color: #fff; 58 | } 59 | } 60 | } 61 | 62 | .user-icon > a { 63 | padding-left: 0.3rem; 64 | padding-right: 0.3rem; 65 | } 66 | 67 | .header .button.create-account { 68 | margin-left: 16px; 69 | 70 | > span { 71 | font-size: 14px; 72 | text-transform: capitalize; 73 | } 74 | } 75 | --------------------------------------------------------------------------------