Homestead_9 – Contributing

Documentos Visualizados » Colabora Traduciendo » Homestead_9 – Contributing

Contributing

Help in whatever form is always more than welcome.

You can just start by Building from source and familiarizing yourself with the Architecture. If something strange happens, please report an issue (see below).

Once you get to know the technology, you can try to answer questions from other users (we do not always have time for that) either on cpp-ethereum gitter, stackexchange or just comment on issues.

If you are a C++ developer, you can help by submitting pull requests (see below).

We try to keep a list of good tasks to start with. Please get in contact on gitter if you have any questions or suggestions.

The backlog is kept in github issues with an overview in our waffle board.

The waffle board is also useful to keep track of pull requests pending reviews (if you switch the filter on the top right to “pull requests only”).

How to Report Issues

Please report issues against the specific projects using GitHub Issues:

Try to mention which version of the software you used and on which platform (Windows, MacOS, Linux, …), how you got into the situation (what did you do), what did you expect to happen and what actually happened.

How to Submit Pull Requests / Workflow

Set up your workspace using the Building from source instructions. To contribute you will need to fork/clone the repositories.

Please also respect the Coding Standards.

If you encounter any problems, please ask on gitter.

Create pull requests against the develop branch of the repository you made changes in. Try not to include any merges with the pull request and rebase if necessary. If you can set labels on a pull request, set it to please review and also ask for a review in gitter.

You can also do reviews on others’ pull requests. In this case either comment with “looks good” or set the label if you can. If at least one core developer apart from the author is confident about the change, it can be merged. If the reviewer thinks that corrections are necessary, they put he label got issues. If the author addressed all comments, they again put please review or comment appropriately.

Automation runs on Appveyor and TravisCI.

Thanks for helping and have fun!

Architecture

  • bench: trie benchmarking
  • cmake: cmake files for build system, contains specification of inter-dependencies
  • eth A command-line Ethereum full-node that can be controlled via RPC.
  • ethkey: stand-alone key management
  • ethminer: stand-alone ethash miner
  • ethvm: stand-alone EVM execution utility
  • evmjit: library for the EVM just-in-time compiler
  • libdevcore: data structures, utilities, rlp, trie, memory db
  • libdevcrypto: crypto primitives. Depends on libsecp256k1 and libcrypto++.
  • libp2p: core peer to peer networking implementation (excluding specific sub-protocols)
  • libethash: ethash mining POW algorithm implementation
  • libethash-cl: ethash mining code for GPU mining (OpenCL)
  • libethashseal: generic wrapper around the POW block seal engine. Also contains the genesis states for all ethash-based chains.
  • libethcore: collection of core data structures and concepts
  • libethereum: main consensus engine (minus EVM). Includes the State and BlockChain classes.
  • libevm: Ethereum Virtual Machine implementation (interpreter).
  • libevmasm: EVM assembly tools, also contains the optimizer.
  • libevmcore: elementary data structures of the EVM, opcodes, gas costs, …
  • libweb3jsonrpc: json-rpc server-side endpoint, provides http and IPC (unix socket, windows pipe) connectors
  • libwebthree: service connectors for ethereum, swarm/ipfs and whisper.
  • libwhisper: whisper implementation
  • rlp: stand-alone rlp en-/decoder
  • testeth: tests for the modules formerly within the libethereum repo
  • testweb3core: tests for the modules formerly within the libweb3core repo
  • testweb3: tests for the modules formerly within the webthree repo
  • utils/json_spirit: JSON parser written for Boost’s Spirit library.
  • utils/libscrypt: scrypt implementation
  • utils/secp256k1: implementation of the SECP 256k1 ECDSA signing algorithm.

Portability

The Ethereum C++ client code is exceedingly portable, and is being successfully used on a huge range of different operating systems and devices.

We continue to expand our range and are very open to pull-requests which add support for additional operating systems, compilers or devices.

Operating systems verified as working

  • Linux
    • Alpine Linux
    • Arch Linux
    • Debian 8 (Jessie and Stretch)
    • Fedora 20
    • Fedora 21
    • Fedora 22
    • openSUSE Leap 42.1
    • PureOS 2.1
    • Raspbian
    • Sailfish OS 2.0
    • Ubuntu 14.04 (Trusty)
    • Ubuntu 14.10 (Utopic)
    • Ubuntu 15.04 (Vivid)
    • Ubuntu 15.10 (Wily)
    • Ubuntu 16.04 (Xenial)
    • Ubuntu Touch
    • Ubuntu 15.04 MATE
  • BSD
    • FreeBSD
  • OS X
    • OS X Yosemite (10.10)
    • OS X El Capitan (10.11)
    • OS X 10.10 (Yosemite Server 4.0)
    • OS X 10.11 (Yosemite Server 5.0)
    • OS X 10.11 (Yosemite Server 5.1)
  • Windows
    • Windows 7
    • Windows 8
    • Windows 8.1
    • Windows 10
    • Windows Server 2012 R2

Operating systems – work in progress

  • Linux
    • Maemo
    • MeeGo
    • Tizen
  • BSD
    • iOS
    • tvOS
    • WatchOS
  • Android

Devices verified as working

  • All varieties of desktop and laptop devices (Windows, OS X, Desktop Linux)
    • 64-bit (with rebuilt binaries)
    • 32-bit (not official supported, but they work)
  • Smartphones
    • Linux
      • Jolla Phone
      • Meizu MX4 Ubuntu Edition
      • Nexus 5 (SailfishOS 2.0)
  • SBCs
    • Linux
      • BeagleBone Black
      • Odroid XU3
      • Project C.H.I.P.
      • Raspberry Pi Model A
      • Raspberry Pi Model B+
      • Raspberry Pi Zero
      • Raspberry Pi 2
      • Raspberry Pi 3
      • Wandboard Quad

Devices – work in progress

  • Smartwatches
    • Linux
      • Samsung Gear S2
    • BSD
      • Apple Watch
  • Smartphones
    • Linux
      • Nokia N9 (MeeGo)
      • Nokia N900 (Meemo)
      • Samsung Z1
      • Samsung Z3
    • Android
      • Samsung Galaxy S3
      • Samsung Galaxy S4
    • BSD
      • iPhone 3GS
      • iPhone 5
  • Developer phones
    • Linux
      • Samsung RD-210
      • Samsung RD-PQ
      • Samsung TM1
  • Tablets
    • Android
      • Samsung Galaxy Tab S 10.5
      • Nexus 7
    • BSD
      • iPad Air 2
  • SBCs
    • Linux
      • DragonBoard 410c
      • Intel Curie
      • Intel Edison
      • Intel NUC
      • Minnowboard Max
      • Odroid XU4

       

    Running

    Running eth without any argument will synchronise your node to the public blockchain. It is also possible to create or synchronise to another blockchain (see custom blockchain using eth).

    Interacting with your node can be done using either geth or the ethereum console:

    Using geth

    Using the ethereum console

    The ethereum console is a node.js application which connect to a running eth/geth node and provide access to the web3 object.

    It can be installed using npm:

    Note

    > npm install -g ethereum-console
    > ethconsole

    Note

    Usage:
    ethconsole [javascript file] [ipc socket]
    Connects to an ethereum node via ipc in order to control it remotely
    through global variable web3 (web3.admin is also present).
    If no arguments are given, connects to the default ipc socket
    and drops into interactive mode.
    Arguments:
    <ipc socket path> connect to the given ipc socket (use ipc://<path> if it does not end with .ipc)
    <javascript file> execute the given javascript file that has to end in .js non-interactively.
    The script has to call process.exit() in order to terminate the console.

You must be logged in to take the quiz.

Deja un comentario