Node of the decentralized oracle network, bridging on and off-chain computation


Chainlink logo


GitHub tag (latest SemVer) GitHub license GitHub workflow changelog CircleCI build GitHub contributors GitHub commit activity

Chainlink is middleware to simplify communication with blockchains. Here you'll find the Chainlink Golang node, currently in alpha. This initial implementation is intended for use and review by developers, and will go on to form the basis for Chainlink's decentralized oracle network. Further development of the Chainlink Node and Chainlink Network will happen here, if you are interested in contributing please see our contribution guidelines.

Features

  • easy connectivity of on-chain contracts to any off-chain computation or API
  • multiple methods for scheduling both on-chain and off-chain computation for a user's smart contract
  • automatic gas price bumping to prevent stuck transactions, assuring your data is delivered in a timely manner
  • push notification of smart contract state changes to off-chain systems, by tracking Ethereum logs
  • translation of various off-chain data types into EVM consumable types and transactions
  • easy to implement smart contract libraries for connecting smart contracts directly to their preferred oracles
  • easy to install node, which runs natively across operating systems, blazingly fast, and with a low memory footprint

Examples of how to utilize and integrate Chainlinks can be found in the Chainlink Truffle Box.

Community

Chainlink has an active and ever growing community. Discord is the primary communication channel used for day to day communication, answering development questions, and aggregating Chainlink related content. Take a look at the community docs for more information regarding Chainlink social accounts, news, and networking.

Install

  1. Install Go 1.17, and add your GOPATH's bin directory to your PATH
    • Example Path for macOS export PATH=$GOPATH/bin:$PATH & export GOPATH=/Users/$USER/go
  2. Install NodeJS 12.22 & Yarn
    • It might be easier long term to use nvm to switch between node versions for different projects: nvm install 12.22 && nvm use 12.22
  3. Install Postgres (>= 11.x).
  4. Download Chainlink: git clone https://github.com/smartcontractkit/chainlink && cd chainlink
  5. Build and install Chainlink: make install
    • If you got any errors regarding locked yarn package, try running yarn install before this step
    • If yarn install throws a network connection error, try increasing the network timeout by running yarn install --network-timeout 150000 before this step
  6. Run the node: chainlink help

Ethereum Node Requirements

In order to run the Chainlink node you must have access to a running Ethereum node with an open websocket connection. Any Ethereum based network will work once you've configured the chain ID. Ethereum node versions currently tested and supported:

Run

NOTE: By default, chainlink will run in TLS mode. For local development you can either disable this by setting CHAINLINK_DEV to true, or generate self signed certificates using tools/bin/self-signed-certs or manually.

To start your Chainlink node, simply run:

chainlink node start

By default this will start on port 6688, where it exposes a REST API.

Once your node has started, you can view your current jobs with:

chainlink jobs list

View details of a specific job with:

chainlink job show [$JOB_ID]

To find out more about the Chainlink CLI, you can always run chainlink help.

Check out the doc pages on Jobs to learn more about how to create Jobs.

Configure

You can configure your node's behavior by setting environment variables. All the environment variables can be found in the ConfigSchema struct of schema.go. You can also read the official documentation to learn the most up to date information on each of them. For every variable, default values get used if no corresponding environment variable is found.

Project Structure

Chainlink is a monorepo containing several logically separatable and relatable projects.

External Adapters

External adapters are what make Chainlink easily extensible, providing simple integration of custom computations and specialized APIs. A Chainlink node communicates with external adapters via a simple REST API.

For more information on creating and using external adapters, please see our external adapters page.

Development Setup

For the latest information on setting up a development environment, see the guide here.

Build your current version

go build -o chainlink ./core/
  • Run the binary:
./chainlink

Test Core

  1. Install Yarn

  2. Install gencodec and jq to be able to run go generate ./... and make abigen

  3. Install mockery

make mockery

Using the make command will install the correct version.

  1. Build contracts:
yarn
yarn setup:contracts
  1. Generate and compile static assets:
go generate ./...
  1. Prepare your development environment:
export DATABASE_URL=postgresql://127.0.0.1:5432/chainlink_test?sslmode=disable
export CHAINLINK_DEV=true # I prefer to use direnv and skip this
  1. Drop/Create test database and run migrations:
go run ./core/main.go local db preparetest

If you do end up modifying the migrations for the database, you will need to rerun

  1. Run tests:
go test -parallel=1 ./...

Solidity Development

Inside the contracts/ directory:

  1. Install dependencies:
yarn
  1. Run tests:
yarn test

Use of Go Generate

Go generate is used to generate mocks in this project. Mocks are generated with mockery and live in core/internal/mocks.

Nix Flake

A flake is provided for use with the Nix package manager. It defines a declarative, reproducible development environment.

To use it:

  1. Nix has to be installed with flake support.
  2. Run nix develop. You will be put in shell containing all the dependencies. Alternatively, a direnv integration exists to automatically change the environment when cd-ing into the folder.
  3. Create a local postgres database:
cd $PGDATA/
initdb
pg_ctl -l $PGDATA/postgres.log -o "--unix_socket_directories='$PWD'" start
createdb chainlink_test -h localhost
createuser --superuser --no-password chainlink -h localhost
  1. Start postgres, pg_ctl -l $PGDATA/postgres.log -o "--unix_socket_directories='$PWD'" start

Now you can run tests or compile code as usual.

Development Tips

For more tips on how to build and test Chainlink, see our development tips page.

Contributing

Chainlink's source code is licensed under the MIT License, and contributions are welcome.

Please check out our contributing guidelines for more details.

Thank you!

License

MIT

Comments
  • [merged] Implements `DeleteBridge` mutation

    [merged] Implements `DeleteBridge` mutation

    Closes: https://app.shortcut.com/chainlinklabs/story/20880/implement-delete-bridge-gql-mutation

    This aims to create a mutation that will allow the deletion of bridges by name.

  • new config docs

    new config docs

    Generated Docs for new TOML config https://app.shortcut.com/chainlinklabs/story/33616/automatically-generated-documentation-for-new-configuration-struct-for-config-toml https://app.shortcut.com/chainlinklabs/story/43194/toml-support-units-for-wei-fields https://app.shortcut.com/chainlinklabs/story/11091/chain-configs-might-want-to-move-to-toml-json-files

    It is currently generating MarkDown to match docs.chain.link, which is directly usable in both repos.

    • [x] TOML source of truth (core/services/chainlink/cmd/doc/config.toml)
    • [x] auto generated MarkDown (make config > https://github.com/smartcontractkit/chainlink/blob/sc-33616-config-doc/docs/CONFIG.md)
    • [x] test failure if docs are out of date or invalid
    Example Error
    $ make config-docs 
    go run ./internal/config/docs/main.go > ./docs/CONFIG.md
    invalid config docs: 196 errors:
            - Database.TriggerFallbackDBPollInterval: missing description
            - Database.TriggerFallbackDBPollInterval: is neither a "# Default" or "# Example"
            - Database.Backup.OnVersionUpgrade: missing description
            - Database.Backup.OnVersionUpgrade: is neither a "# Default" or "# Example"
            - Database.Backup.URL: is neither a "# Default" or "# Example"
    ...
            - Terra.MaxMsgsPerBatch: is neither a "# Default" or "# Example"
            - Terra.OCR2CachePollPeriod: missing description
            - Terra.OCR2CachePollPeriod: is neither a "# Default" or "# Example"
            - Terra.OCR2CacheTTL: missing description
            - Terra.OCR2CacheTTL: is neither a "# Default" or "# Example"
            - Terra.TxMsgTimeout: missing description
            - Terra.TxMsgTimeout: is neither a "# Default" or "# Example"
            - Terra.Nodes.Name: missing description
            - Terra.Nodes.Name: is neither a "# Default" or "# Example"
            - Terra.Nodes.TendermintURL: missing description
            - Terra.Nodes.TendermintURL: is neither a "# Default" or "# Example"
            - Terra.Nodes.Name: missing description
            - Terra.Nodes.Name: is neither a "# Default" or "# Example"
            - Terra.Nodes.TendermintURL: missing description
            - Terra.Nodes.TendermintURL: is neither a "# Default" or "# Example"
            - Terra.Nodes.Name: missing description
            - Terra.Nodes.Name: is neither a "# Default" or "# Example"
            - Terra.Nodes.TendermintURL: missing description
            - Terra.Nodes.TendermintURL: is neither a "# Default" or "# Example"
    exit status 1
    make: *** [GNUmakefile:111: config-docs] Error 1
    
    • [x] all docs from docs.chain.link copied (https://github.com/smartcontractkit/documentation/blob/main/docs/Node%20Operators/configuration-variables.md?plain=1)
    • [x] all fields documented: ~50 remaining (:shrug: :detective:)~
    • [x] include chain specific defaults somehow (list of collapsible <details><summary> panels? example: https://github.com/smartcontractkit/chainlink/pull/6730/files#r891156386)
    • [ ] ~test to validate default values (and example values if no default)~ deferred until we have proper default initialization with https://app.shortcut.com/chainlinklabs/story/33615/create-new-implementation-of-chainscopedconfig-generalconfig-interfaces-that-sources-config-from-a-config-toml-file
    • [x] test for complete coverage (all fields included)
    Example Errors
    --- FAIL: TestDoc (0.00s)
        docs_test.go:26: Docs contain extra fields: undecoded keys: ["Database.Backup.Freqeuncy" "FMDefaultTransactionQueueDepth" "FMSimulateTransactions" "JobPipeline.DefaultHTTPRequestLimit" "JobPipeline.FeatureExternalInitiators" "P2P.V1.BootstrapPeers" "P2P.V2.Bootstrappers" "WebServer.AuthenticatedRateLimit" "WebServer.AuthenticatedRateLimitPeriod" "WebServer.Port" "WebServer.TLS.TLSCertPath" "WebServer.TLS.TLSHost" "WebServer.TLS.TLSKeyPath" "WebServer.TLS.TLSPort" "WebServer.TLS.TLSRedirect" "WebServer.UnAuthenticatedRateLimit" "WebServer.UnAuthenticatedRateLimitPeriod"]
        docs_test.go:32: 
                    Error Trace:    docs_test.go:32
                    Error:          Received unexpected error:
                                    the following errors occurred:
                                     -  Database.Backup.Frequency: missing from documentation
                                     -  WebServer.HTTPPort: missing from documentation
                                     -  WebServer.RateLimit: missing from documentation
                                     -  WebServer.TLS.CertPath: missing from documentation
                                     -  WebServer.TLS.ForceRedirect: missing from documentation
                                     -  WebServer.TLS.Host: missing from documentation
                                     -  WebServer.TLS.HTTPSPort: missing from documentation
                                     -  WebServer.TLS.KeyPath: missing from documentation
                                     -  JobPipeline.ExternalInitiatorsEnabled: missing from documentation
                                     -  JobPipeline.HTTPRequestMaxSizeBytes: missing from documentation
                                     -  FluxMonitor: missing from documentation
                                     -  OCR.TraceLogging: missing from documentation
                                     -  P2P.V1.DefaultBootstrapPeers: missing from documentation
                                     -  P2P.V2.DefaultBootstrappers: missing from documentation
                                     -  EVM.Enabled: missing from documentation
                                     -  EVM.GasBumpThreshold: missing from documentation
                                     -  EVM.GasLimitTransfer: missing from documentation
                                     -  EVM.OCRObservationTimeout: missing from documentation
                                     -  EVM.Nodes.SendOnly: missing from documentation
                                     -  EVM.Nodes.SendOnly: missing from documentation
                                     -  EVM.Nodes.WSURL: missing from documentation
                                     -  Terra.Enabled: missing from documentation
                    Test:           TestDoc
                    Messages:       
                                            - Database.Backup.Frequency: missing from documentation
                                            - WebServer.HTTPPort: missing from documentation
                                            - WebServer.RateLimit: missing from documentation
                                            - WebServer.TLS.CertPath: missing from documentation
                                            - WebServer.TLS.ForceRedirect: missing from documentation
                                            - WebServer.TLS.Host: missing from documentation
                                            - WebServer.TLS.HTTPSPort: missing from documentation
                                            - WebServer.TLS.KeyPath: missing from documentation
                                            - JobPipeline.ExternalInitiatorsEnabled: missing from documentation
                                            - JobPipeline.HTTPRequestMaxSizeBytes: missing from documentation
                                            - FluxMonitor: missing from documentation
                                            - OCR.TraceLogging: missing from documentation
                                            - P2P.V1.DefaultBootstrapPeers: missing from documentation
                                            - P2P.V2.DefaultBootstrappers: missing from documentation
                                            - EVM.Enabled: missing from documentation
                                            - EVM.GasBumpThreshold: missing from documentation
                                            - EVM.GasLimitTransfer: missing from documentation
                                            - EVM.OCRObservationTimeout: missing from documentation
                                            - EVM.Nodes.SendOnly: missing from documentation
                                            - EVM.Nodes.SendOnly: missing from documentation
                                            - EVM.Nodes.WSURL: missing from documentation
                                            - Terra.Enabled: missing from documentation
    FAIL
    FAIL    github.com/smartcontractkit/chainlink/internal/config   0.060s
    FAIL
    
    • [x] add a guide? internal/config/README.md
  • [merged] Hard panic everywhere; scheduler timeout for pipeline run

    [merged] Hard panic everywhere; scheduler timeout for pipeline run

    Recovering panics in the pipeline can lead to inconsistent state and hang the pipeline indefinitely. It is better to hard panic immediately and allow the node to be cleanly restarted.

    In addition, the pipeline runner should have some kind of sanity timeout. This commit re-adds a deadline for JobPipelineMaxRunDuration which appears to have been removed by accident at some point.


    The second commit completely removes WrapRecover and adds hard panics everywhere.

    Recover-ing gives illusion of safety but in reality it makes things more dangerous.

    In almost all cases its safer to hard panic the node than try to recover and keep going since panicking can leave things in an unknown state.

    Node operators typically run with auto-restart enabled, if the node panics it will be booted again from a clean state, and we immediately get a clear stacktrace of where the problem is.

    We have seen bugs that would have been uncovered much sooner and caused fewer problems if we had not suppressed the panic.

    There is one and only one case I can think of where recovering panics is acceptable, and that is in database transactions where it can be intercepted in order to rollback the transaction, then re-panicked again - and even that must be done very carefully with an additional panic added with a timeout in case the rollback hangs.

  • Bump github.com/gagliardetto/solana-go from 1.0.4 to 1.4.0

    Bump github.com/gagliardetto/solana-go from 1.0.4 to 1.4.0

    Bumps github.com/gagliardetto/solana-go from 1.0.4 to 1.4.0.

    Release notes

    Sourced from github.com/gagliardetto/solana-go's releases.

    v1.4.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/gagliardetto/solana-go/compare/v1.3.0...v1.4.0

    v1.3.0

    Full Changelog: https://github.com/gagliardetto/solana-go/compare/v1.2.1...v1.3.0

    v1.2.1

    Full Changelog: https://github.com/gagliardetto/solana-go/compare/v1.2.0...v1.2.1

    v1.2.0

    Full Changelog: https://github.com/gagliardetto/solana-go/compare/v1.1.0...v1.2.0

    v1.1.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/gagliardetto/solana-go/compare/v1.0.4...v1.1.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Restyle Job Runs

    Restyle Job Runs

    For #163407115

    Used Typography from Activity for consistency.
    Overall, I think it looks similar to what the story has asked.


    PS: we need a monospace font (have to manually adjust width without it)

  • Fix query args for upsert

    Fix query args for upsert

    Looks like we have too many query arguments for the query that inserts primary/secondary node information into the DB.

    Seeing this when running latest develop locally:

    2021-11-10T17:35:33.647-0500 [INFO]  Starting Chainlink Node unset at commit unset      cmd/local_client.go:55  SHA=unset Version=unset logger=boot 
    2021-11-10T17:35:33.647-0500 [WARN]  Chainlink is running in DEVELOPMENT mode. This is a security risk if enabled in production. cmd/local_client.go:58  logger=boot 
    2021/11/10 17:35:33 goose: no more migrations to run. current version: 84
    2021-11-10T17:35:33.722-0500 [INFO]  USE_LEGACY_ETH_ENV_VARS is on, upserting chain %s and replacing primary/send-only nodes. It is recommended to set USE_LEGACY_ETH_ENV_VARS=false on subsequent runs and use the API to administer chains/nodes instead evm/legacy.go:28        evmChainID=4 
    creating application: failed to upsert primary-0: expected 5 arguments, got 8
    

    Follow up to #5404 I think. Not sure how this was working before as the number of query arguments hasn't changed.

  • move tests to chainlink-env, remove yaml configs and simplify tests and configuration

    move tests to chainlink-env, remove yaml configs and simplify tests and configuration

    Massive overhaul about how we are writing tests:

    • Removed networks.yaml framework.yaml, now only 3 env vars to configure
    • Can just configure client/chart as a table test now
    • Moved from helmenv to chainlink-env to allow more clear programmatic deployments written in Go
  • WrapRecover: move to inside of loop in FluxMonitor, PeerStore, and VRF listeners; let pipeline panic

    WrapRecover: move to inside of loop in FluxMonitor, PeerStore, and VRF listeners; let pipeline panic

    Push gracefulpanic.WrapRecover calls down the stack to more tightly wrap panic sources, so that long running systems stay up and processing when individual units of work panic.

    -go gracefulpanic.WrapRecover(func() {
    +go func() {
      for {
    -    doWork()
    +    gracefulpanic.WrapRecover(doWork)
      }
    -})
    +}()
    

    Except for two places in the pipeline where recovery is removed.

    Also carrying over four commits from rc0.

  • Source

    Source "smartcontractkit/[email protected]/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol" not found: File not found

    Hi @PatrickAlphaC , I am still having this issue on Lottery.sol. I had before but just followed along with tutorial. Since its about new lesson section I tried all solutions that found on the internet but did not work.

    Lottery.sol

    //SPDX-License-Identifier: MIT
    
    pragma solidity ^0.6.6;
    
    import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";
    
    contract Lottery {
        address payable[] public players;
        uint256 public usdEntryFree;
        AggregatorV3Interface internal ethUsdPriceFeed;
    
        constructor(_priceFeedAddress) public {
            usdEntryFree = 50 * (10**18);
            ethUsdPriceFeed = AggregatorV3Interface(_priceFeedAddress);
        }
    
        function enter() public payable {
            //50USD min
            players.push(msg.sender);
        }
    
        function getEntranceFee() public view returns (uint256) {}
    
        function startLottery() public {}
    
        function endLottery() public {}
    }
    
    

    brownie-config.yaml

    dependecies:
     - smartcontractkit/[email protected]
    
    compiler:
      solc:
       remappings:
         - '@chainlink=smartcontractkit/[email protected]'
         
         
         
    

    I have tried to remove "-" on remappings.

    I have tried to separate on AggregatorV3Interface on Lottery.sol

    I imported AggregatorV3.sol as a file to contracts

    I tried to change versions

    but still no luck. I am using Mac M1 - can it be the reason due to chip?

  • [NODE] GUI Blank Screen while TOML job is executing

    [NODE] GUI Blank Screen while TOML job is executing

    Description After creating a directrequest job, either a normal HTTP GET job, or one that uses a bridge/external adapter, the job creates successfully. However when a consumer contract then goes to use the job and you go to refresh the node GUI screen to see the job executing in real-time, the GUI returns a blank screen. Once the job has completed and finished executing (whether successfully or failure), you can refresh the screen again and the GUI will resume, and you can see the job output

    Basic Information [replace this line with basic information about the issue you are experiencing, including but not limited to all relevant logs and any other relevant information, such as if you are using a Docker container to run the node, job specification, oracle contract address, transaction IDs, etc.]

    • Network: Kovan
    • Blockchain Client: Infura
    • Go Version: 1.17
    • Operating System: MacOs
    • Node Version: 1.0.0

    Steps to Reproduce

    • Spin up v.1.0.0 node, deploy oracle.sol and set fulfill permission to the node address
    • Create a new directrequest TOML job, as per the example below
    • Create a new consumer contract in remix that uses the created job and deployed oracle contract, as per the example below
    • Execute the requestEthereumPrice function on the deployed contract, passing in the oracle contract address and jobId
    • Go back to the GUI and try go to the job runs screen. While the job is executing the GUI will return a blank screen. Even if you go to another page (like the node homepage), nothing will show up on the GUI
    • Wait 30 seconds until the job has completed, then refresh the GUI screen, you should now see the GUI again

    Additional Information

    Error message in node console:

    2021-10-20T13:00:34Z [DEBUG] HeadTracker: Received new head #27835174 (0x1a8bb26) headtracker/head_listener.go:147 blockHash=0x4a93e3c4929f8020e72fd22b669b823f2460d53d1f4c17195e66f05c14b89109 blockHeight=27835174 logger=head_tracker parentHeadHash=0x0cde80a95131ae26500322a8487da6fa3e1a2a54f87ed4e30f70f0c88f0db7fa 
    2021-10-20T13:00:35Z [INFO]  New ETH balance for 0xF8DaCFFe864D900C5Dd99576578Ee066086D5a70: 0.999247024000000000 services/balance_monitor.go:166 address=0xF8DaCFFe864D900C5Dd99576578Ee066086D5a70 chainId=42 ethBalance=0.999247024000000000 id=balance_log weiBalance=999247024000000000 
    2021-10-20T13:00:36Z [INFO]  GET /v2/jobs                                       web/router.go:430       clientIP=::1 latency=9.485323ms method=GET path=/v2/jobs servedAt=2021-10-20 23:30:36 status=200 
    2021-10-20T13:00:37Z [ERROR] PipelineRunResource: unable to process output type <nil> presenters/pipeline_run.go:131 stacktrace=github.com/smartcontractkit/chainlink/core/web/presenters.NewPipelineRunResources
    	/Users/pappas99/GitHub/chainlink/core/web/presenters/pipeline_run.go:131
    github.com/smartcontractkit/chainlink/core/web.(*PipelineRunsController).Index
    	/Users/pappas99/GitHub/chainlink/core/web/pipeline_runs_controller.go:60
    github.com/smartcontractkit/chainlink/core/web.paginatedRequest.func1
    	/Users/pappas99/GitHub/chainlink/core/web/helpers.go:88
    github.com/gin-gonic/gin.(*Context).Next
    	/Users/pappas99/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:165
    github.com/smartcontractkit/chainlink/core/web.RequireAuth.func1
    	/Users/pappas99/GitHub/chainlink/core/web/authentication.go:131
    github.com/gin-gonic/gin.(*Context).Next
    	/Users/pappas99/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:165
    github.com/gin-gonic/contrib/sessions.Sessions.func1
    	/Users/pappas99/go/pkg/mod/github.com/gin-gonic/[email protected]/sessions/sessions.go:65
    github.com/gin-gonic/gin.(*Context).Next
    	/Users/pappas99/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:165
    github.com/ulule/limiter/drivers/middleware/gin.(*Middleware).Handle
    	/Users/pappas99/go/pkg/mod/github.com/ulule/[email protected]/drivers/middleware/gin/middleware.go:57
    github.com/ulule/limiter/drivers/middleware/gin.NewMiddleware.func1
    	/Users/pappas99/go/pkg/mod/github.com/ulule/[email protected]/drivers/middleware/gin/middleware.go:33
    github.com/gin-gonic/gin.(*Context).Next
    	/Users/pappas99/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:165
    github.com/Depado/ginprom.(*Prometheus).Instrument.func1
    	/Users/pappas99/go/pkg/mod/github.com/!depado/[email protected]/prom.go:215
    github.com/gin-gonic/gin.(*Context).Next
    	/Users/pappas99/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:165
    github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1
    	/Users/pappas99/go/pkg/mod/github.com/gin-gonic/[email protected]/recovery.go:99
    github.com/gin-gonic/gin.(*Context).Next
    	/Users/pappas99/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:165
    github.com/smartcontractkit/chainlink/core/web.loggerFunc.func1
    	/Users/pappas99/GitHub/chainlink/core/web/router.go:427
    github.com/gin-gonic/gin.(*Context).Next
    	/Users/pappas99/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:165
    github.com/gin-contrib/size.RequestSizeLimiter.func1
    	/Users/pappas99/go/pkg/mod/github.com/gin-contrib/[email protected]/size.go:88
    github.com/gin-gonic/gin.(*Context).Next
    	/Users/pappas99/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:165
    github.com/gin-gonic/gin.(*Engine).handleHTTPRequest
    	/Users/pappas99/go/pkg/mod/github.com/gin-gonic/[email protected]/gin.go:489
    github.com/gin-gonic/gin.(*Engine).ServeHTTP
    	/Users/pappas99/go/pkg/mod/github.com/gin-gonic/[email protected]/gin.go:445
    net/http.serverHandler.ServeHTTP
    	/usr/local/go/src/net/http/server.go:2878
    net/http.(*conn).serve
    	/usr/local/go/src/net/http/server.go:1929 
    2021-10-20T13:00:37Z [INFO]  GET /v2/jobs/15/runs                               web/router.go:430       clientIP=::1 latency=6.293717ms method=GET path=/v2/jobs/15/runs query=page=1&size=5 servedAt=2021-10-20 23:30:37 status=200 
    2021-10-20T13:00:37Z [INFO]  GET /v2/jobs/15                                    web/router.go:430       clientIP=::1 latency=8.556668ms method=GET path=/v2/jobs/15 servedAt=2021-10-20 23:30:37 status=200 
    

    This is semi related to other blank screen GUI issues https://github.com/smartcontractkit/chainlink/issues/4964 and https://github.com/smartcontractkit/chainlink/issues/4882

    TOML spec to reproduce issue:

    type = "directrequest"
    schemaVersion = 1
    name = "Get > Uint256-2"
    contractAddress = "0xA74F1E1Bb6204B9397Dac33AE970E68F8aBC7651"
    maxTaskDuration = "0s"
    observationSource = """
        decode_log   [type=ethabidecodelog
                      abi="OracleRequest(bytes32 indexed specId, address requester, bytes32 requestId, uint256 payment, address callbackAddr, bytes4 callbackFunctionId, uint256 cancelExpiration, uint256 dataVersion, bytes data)"
                      data="$(jobRun.logData)"
                      topics="$(jobRun.logTopics)"]
    
        decode_cbor  [type=cborparse data="$(decode_log.data)"]
        fetch        [type=http method=GET url="$(decode_cbor.get)"]
        parse        [type=jsonparse path="$(decode_cbor.path)" data="$(fetch)"]
        multiply     [type=multiply input="$(parse)" times=100]     
        encode_data  [type=ethabiencode abi="(uint256 value)" data=<{ "value": $(multiply) }>]
        encode_tx    [type=ethabiencode
                      abi="fulfillOracleRequest(bytes32 requestId, uint256 payment, address callbackAddress, bytes4 callbackFunctionId, uint256 expiration, bytes32 data)"
                      data=<{"requestId": $(decode_log.requestId), "payment": $(decode_log.payment), "callbackAddress": $(decode_log.callbackAddr), "callbackFunctionId": $(decode_log.callbackFunctionId), "expiration": $(decode_log.cancelExpiration), "data": $(encode_data)}>
                     ]
        submit_tx    [type=ethtx to="0xA74F1E1Bb6204B9397Dac33AE970E68F8aBC7651" data="$(encode_tx)"]
    
        decode_log -> decode_cbor -> fetch -> parse -> multiply -> encode_data -> encode_tx -> submit_tx
    """
    
    
    

    Consuming Solidity contract to reproduce issue

  • `gasLimit` job attribute

    `gasLimit` job attribute

    Feature: https://app.shortcut.com/chainlinklabs/story/20502/allow-gas-limit-to-be-tuned-per-job-type-and-per-job-gas-savings

    Doc: https://github.com/smartcontractkit/documentation/pull/828

  • [FEAT] Deploy Chainlink contracts to Sepolia testnet

    [FEAT] Deploy Chainlink contracts to Sepolia testnet

  • Bump github.com/shirou/gopsutil/v3 from 3.22.2 to 3.22.6

    Bump github.com/shirou/gopsutil/v3 from 3.22.2 to 3.22.6

    Bumps github.com/shirou/gopsutil/v3 from 3.22.2 to 3.22.6.

    Commits
    • 7a094df Merge pull request #1318 from shirou/feature/fix_release_action
    • 4f1f5b3 fix(actions): add write permission to release action
    • 8cbdb09 Merge pull request #1317 from shirou/dependabot/go_modules/github.com/stretch...
    • f34b623 Merge pull request #1314 from chbuescher/master
    • cd5338f Bump github.com/stretchr/testify from 1.7.2 to 1.7.5
    • 3d643b9 parse cpu values as float
    • b3ab156 more aix nocgo implementations
    • f9d3b96 Merge pull request #1311 from shirou/dependabot/go_modules/github.com/stretch...
    • 0f1e584 Bump github.com/stretchr/testify from 1.7.1 to 1.7.2
    • ff544cb Merge pull request #1310 from cipherboy/fix-int8-to-byte
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump github.com/ethereum/go-ethereum from 1.10.18 to 1.10.20

    Bump github.com/ethereum/go-ethereum from 1.10.18 to 1.10.20

    Bumps github.com/ethereum/go-ethereum from 1.10.18 to 1.10.20.

    Release notes

    Sourced from github.com/ethereum/go-ethereum's releases.

    Vectra (v1.10.20)

    Geth v1.10.20 is a maintenance release, adding built-in configuration for the merge fork on the Sepolia testnet.

    Specifically, this release defines a terminal total difficulty for Sepolia (#25179).

    Geth command changes

    • Geth and most other command-line tools now use a newer version of the command-line argument/flag handling library. There is one new restriction with this change: flags must now be given before other arguments. Very few of Geth's subcommands take arguments, so this is unlikely to cause issues. (#24751)
    • The geth js subcommand has been removed. (#25000)
    • The new --discovery.port flag allows configuring a separate port for the UDP listener. (#24979)
    • Setting p2p bootstrap nodes in the config file now works even when a pre-defined network is selected on the command-line. (#25174)

    RPC API changes

    • eth_chainId now always returns the configured chain ID regardless of sync status. This is a violation of EIP-695, but the previous behavior caused issues with CL clients. (#25166, #25168)
    • Transaction objects returned by RPC (e.g. from eth_getTransactionByHash) now always include the chainId field, even for untyped (legacy) transactions. (#25155)
    • The deprecated RPC method personal_signAndSendTransaction has been removed. (#25111)
    • Handling of certain reorg corner cases is improved in the Engine API. (#25187, #25139)
    • A performance regression in JS tracing is resolved. (#25156)

    Build changes

    • Bash and zsh completions are now installed by the geth Ubuntu package. (#25195, #25204)

    For a full rundown of the changes please consult the Geth 1.10.20 release milestone


    As with all our previous releases, you can find the:

    Camaron (v1.10.19)

    Geth v1.10.19 is yet another feature release.

    The release contains the Gray Glacier fork definition. The Gray Glacier fork is a difficulty-bomb postponement, which is expected to go live on Ethereum Mainnet towards the end of June.

    In other words: all users are required to upgrade before the Gray Glacier hardfork activates at block 15050000 (#25088)

    Changes which may cause incompatibilities:

    • The engine API is now only available with JWT authentication.
    • Geth will refuse to start if legacy receipts are present in the database. The check can be disabled with --ignore-legacy-receipts, but we strongly recommend you run the conversion in this case (#24943).
    • The RPC method debug_traceCall will now reject execution against the pending block (#24871).
    • RPC timer metrics have been changed into histograms (#25044).

    Other changes in this release:

    ... (truncated)

    Commits
    • 8f2416a params: go-ethereum v1.10.20 stable
    • 75ebeb7 build/deb: fix auto-completion install paths (#25204)
    • 63b2d49 build: upgrade to golangci-lint v1.46.2 (#25202)
    • ea0bf08 build: fix auto-completion scripts and include them in .deb package (#25195)
    • d12b1a9 consensus/beacon: check that only the latest pow block is valid ttd block (#2...
    • c2070f8 common: increase StorageSize test coverage (#25188)
    • 3e693e1 internal/ethapi: return chain id for EIP-155 legacy txs (#25155)
    • 9ecf8a9 cmd/utils: fix applying bootstrap nodes from config file (#25174)
    • 300f612 core/rawdb: simplify TestDiskSeek to use memorydb (#25182)
    • 3f712e7 core/rawdb: fix typo in comment (#25191)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump github.com/jackc/pgconn from 1.11.0 to 1.12.1

    Bump github.com/jackc/pgconn from 1.11.0 to 1.12.1

    Bumps github.com/jackc/pgconn from 1.11.0 to 1.12.1.

    Changelog

    Sourced from github.com/jackc/pgconn's changelog.

    1.12.1 (May 7, 2022)

    • Fix: setting krbspn and krbsrvname in connection string (sireax)
    • Add support for Unix sockets on Windows (Eno Compton)
    • Stop ignoring ErrorResponse during SCRAM auth (Rafi Shamim)

    1.12.0 (April 21, 2022)

    • Add pluggable GSSAPI support (Oliver Tan)
    • Fix: Consider any "0A000" error a possible cached plan changed error due to locale
    • Better match psql fallback behavior with multiple hosts
    Commits
    • 831fc21 Release v1.12.1
    • 1d39831 Stop ignoring ErrorResponse during SCRAM auth
    • 0135721 Add support for Unix sockets on Windows
    • 84e8238 Fix: setting krbspn and krbsrvname did'n work
    • 9bb49f9 Release v1.12.0
    • 1b244ee Upgrade to pgproto3 v2.3.0
    • beb4e2c SQLCODE 42501 is fatal connect error
    • 90ef5bb add GSSAPI authentication
    • 5982e4b fix detection of database does not exist error during connect
    • b7a85d1 Consider any "0A000" error a possible cached plan changed error
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump github.com/stretchr/testify from 1.7.2 to 1.8.0

    Bump github.com/stretchr/testify from 1.7.2 to 1.8.0

    Bumps github.com/stretchr/testify from 1.7.2 to 1.8.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Powered by Matterbridge, MatterAMXX is a plugin for AMXX that allows simple bridging between your game servers, Mattermost, IRC, XMPP, Gitter, Slack, Discord, Telegram, and more.
Powered by Matterbridge, MatterAMXX is a plugin for AMXX that allows simple bridging between your game servers, Mattermost, IRC, XMPP, Gitter, Slack, Discord, Telegram, and more.

Powered by Matterbridge, MatterAMXX is a plugin for AMXX that allows simple bridging between your game servers, Mattermost, IRC, XMPP, Gitter, Slack, Discord, Telegram, and more.

May 21, 2022
Carbyne Stack serverless compute service for secure multiparty computation

Carbyne Stack Ephemeral Service Ephemeral is a serverless compute service for secure multiparty computation based on Knative, Istio and Kubernetes. DI

Jun 17, 2022
Implementing SPEEDEX price computation engine in Golang as a standalone binary that exchanges can call

speedex-standalone Implementing SPEEDEX price computation engine in Golang as a standalone binary that exchanges can call. Notes from Geoff About Tato

Dec 1, 2021
A modular is an opinionated, easy-to-use P2P network stack for decentralized applications written in Go.

xlibp2p xlibp2p is an opinionated, easy-to-use P2P network stack for decentralized applications written in Go. xlibp2p is made to be minimal, robust,

Jun 7, 2022
Renloi: a decentralized finance network for golang

Intro to Renloi A digital decentralized version of cash will allow extremely fas

Jun 9, 2022
Xlibp2p: an opinionated, easy-to-use P2P network stack for decentralized applications written in Go

xlibp2p xlibp2p is an opinionated, easy-to-use P2P network stack for decentraliz

Feb 21, 2022
Steve - A peer-to-peer (p2p) decentralized network

Steve Steve is a peer-to-peer (p2p) decentralized network that enables people to

Feb 5, 2022
A simple Go library to toggle on and off pac(proxy auto configuration) for Windows, MacOS and Linux

pac pac is a simple Go library to toggle on and off pac(proxy auto configuration

Dec 26, 2021
Node for providing data into Orakuru network

Orakuru's crystal-ball Node for providing data into Orakuru network. Configuration Crystal-ball uses environment variables and configuration files for

Jan 20, 2022
A cross-platform, decentralized, chat app based on SaltyIM for functionality and GioUI for UI

This project is shifted at https://git.mills.io/saltyim/app Salty UI A cross-platform, decentralized, chat app based on SaltyIM for functionality and

Jun 20, 2022
Package socket provides a low-level network connection type which integrates with Go's runtime network poller to provide asynchronous I/O and deadline support. MIT Licensed.

socket Package socket provides a low-level network connection type which integrates with Go's runtime network poller to provide asynchronous I/O and d

May 9, 2022
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.

Connecting the Next Billion People Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core

Jul 1, 2022
Zero Trust Network Communication Sentinel provides peer-to-peer, multi-protocol, automatic networking, cross-CDN and other features for network communication.
Zero Trust Network Communication Sentinel provides peer-to-peer, multi-protocol, automatic networking, cross-CDN and other features for network communication.

Thank you for your interest in ZASentinel ZASentinel helps organizations improve information security by providing a better and simpler way to protect

May 25, 2022
Decentralized VPN in golang
Decentralized VPN in golang

LCVPN - Light decentralized VPN in golang Originally this repo was just an answer on a question "how much time it'll take to write my own simple VPN i

Jun 21, 2022
Hummingbard is an experimental client for building decentralized communities on top of Matrix.

Hummingbard is an experimental client for building decentralized communities on top of Matrix.

Jun 21, 2022
Decentralized VPN
Decentralized VPN

Decentralized VPN The RadVPN doesn't need any central point as it connects to other nodes directly (full mesh) it has built-in router that helps packe

Jul 3, 2022
A decentralized P2P networking stack written in Go.

noise noise is an opinionated, easy-to-use P2P network stack for decentralized applications, and cryptographic protocols written in Go. noise is made

Jun 22, 2022
⛵ EdgeVPN: the immutable, decentralized, statically built VPN. NO central server!

⛵ EdgeVPN Fully Decentralized. Immutable. Portable. Easy to use Statically compiled VPN Usage Generate a config: ./edgevpn -g > config.yaml Run it on

Jul 3, 2022
Decentralized Chat ( 去中心化的聊天系统 )

dchat Introduce dchat (Decentralized Chat) 一款去中心化的聊天系统。 Features 轻量级 Unix指令交互 去中心化 断线重连 支持集群 分布式ID Start Install go get -u github.com/awesome-cmd/dcha

Apr 13, 2022