Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
æScan is a blockchain explorer, analytics platform, and decentralized smart contract navigation platform based on æternity.
With æScan you can easily navigate between different features and live statistics of æternity blockchain: keyblocks, microblocks, accounts, transactions, smart contracts, names and tokens.
Blockchain data is retrieved from and .
Nuxt 3, Vue.js, Vite and Pinia provide the foundation for the project, enabling us to create a seamless and intuitive user experience with Server Side Rendering enabled.
First, download and install . Version 20 or higher is required.
Clone æScan repository
Install required dependencies with yarn
Copy content of .env.example file to .env
Run æScan in development mode with hot reload
A local instance of æScan will be available at http://localhost:8080.
Build and minify for production
Lint js and css files
Docker is used to run æScan in different deployment stages.
To build a docker image of æScan is required.
Three different deployment stages are available to test or use æScan:
Supports browsers only.
The core browser set targets the 2 most recent major versions of Chrome, Firefox, and Edge on a monthly basis and Safari on a yearly basis.
This project uses for e2e testing. Tests can be executed using the
command yarn e2e:open.
We welcome contributions to our repository! If you have an idea for a new feature or a fix for a bug, please feel free to open an issue and/or a pull request. We encourage you to read the full to learn more about the project structure, good practices and rules to follow.
Join and participate in discussions. Share your ideas, ask questions, and get involved!
Stay up-to-date on the latest developments in the æternity ecosystem by following us on social media.
Want to learn more about æternity and how it's revolutionizing the world of blockchain technology? Check out our website, Github repositories and blog for more information.
Production
https://aescan.io
https://testnet.aescan.io
Production environment deployed manually from the main branch by creating a release branch and merging an automatically created Release Pull Request.
Development
https://aescan.dev.service.aepps.com
https://aescan-testnet.dev.service.aepps.com
Development environment deployed automatically after every push to the develop branch.
PR preview
https://pr-[PR-id]-aescan.stg.service.aepps.com
https://pr-[PR-id]-aescan-testnet.stg.service.aepps.com
Pull Request preview deployed automatically after every commit to an open pull request.
git clone https://github.com/aeternity/aescan.gityarn installyarn devyarn buildyarn lintyarn install
docker build -t aescan .
docker run -p 80:80 aescanISC License
Copyright (c) 2023, æternity developers
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
Examples of behavior that contributes to a positive environment for our community include:
Demonstrating empathy and kindness toward other people
Being respectful of differing opinions, viewpoints, and experiences
Giving and gracefully accepting constructive feedback
Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
Examples of unacceptable behavior include:
The use of sexualized language or imagery, and sexual attention or advances of any kind
Trolling, insulting or derogatory comments, and personal or political attacks
Public or private harassment
Publishing others' private information, such as a physical or email address, without their explicit permission
Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the repository maintainers. All complaints will be reviewed and investigated promptly and fairly.
All repository maintainers are obligated to respect the privacy and security of the reporter of any incident.
Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
Community Impact: A violation through a single incident or series of actions.
Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
Community Impact: A serious violation of community standards, including sustained inappropriate behavior.
Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
Consequence: A permanent ban from any sort of public interaction within the community.
This Code of Conduct is adapted from the , version 2.1, available at.
Community Impact Guidelines were inspired by.
For answers to common questions about this code of conduct, see the FAQ at. Translations are available at.
Focusing on what is best not just for us as individuals, but for the overall community
Other conduct which could reasonably be considered inappropriate in a professional setting
Thank you for your interest in contributing to the Aescan project. Before submitting your contribution, please make sure to take a moment and read through the following guidelines:
In aeScan we are using a flavor of as our branching strategy. It is one of the most (if not the most) commonly used git branching strategies. The main branch represents the latest production-ready state of the code. The develop branch is containing the latest version of the code, which has been reviewed by the team, but may be unstable. Almost all of the development targeting the develop branch is happening on the feat/* and fix/* branches which after the code review process get merged back into the develop.
To stabilize the code and prepare for a production-ready release, a release/[VERSION] branch shall be created. The preferred way of fixing release issues is reproducing them in the develop branch, fixing them there, and cherry-picking by a release manager a fix to the release. If a bug is present in a release branch, but it's not reproducible in the
We will be using GitHub Issues for our public bug reports. We will keep a close eye on this and try to make it clear when we have an internal fix in progress. Before filing a new issue, try to make sure your problem doesn't already exist.
All bug reports should be reported through Github issues and contain the following information:
Release version of the application
Expected behavior
Current behavior
Additional images and/or videos presenting the issues, as well as known workarounds are much welcome.
All future requests should be reported through Github issues and contain the following information:
What problem does this feature solve?
Are there already available any alternative ways to achieve similar results? If yes, please, describe them
If you are planning to fix an issue present in our latest release or implement a new feature, please follow the simplified flow described below:
Create your own fork of the repository (maintainers may use the main repository).
Originate your new branch that will contain the changes from the develop branch.
Implement the changes. Respect currently implemented coding restrictions and guidelines.
Run code linting through npm run lint:fix command and correct any issues that couldn't be automatically fixed.
Push the new branch to your forked repository and open a Pull Request against the develop branch. Use the pattern for the PR name.
Wait until your Pull Request is approved by the required number of maintainers and all automated checks are green
Merge the pull request
Note: It's OK to have multiple small commits as you work on the PR - GitHub will automatically squash it before merging.
Requirements for adding a new feature:
If you resolving a specific issue, add feat(xxxx): [description] (xxxx is the issue id) in your PR title for a better release log, e.g. feat(360): add contract icons in Contracts view.
Provide a convincing reason to add this feature. Ideally, you should open a suggestion issue first and have it approved before working on it.
Requirements for fix of a bug:
In case you are resolving a specific issue, add fix(xxxx): [description] (xxxx is the issue id) in your PR title for a better release log, e.g. fix(420): filtering dropdown doesn't work on Safari.
Provide a detailed description of the bug in the PR. Live demo preferred.
For detailed information about our branching strategy or instructions on dealing with other scenarios, please read our Branching Strategy guidelines.
dist: contains built files that will be used for hosting the application using express.js webserver. The content of this directory is generated automatically during building process. Do not put there any files manually.
docs: contains basic project documentation in a form of markdown files.
public: contains static assets that are meant to be publically available with guaranteed path. As opposed to the assets stored in src directory, during building process the name of these files will stay unchanged.
src: contains the source code of the application. The codebase is written in ES2020.
assets: contains static assets that are meant to be publically available but the exact path will change with every build by adding an additional unique suffix to the name.
components: contains (mostly) reusable Vue components.
Thank you to all the people who already contributed to the aeScan! You can find the complete list of them on this page.
develophotfix/*release/[VERSION]All Pull Requests should be possibly small and focused on delivering the requested change. Treat refactoring tasks as feature requests. Refrain from implementing side fixes or refactoring inside in fix/* branches to allow for easy cherry-picking of these fixes to the release branches. Instead, move the scope requiring a refactor to a separate task. Merge your pull requests by squashing changes into a single PR, otherwise, the automatically-generated changelog will be clouded with chaotic information. For naming the Pull Requests and merge commits always use the conventional commits pattern. Put the id of the issue(s) that the PR resolves in the scope section of a PR e.g. feat(111): change the description. If the change you make refers to multiple issues, you can put all IDs separated by a comma e.g. fix(111,123,444): everything works again.
plugins: contains code for implementing third-party services, mostly related to tracking.
router: contains the definition of all routes available in the application and informs which views are associated to these routes.
stores: contains global data obtaining and storage structures implemented using Pinia
styles: contains global css snippets that are applied across the entire application.
utils: contains reusable helpers not directly tied to any specific business logic, and data adapters.
views: contains Vue components that represent all pages (known as views) of the application.
App.vue: is the root Vue component of the application.
main.js: is the entry point of the application where the critical subsystems are initialized.
server.js: is a simple express.js application used to serve the static data intended to use until the Server-side Rendering is fully implemented.
upgrade dependencies () ()
micro-blocks: be able to load older/newer transactions () ()
Mining pool dashboard fixes () ()
Mining Pools Listing 2 () ()
Advanced AE price history chart () ()
remove delisted coinstore from app () ()
state channels pagination pagination () ()
text content change () ()
remove delisted coinstore from app () ()
state channels pagination pagination () ()
release fixes () ()
text content change () ()
transactions pagination () ()
release fixes () ()
transactions pagination () ()
Filter transactions table by date 3 () ()
Increase statistics limit () ()
move v3 version string to env variables 2 () ()
Server handlers keyblocks 6 () ()
displaying auctions () ()
keyblocks e2e test () ()
release fixes 3 () ()
rename plausible env variable () ()
multi stage Docker build () ()
remove imports () ()
revert server handlers oracles 2 () ()
Server handlers aecoin () ()
expose port 8080 in Docker () ()
microblock detail UI () ()
Dex Trades per Token () ()
hyperchains support () ()
Show Block gas limit 2 () ()
upgrade dependencies () ()
e2e randomly failing () ()
Mixed controls of hints () ()
Name appears in Auction and Expired list () ()
Active accounts chart 2 () ()
Add entity id to page title () ()
hashrate chart () ()
improve e2e testing - charts () ()
defaul chart options () ()
page title printing () ()
UI fixes 2 () ()
e2e testing - filtering () ()
e2e testing improvements () ()
migrate names related endpoints to v3 () ()
Use nuxt-link () ()
Add N/A label for no query and response even () ()
code cleanup () ()
sanitize contract events () ()
Remove AE label from gas value () ()
DEX Trades General () ()
difficulty chart () ()
Display NFT time value () ()
e2e testing - edge cases () ()
Fixes 0.16.0 () ()
fixes 0.16.0 pt 2 () ()
Ae coin details () ()
AE coin markets () ()
Ae coin transactions () ()
change action naming () ()
add keyblock parameter () ()
Consider JS optimizations suggested by Lighthouse () ()
don't enforce https if http urls in env and related fixes 2 () ()
edit readme () ()
Add ISC license () ()
enable source maps in production () ()
Names chart page () ()
contract calls count () ()
Not found pages break the UI () ()
sentry config () ()
Blocks chart page () ()
Contract calls chart page () ()
Display all testnet tokens () ()
E2E testing () ()
nft template listing () ()
remove invisible noise in background-hero.svg () ()
Replace twitter icon for X () ()
Sanitize unhandled version values () ()
Hide token market cap () ()
internal Chain.spend values () ()
Migrate to v3 endpoints pt1 () ()
revert listed tokens do not appear () ()
Older button becomes broken in payingfor tx + UI fixes () ()
Separate direct file selection does not add files () ()
The full file path is not visible when Contract Files are uploaded () ()
Aligning in Custom pointers to chain names () ()
microblocks tabs visibility ()
add contract id to generalized account () ()
Add custom date picker to charts 2 () ()
Add dedicated columns to name tables () ()
Names charts () ()
Account tabs overflow () ()
add search by nft and shorten search placehodler () ()
double labels () ()
In Auction names pagination bug () ()
add microblocks transactions filtering () ()
Live update transaction details () ()
Layout fix () ()
microblocks tx counter at keyblock condensed () ()
On testnet some tokens have no name at all and clicking on their copy button looks broken () ()
Search does not work with hashes () ()
Add tab navigation () ()
Consider using feat view related utility classnames () ()
Contract Calls Chart () ()
Create a cell component to display block height and time () ()
Build fix attempt 3 () ()
fix routing after upgrade () ()
Account - Adjust transactions tab display only transactions performed by the account () ()
account activities () ()
link to token page for AEX-X classified tokens () ()
Remove temporary Lexon token constants () ()
application version in footer () ()
better title handling () ()
display state channel transactions count () ()
Nft details inventory tab () ()
display account details if accounts owns tokens and has never been seen on the network () ()
keyblock navigation condition ()
keyblock navigation condition () ()
nfts ordering () ()
account tokens () ()
adjust colors () ()
Adjust panels spacing () ()
app metrics and axios optimization () ()
ChannelSnapshotSolo wierd values () ()
display correct token holder values () ()
Keyblock height is missing in contract details panel () ()
Oracle response of OracleRespondTx transactions is not displayed correctly () ()
Add 500 error page () ()
lexon token listing () ()
empty name claims () ()
hotfix remove duplicate condition () ()
Add currently mined keyblock animation () ()
add missing page title hints improvements () ()
Adjust minimum desktop width and adjust navigation bar () ()
Implement switching to next/previous block on detail pages () ()
Add Middleware link to contract detail () ()
DataFailedState component does not work with pagination () ()
keyblock navigation error () ()
Low contrast of entity hint icon () ()
dashboard hints () ()
name details hints () ()
oracle details hints () ()
state channel details hints () ()
empty chip in contract call transactions ()
Fix border and select checkboxes () ()
Hints content revision for next release () ()
last query height () ()
api docs links () ()
release porting ci () ()
Content jumping in swiper on Iphone () ()
40: implement SSR cache for market stats ()
4: token holders on token details page () ()
add generalized Chip ()
cleanup to store ()
change order of navigation links ()
ci: pipelines concurrency () ()
custom AENS pointers in server side rendering () ()
fix typo after rebase ()
first release ()
final content adjustments before the release ()
display identicon for detail (8bfd9d7)
fetch dex tokens instead of hardcoded ones (efedad0)
fix constants (8dd4f72)
preselect fist value of select (27aebaa)
reuse global variable from constant directly (acf64b3)
show truncated version of contract ID in tokens table (c993c98)
simplify classname (9b9b41c)
update sdk to 13.0.0 (eb045f8)
missing import (61dee01)
missing limit (16888a4)
pagination style (ce1e588)
rewrite compositions to composition API (c2983fc)

