From dcc681816fbe7ef344f5988c97333e2f5bc43883 Mon Sep 17 00:00:00 2001 From: yann300 Date: Thu, 23 Nov 2017 12:12:47 +0100 Subject: [PATCH] Update README.md --- README.md | 222 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 220 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bc05455439..49e9e34e43 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,227 @@ [![Join the chat at https://gitter.im/ethereum/remix](https://badges.gitter.im/ethereum/remix.svg)](https://gitter.im/ethereum/remix?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Ethereum IDE and tools for the web +## REMIX MODULES: + + +This repository contains 4 different modules: + +### remix-core +Provides: + + code: { + CodeManager: CodeManager, + BreakpointManager: BreakpointManager + }, + storage: { + StorageViewer: StorageViewer, + StorageResolver: StorageResolver + }, + trace: { + TraceManager: TraceManager + } + + +TraceManager is a convenient way to access a VM Trace and resolve some value from it. + +`TraceManager()` : + +`function resolveTrace(stepIndex, tx)` + +`function init(stepIndex, tx)` + +`function inRange(stepIndex, tx)` + +`function isLoaded(stepIndex, tx)` + +`function getLength(stepIndex, tx)` + +`function accumulateStorageChanges(stepIndex, tx)` + +`function getAddresses(stepIndex, tx)` + +`function getCallDataAt(stepIndex, tx)` + +`function getCallStackAt(stepIndex, tx)` + +`function getStackAt(stepIndex, tx)` + +`function getLastCallChangeSince(stepIndex, tx)` + +`function getCurrentCalledAddressAt(stepIndex, tx)` + +`function getContractCreationCode(stepIndex, tx)` + +`function getMemoryAt(stepIndex, tx)` + +`function getCurrentPC(stepIndex, tx)` + +`function getReturnValue(stepIndex, tx)` + +`function getCurrentStep(stepIndex, tx)` + +`function getMemExpand(stepIndex, tx)` + +`function getStepCost(stepIndex, tx)` + +`function getRemainingGas(stepIndex, tx)` + +`function getStepCost(stepIndex, tx)` + +`function isCreationStep(stepIndex, tx)` + +`function findStepOverBack(stepIndex, tx)` + +`function findStepOverForward(stepIndex, tx)` + +`function findStepOverBack(stepIndex, tx)` + +`function findNextCall(stepIndex, tx)` + +`function findStepOut(stepIndex, tx)` + +`function checkRequestedStep(stepIndex, tx)` + +`function waterfall(stepIndex, tx)` + + +- - - - + +`CodeManager(_traceManager)` : + +`function getCode(stepIndex, tx)` : +Resolve the code of the given @arg stepIndex and trigger appropriate event + +`function resolveStep(address, cb)` : +Retrieve the code located at the given @arg address + +`function getFunctionFromStep(stepIndex, sourceMap, ast)` : +Retrieve the called function for the current vm step + +`function getInstructionIndex(address, step, callback)` : +Retrieve the instruction index of the given @arg step + +`function getFunctionFromPC(address, pc, sourceMap, ast)` : +Retrieve the called function for the given @arg pc and @arg address + +- - - - + +`BreakpointManager(_ethdebugger, _locationToRowConverter)` : + +`function jumpNextBreakpoint(defaultToLimit)` : +start looking for the next breakpoint + +`function jumpPreviousBreakpoint(defaultToLimit)` : +start looking for the previous breakpoint + +`function jump(direction, defaultToLimit)` : +start looking for the previous or next breakpoint + +`function hasBreakpointAtLine((fileIndex, line)` : +check the given pair fileIndex/line against registered breakpoints + +`function hasBreakpoint()` : +return true if current manager has breakpoint + +`function add(sourceLocation)` : +add a new breakpoint to the manager + +`function remove(sourceLocation)` : +remove a breakpoint from the manager + +- - - - + +`StorageViewer(_context, _storageResolver, _traceManager)` : + +`function storageRange(defaultToLimit)` : +return the storage for the current context (address and vm trace index) + +`function storageSlot(defaultToLimit)` : +return a slot value for the current context (address and vm trace index) + +`function isComplete(direction, defaultToLimit)` : +return True if the storage at @arg address is complete + +`function initialMappingsLocation((fileIndex, line)` : +return all the possible mappings locations for the current context (cached) do not return state changes during the current transaction + +`function mappingsLocation()` : +return all the possible mappings locations for the current context (cached) and current mapping slot. returns state changes during the current transaction + +`function extractMappingsLocationChanges(sourceLocation)` : +retrieve mapping location changes from the storage changes. + +- - - - + +`StorageResolver()` : + +`function storageRange(tx, stepIndex, address, callback)` : +return the storage for the current context (address and vm trace index) + +`function initialPreimagesMappings(tx, stepIndex, address, callback)` : +return a slot value for the current context (address and vm trace index) + +`function storageSlot(slot, tx, stepIndex, address, callback)` : +return True if the storage at @arg address is complete + +`function isComplete(address)` : +return all the possible mappings locations for the current context (cached) do not return state changes during the current transaction + +### remix-lib +Provides: + + { + EventManager: EventManager, + helpers: { + trace: traceHelper, + ui: uiHelper + }, + vm: { + Web3Providers: Web3Providers, + DummyProvider: DummyProvider, + Web3VMProvider: Web3VMProvider + }, + SourceMappingDecoder: SourceMappingDecoder, + SourceLocationTracker: SourceLocationTracker, + init: init, + util: util, + AstWalker: AstWalker, + global: global, + ui: { + styleGuide: styleGuide + } + } + } + +### remix-solidity +Provides: + + { + InternalCallTree: InternalCallTree, + SolidityProxy: SolidityProxy, + localDecoder: localDecoder, + stateDecoder: stateDecoder, + CodeAnalysis: CodeAnalysis + } + +### remix-debugger +Provides: + + { + ui: { + Debugger: Debugger, + VMdebugger: VMDebugger, + BasicPanel: BasicPanel, + TreeView: TreeView + } + } + } + ## REMIX WEBSITE: -Remix is avalaible at http://ethereum.github.io/remix. Note that this repository hosts a debugger module. +Remix is avalaible at http://ethereum.github.io/remix. + +Note that this repository hosts a debugger module. The Remix IDE repository is at https://github.com/ethereum/browser-solidity and an online version is at http://remix.ethereum.org. You can use it either inside Mist or by connecting to geth or eth. @@ -35,7 +253,7 @@ Brief instructions to build for linux(Todo add other platforms) we will add deta Install eth or geth, npm and node.js (see https://docs.npmjs.com/getting-started/installing-node), then do: * `git clone https://github.com/ethereum/remix` -* `cd remix` +* `cd remix/remix-debugger` * `npm install` * `npm start`