cityofzion / neo-local Goto Github PK
View Code? Open in Web Editor NEWPersonal blockchain for NEO dApp development!
License: MIT License
Personal blockchain for NEO dApp development!
License: MIT License
We need to make Travis build/test also multi-os
https://docs.travis-ci.com/user/multi-os/
Because we need to support multi-os
The version badge in the README currently points at the tags Github page instead of the releases page.
Travis is having problems pulling gitlab neo-scan images
Errors like the links above when Travis is testing/building
https://travis-ci.org/CityOfZion/neo-local/builds/459142996
and
https://travis-ci.org/CityOfZion/neo-local/builds/459165307
Travis should run correctly and give 0 return code
N/A
N/A
Travis Linux
@ChristophK#0509 raised in #dev-general of Discord:
I've just switched to neo-local repo . Whenever I create a new wallet and want to reopen it, I get the error message: Could not open wallet: This wallet is currently vulnerable. Please execute the "reencrypt_wallet.py" script on this wallet before continuing.
This is due to an old version of neo-python being used within the stack, see:
Lines 29 to 39 in eddfc33
Bump to latest version, see releases:
Got this error for a while now, not sure what's the root of the problem.
Removed all images/containers, restarted docker, pulled latest branch, but that doesn't seem to resolve anything.
ERROR: for neo-nodes Cannot start service neo-nodes: driver failed programming external connectivity on endpoint neo-noCreating postgres ... done
.0.0.0:30336:tcp:172.18.0.3:30336: input/output error
ERROR: for neo-nodes Cannot start service neo-nodes: driver failed programming external connectivity on endpoint neo-nodes (f427c0b37614765e32aa5d69ee8fa9c015369598068cd7524355baa8020f1881): Error starting userland proxy: mkdir /port/tcp:0.0.0.0:30336:tcp:172.18.0.3:30336: input/output error
ERROR: Encountered errors while bringing up the project.
The neo-scan-api is not started by the CLI - fix this issue by adding it.
See the following for an example:
Could you, please, mount volume for chain sync for separate docker-compose run neo-python
calls to be synced, and also optional wallet path specification would be a great feature!
Command start is not pullimng the images.
Delete all (or each) images on your local disk.
Issue command ./neo-local start
No error should occur because neo-cli should pull all images necessary before starting them in containers
All
N/A
Linux, but should be all
neo-cli images from neo-local-privnet don't have the plugin SimplePolicy.
This will render wrong consensus mechanism.
This was reported by @belane
__
First, new transactions are filtered on arrive to the memory pool, here
https://github.com/neo-project/neo/blob/master/neo/Ledger/Blockchain.cs#L364
Then when the primary CN make a proposal for a new block, https://github.com/neo-project/neo/blob/master/neo/Consensus/ConsensusService.cs#L107 uses the policy to order the transactions.
And in AddTransaction is used to filter tx https://github.com/neo-project/neo/blob/master/neo/Consensus/ConsensusService.cs#L39
All this logic is in the plugin https://github.com/neo-project/neo-plugins/blob/master/SimplePolicy/SimplePolicyPlugin.cs
If you don't use the SimplePolicy, of course you can generate blocks, but you are not following the policy, I mean blocks of 500 tx, only 20 free tx per block, tx prioritized by fee,
__
Docker images 2.8 and above
@jeroenptrs mentioned that files added to the neo-python mounted volume do not appear in his container.
See:
Lines 23 to 25 in fb455db
The neo-nodes container is not started by the CLI - fix this issue by adding it.
See the following for an example:
The tests currently used within CI builds are written in bash scripts.
Convert them to Go.
We need to include some config files inside the bin releases
When the neo-local bin is executed, some containers need config files and we cannot know where are those files in the host filesystem.
So the solution is to use a packager that includes all external files inside the binary to be release.
That way we can use a virtual memory filesystem or write down to a known folder all those files.
Some part can be done with this:
https://github.com/gobuffalo/packr
Is your feature request related to a problem? Please describe.
Not related to a problem.
Describe the solution you'd like
A command (script) to bootstrap consensus nodes with an offline downloaded chain
Describe alternatives you've considered
Needs to be docker commands to be able to be integrated in the neo-local-cli
Additional context
In the end, all nodes need to sync to that chain.
Currently the CLI can only start containers with the following command:
neo-local start
It should also be able to remove all containers from the local machine with:
neo-local destroy
I think it would be more useful to warn users // ask if they really want to remove the old containers or simply reconnect.
I think a better development workflow would be to provide a simple way to start all the services, and then another command to attach to it.
make start
should start the containersmake attach
should attach to the neo-python promptvia @revett: make start should be smart enough to work out if there are containers already running and then give the user the option to remove them or not.
Describe the solution you'd like
Currently travis tests only the number of containers running.
Describe alternatives you've considered
Travis should test the services running inside containers
The new approach to having a separate container for each consensus node is undocumented.
Describe the bug
I found the bug when I worked on Cgas and Cneo contracts. Neoscan does not read outputs and asset transfers in invocation transactions.
For example:
I send a Cgas mint invocation with 10 NEO. In the chain it works but Neoscan does not show the transfer and correct balance.
The notifications-server container is not started by the CLI - fix this issue by adding it.
See the following for an example:
So i'm running make start
, but I don't see the bottom toolbar in neo-python, which shows the network and block height.
This is pretty important to have.
OS: macOS Sierra
via @revett: Hmm that is an interesting one ๐ค
I wonder if this is because docker exec
is used to attach to the container.
Context: https://github.com/neoauth/neo-local/blob/0714b9b382d3c6076423a0f58c86d32b7044b916/Makefile#L18
See #43 for hotfix PR.
Nightly builds started failing on the 7th September, the day after the latest release of neo-python was cut.
See the neo-python changelog: https://github.com/CityOfZion/neo-python/blob/master/CHANGELOG.rst#078-2018-09-06
Needs investigating locally and fixing either in this project or neo-python.
The neo-scan-sync container is not started by the CLI - fix this issue by adding it.
See the following for an example:
How can I use this on Windows? Add some documentation. There is no reason that shouldn't be possible -- Docker works just fine, and a lot of devs actually use Windows.
So I think documentation on how to get the setup up and running on Windows is quite critical to reach the full potential of this setup.
via @revett: Is there a make equivalent for Windows?
The neo-python container is not started by the CLI - fix this issue by adding it.
See the following for an example:
The CLI cannot show the status of all the containers that are currently running in the stack, this should be implemented under the following command:
neo-local status
Is your feature request related to a problem? Please describe.
Make it work offline when you already have the necessary images.
When using make start
offline, it fails trying to download the images even when they are already available locally.
Describe the solution you'd like
Perhaps make start-offline
Describe alternatives you've considered
It fails in https://github.com/CityOfZion/neo-local/blob/master/Makefile#L26, if you comment this line works as workarround.
Been getting a few remarks from Windows users that the environment configuration doesn't work.
They keep getting waiting for network.................................
, also switching to a local or public IP doesn't seem to work.
Effect AI already does this https://github.com/effectai/neo-dev-toolkit/blob/master/docker-compose.yml and we can always keep the neo-privatenet docker image for developers that need a quick setup, but this caters to more use cases:
These two key points are more easily possible if we break out the consensus nodes in separate dockers.
The CLI is not using the project's version from the VERSION
file in the root of the directory.
See: https://github.com/CityOfZion/neo-local/blob/master/VERSION
It instead has to manually set it's version within the main.go
, see:
Lines 13 to 47 in 046c115
This is annoying as you tend to forget to bump both, and the CI build on checks against one of them.
Pass the value of VERSION
through when building the CLI.
See this gist for documentation on how to achieve this: https://gist.github.com/marz619/e91796afa5a951c0aa4595d7e73d78d0
When running make start
, the step which shows [neo-local] Waiting for network...................
takes too long, like 2 minutes or even more. Why is that? Doesn't seem necessary. The original privnet container starts immediately, so does neo-python.
Bump up the neo-python container to use the new version released.
0.8.2
When CLI starts containers must have a logic to test if a dependent container is already up and running.
Some services need other containers to start first. Like neo-scan with postgres.
On docker-compose this is achieved with: depends_on
CLI needs to mimic the same concept
This must be done with Health (Healthcheck) and ContainerState
Nightly builds are consistently failing due to a time out issue.
THIS IS A FEATURE TO BE AVAILABLE AFTER 4-ISOLATED-CONSENSUS-NODES HAD BEEN MERGED TO MASTER
Is your feature request related to a problem? Please describe.
New feature
Describe the solution you'd like
Until now we only have nodes with a 3k long blockchain. The idea is to make possible to load a full testnet image for each node.
Additional context
This is still a privanetenet, but mimics a full testnet in a local environment
Using CLI, if we have two containers with the same docker image, like neo-python and notifications-server the name of the containers are the same.
Create/merge both PR for adding neo-python and notification-server and rum the CLI.
The name of the containers cannot be based on the image names.
Needs to have a service name.
All
No, it's CLI
All
N/A
TLDR: The nightly builds are failing due to a timeout.
See build #296 as an example.
The nightly builds starts the Compose stack and then runs a test to check that all of the containers have been started and are still running. During the Compose stack starting, it will wait for NeoScan to start. This is what is timing out in the build.
The neo-faucet container is not started by the CLI - fix this issue by adding it.
See the following for an example:
Example: https://travis-ci.org/CityOfZion/neo-local/builds/409058230
CI builds on the master branch or a tag should ignore the make check-version
check as that should apply to a feature branch.
See:
Lines 1 to 12 in fb455db
Would be great to add the faucet to this setup. Would be very useful for workshops.
Unfortunately Makefiles are not easily supported in the platform 90% of the developers of the world use.
Not related to stack isolation flags since @deanpress fixed this, so a token contract succesfully deploys on neo-local, neoscan just halts syncing the second you mint tokens in a token sale context
Is your feature request related to a problem? Please describe.
This service/tool will help explore the NEO API with a simple browsing experience.
It will give users/developers a way query (make API calls) the nodes via browser using forms.
We can see similar services for bitcoin here http://chainquery.com/bitcoin-api
Describe the solution you'd like
The site will be like a wiki of all API calls. Easy to navigate and fast.
Should be build with static pages using a static page generator, like Hugo.
Describe alternatives you've considered
Using PHP and mysql, but that will just make it more complex without any advantage.
I have these, adding them in tonight.
Travis runs a CI job open each commit within a PR. However it does not update the status of that build from the orange pending
state to the red failed
state or the green success
state.
Currently we make a new release for every merge to master, which is kind of ridiculous...
It adds adds unnecessary admin overhead to the project and users don't have a clear idea of when a new release contains a README change compared to a new Docker service.
Should we follow git flow?
See: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
New release of neo-python:
https://github.com/CityOfZion/neo-python/blob/master/CHANGELOG.rst#080-2018-09-28
This project should be updated (Compose stack and CLI) to use it.
This project pins the version of the Docker images it uses because of breaking changes that occur in upstream projects that it consumes.
This however means that it regularly falls out of date as these projects regularly post updates.
It would be good to have automated tests to check that the Docker image versions are the latest.
These test should be run within the nightly test suite.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.