{"id":20293319,"url":"https://github.com/mingderwang/raiden-graphql","last_synced_at":"2026-06-05T08:31:45.617Z","repository":{"id":38804993,"uuid":"201709192","full_name":"mingderwang/raiden-graphql","owner":"mingderwang","description":"a GraphQL interface to the Raiden Nettwork","archived":false,"fork":false,"pushed_at":"2022-12-11T01:32:14.000Z","size":913,"stargazers_count":2,"open_issues_count":11,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-14T09:25:31.431Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mingderwang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-11T02:55:30.000Z","updated_at":"2020-06-22T04:51:26.000Z","dependencies_parsed_at":"2022-09-18T10:31:44.094Z","dependency_job_id":null,"html_url":"https://github.com/mingderwang/raiden-graphql","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mingderwang%2Fraiden-graphql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mingderwang%2Fraiden-graphql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mingderwang%2Fraiden-graphql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mingderwang%2Fraiden-graphql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mingderwang","download_url":"https://codeload.github.com/mingderwang/raiden-graphql/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241787483,"owners_count":20020101,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T15:23:32.646Z","updated_at":"2026-06-05T08:31:45.611Z","avatar_url":"https://github.com/mingderwang.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Raiden Network + GraphQL = \"🚀🚀🚀🚀🚀🚀🚀🚀\"\nFor the [Grow Ethereum](https://gitcoin.co/blog/growethereum/?fbclid=IwAR0eiIY_PiJl1i8iz2mfgGb1uvZnlgDignX402uLC7u2VKniMMlnGoggW5Y) hackathon runs from Jul 29, 2019 - Aug 15, 2019 as the 3th round of the [Gitcoin's Ethereum Virtual Hackathon](https://gitcoin.co/hackathon/ethereal-virtual-hackathon/), this project is expecting to provide a new interface for [Raiden Network](https://raiden.network/) other than original design a RESTful API. Raiden network is designed to provide a fast, cheap, scablable tokens transfer for Ethereum, that will be much more easy to use if we can provide a GraphQL API for mobile apps whitch came from this work. Please enjoy it.\n\n## build and run for dev\n```\nyarn\nyarn dev\n```\nor\n```\nnpm install\nnpm run dev\n```\n\n## run for prod\n```\nyarn start\n```\nor\n```\nnpm run start\n```\nthen, you can use GraphQL UI to explorer your raiden node on 🚀 Server ready at http://localhost:4000/graphql\n![demo](./raiden-graphql.png)\n## enviornment setting (test only on the Ropsten network with Raiden 0.100.3)\ngeth\n```\ngeth --cache=500000 --syncmode=fast --testnet --rpc --rpcapi eth,net,web3,txpool --bootnodes enode://20c9ad97c081d63397d7b685a412227a40e23c8bdc6688c6f37e97cfbc22d2b4d1db1510d8f61e6a8866ad7f0e17c02b14182d37ea7c3c8b9c2683aeb6b733a1@52.169.14.227:30303,enode://6ce05930c72abc632c58e2e4324f7c7ea478cec0ed4fa2528982cf34483094e9cbc9216e7aa349691242576d552a2a56aaeae426c5303ded677ce455ba1acd9d@13.84.180.240:30303 --rpcaddr 0.0.0.0\n```\nraiden node\n```\n./raiden --keystore-path  ~/.ethereum/testnet/keystore --network-id ropsten --eth-rpc-endpoint http://localhost:8545 --environment-type development --password-file /tmp/passwd --accept-disclaimer --address 0xd2C73673E8C0a13400c7136495dA6fab31618902\n```\nTo change your BASE_URL in axiosInstance.js, if this code is not run on the same server as the raiden node.\n```\nconst axios = require('axios')\n\n// default BASE_URL should be \"http:localhost:5001\" where localhost is running the raiden node.\n\nconst BASE_URL = \"http://localhost:5001\"\nconst instance = axios.create({\n  baseURL: BASE_URL+'/api/v1/'\n})\n\nmodule.exports = instance\n```\n\n# GraphQL command examples\n## address\nquery:\n```\n{\n  address {\n    our_address\n  }\n}\n```\nreturn:\n```\n{\n  \"data\": {\n    \"address\": {\n      \"our_address\": \"0xd2C73673E8C0a13400c7136495dA6fab31618902\"\n    }\n  }\n}\n```\n## tokens\n```\n{\n  tokens\n}\n```\nreturn:\n```\n{\n  \"data\": {\n    \"tokens\": [\n      \"0xD5B3df30512d846A7CB6B4154C066031D837ac60\",\n      \"0x0f114A1E9Db192502E7856309cc899952b3db1ED\",\n      \"0x5422Ef695ED0B1213e2B953CFA877029637D9D26\",\n      \"0x26d5a400C4AeB84FAE923470350EeC3EA6423c78\",\n      \"0x2A07C1D3bc08c183fE4ec5b51f5BfBd5Fe598BDc\",\n      \"0x9aBa529db3FF2D8409A1da4C9eB148879b046700\",\n      \"0xc778417E063141139Fce010982780140Aa0cD5Ab\",\n      \"0x4F209f92F5cDE44FFF98C0b0CA486B14424e2834\",\n      \"0x101848D5C5bBca18E6b4431eEdF6B95E9ADF82FA\",\n      \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\"\n    ]\n  }\n}\n```\n## Registering a token\n```\nmutation {\n  token(address: \"0xbFF1B20483EC5D24509D8F49F888d3D21921FCF5\") {\n    errors\n    token_network_address\n  }\n}\n```\nreturn:\n```\n{\n  \"data\": {\n    \"token\": {\n      \"errors\": null,\n      \"token_network_address\": \"0x934C75Aa24c4988D4Fd72c39e766110422b6779E\"\n    }\n  }\n}\n```\nor if token already regiestered.\n```\n{\n  \"data\": {\n    \"token\": {\n      \"errors\": [\n        \"Token already registered\"\n      ],\n      \"token_network_address\": null\n    }\n  }\n}\n```\nor if address is not EIP55 compliance.\n```\n{\n  \"data\": {\n    \"token\": {\n      \"errors\": [\n        \"invalid endpoint\",\n        \"Not a valid EIP55 encoded address.\"\n      ],\n      \"token_network_address\": null\n    }\n  }\n}\n```\ncheck all tokens again, see \"0xbFF1B20483EC5D24509D8F49F888d3D21921FCF5\" is registered.\n```\n{\n  tokens\n}\n```\nreturn:\n```\n{\n  \"data\": {\n    \"tokens\": [\n      \"0xD5B3df30512d846A7CB6B4154C066031D837ac60\",\n      \"0x0f114A1E9Db192502E7856309cc899952b3db1ED\",\n      \"0x5422Ef695ED0B1213e2B953CFA877029637D9D26\",\n      \"0x26d5a400C4AeB84FAE923470350EeC3EA6423c78\",\n      \"0x2A07C1D3bc08c183fE4ec5b51f5BfBd5Fe598BDc\",\n      \"0x9aBa529db3FF2D8409A1da4C9eB148879b046700\",\n      \"0xc778417E063141139Fce010982780140Aa0cD5Ab\",\n      \"0x4F209f92F5cDE44FFF98C0b0CA486B14424e2834\",\n      \"0x101848D5C5bBca18E6b4431eEdF6B95E9ADF82FA\",\n      \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\",\n      \"0xbFF1B20483EC5D24509D8F49F888d3D21921FCF5\"\n    ]\n  }\n}\n```\n# channels\n\n## get channel status\n```\n{\n  channels {\n    channels {\n      state\n      balance\n      settle_timeout\n      total_deposit\n      channel_identifier\n      partner_address\n      reveal_timeout\n      token_network_address\n      token_address\n      total_withdraw\n    }\n    errors\n  }\n}\n```\nreturn\n```\n{\n  \"data\": {\n    \"channels\": {\n      \"channels\": [\n        {\n          \"state\": \"opened\",\n          \"balance\": 1337,\n          \"settle_timeout\": 500,\n          \"total_deposit\": 1337,\n          \"channel_identifier\": 7,\n          \"partner_address\": \"0x9335bC8FCd67Dd60Eba9ebcE5424F5eE2Ee789d2\",\n          \"reveal_timeout\": 50,\n          \"token_network_address\": \"0xfb7651Fd399eF4E53409645540d98Bf9A4344f78\",\n          \"token_address\": \"0x018F0AC075C93091d036f033Cf45dFe518f11D64\",\n          \"total_withdraw\": 0\n        }\n      ],\n      \"errors\": null\n    }\n  }\n}\n```\n\n## get a channel status with token_address \n```\n{\n  channels(token_address: \"0x018F0AC075C93091d036f033Cf45dFe518f11D64\") {\n    channels {\n      total_deposit\n      state\n      partner_address\n      token_address\n      token_network_address\n    }\n    errors\n  }\n}\n```\nreturn:\n```\n{\n  \"data\": {\n    \"channels\": {\n      \"channels\": [\n        {\n          \"total_deposit\": 1337,\n          \"state\": \"opened\",\n          \"partner_address\": \"0x9335bC8FCd67Dd60Eba9ebcE5424F5eE2Ee789d2\",\n          \"token_address\": \"0x018F0AC075C93091d036f033Cf45dFe518f11D64\",\n          \"token_network_address\": \"0xfb7651Fd399eF4E53409645540d98Bf9A4344f78\"\n        }\n      ],\n      \"errors\": null\n    }\n  }\n}\n```\n\nor with error\n```\n{\n  channels (token_address: \"asdf\") {\n    errors\n  }\n}\n```\nreturn:\n```\n{\n  \"data\": {\n    \"channels\": {\n      \"errors\": [\n        \"invalid endpoint\",\n        \"Not a valid hex address, 0x prefix missing.\"\n      ]\n    }\n  }\n}\n```\n## deposit a channel\n```\nmutation {\n  channel_deposit(\n    token_address: \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\"\n    partner_address: \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\"\n    total_deposit: 300000\n  ) {\n    channels {\n      state\n      balance\n      settle_timeout\n      token_network_identifier\n      total_deposit\n      token_address\n      channel_identifier\n      partner_address\n      reveal_timeout\n    }\n    errors\n  }\n}\n```\nreturn:\n```\n{\nchannels: [\n{ state: 'opened',\n  balance: 10000,\n  settle_timeout: 500,\n  token_network_identifier: '0xF2d4b7002c1694D5ca597aD6eD21D8C8959a6355',\n  total_deposit: 300000,\n  token_address: '0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee',\n  channel_identifier: 5,\n  partner_address: '0x9013a333d3de90a7eF7531746cb8F537632bf96c',\n  reveal_timeout: 50 }\n]\nerrors: null\n}\n```\n## create (open) a channel \n```\nmutation {\n  channel(\n    token_address: \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\"\n    partner_address: \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\"\n    settle_timeout: 500\n    total_deposit: 1337\n    reveal_timeout: 50\n  ) {\n    errors\n  }\n}\n```\nwith error\n```\n{\n  \"data\": {\n    \"channel\": {\n      \"channels\": null,\n      \"errors\": [\n        \"Channel with given partner address already exists\"\n      ]\n    }\n  }\n}\n```\nor error\n```\n{\n  \"data\": {\n    \"channel\": {\n      \"errors\": [\n        \"Total deposit did not increase.\"\n      ]\n    }\n  }\n}\n```\nor not enought balance error\n```\n{\n  \"data\": {\n    \"channel\": {\n      \"errors\": [\n        \"Not enough balance to deposit. 0x76b335763f779979D7322dB2B73088b8D6001b75 Available=1035100002 Needed=1650000000\"\n      ]\n    }\n  }\n}\n```\nor \n```\n{\n  \"data\": {\n    \"channel\": {\n      \"errors\": [\n        \"Channel is not in an open state.\"\n      ]\n    }\n  }\n}\n```\n## close a channel \nThis request is used to close a channel or to increase the deposit in it.\nwith \"state\": \"closed\"\n```\nmutation {\n  channel_close(\n    token_address: \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\"\n    partner_address: \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\"\n  ) {\n    channels {\n      state\n    }\n    errors\n  }\n}\n```\nreturn:\n```\n{\n  \"data\": {\n    \"channel_close\": {\n      \"channels\": [\n        {\n          \"state\": \"closed\"\n        }\n      ],\n      \"errors\": null\n    }\n  }\n}\n```\nor with error\n```\n{\n  \"data\": {\n    \"channel_close\": {\n      \"channels\": null,\n      \"errors\": [\n        \"Attempted to close an already closed channel\"\n      ]\n    }\n  }\n}\n```\n\n## withdraw a channel \nThis request is used to close a channel or to increase the deposit in it.\nwith \"total_withdraw\": 100 \n```\nmutation {\n  channel_withdraw(\n    token_address: \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\"\n    partner_address: \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\"\n    total_withdraw: 300\n  ) {\n    channels {\n      state\n      balance\n      settle_timeout\n      token_network_identifier\n      total_deposit\n      token_address\n      channel_identifier\n      partner_address\n      reveal_timeout\n    }\n    errors\n  }\n}\n```\nreturn in 0.100.3 (not implemented yet)\n```\n{ errors:\n   'Nothing to do. Should either provide \\'total_deposit\\' or \\'state\\' argument' }\n```\n\n## pending_transfers\n```\n{\n  pending_transfers(\n    token_address: \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\"\n    partner_address: \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\"\n  ) {\n    transfers {\n      channel_identifier\n      payment_identifier\n      token_address\n      token_network_identifier\n      initiator\n      channel_identifier\n      target\n      locked_amount\n      role\n      transferred_amount\n    }\n    errors\n  }\n}\n```\nreturn:\n```\n{\n  \"data\": {\n    \"pending_transfers\": {\n      \"transfers\": [],\n      \"errors\": null\n    }\n  }\n}\n```\nor with data\n```\n{\n  \"data\": {\n    \"pending_transfers\": {\n      \"transfers\": [\n        {\n          \"channel_identifier\": \"6\",\n          \"payment_identifier\": \"14164638209489862054\",\n          \"token_address\": \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\",\n          \"token_network_identifier\": \"0xF2d4b7002c1694D5ca597aD6eD21D8C8959a6355\",\n          \"initiator\": \"0xd2C73673E8C0a13400c7136495dA6fab31618902\",\n          \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n          \"locked_amount\": \"300\",\n          \"role\": \"initiator\",\n          \"transferred_amount\": \"0\"\n        },\n        {\n          \"channel_identifier\": \"6\",\n          \"payment_identifier\": \"15669887581632066647\",\n          \"token_address\": \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\",\n          \"token_network_identifier\": \"0xF2d4b7002c1694D5ca597aD6eD21D8C8959a6355\",\n          \"initiator\": \"0xd2C73673E8C0a13400c7136495dA6fab31618902\",\n          \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n          \"locked_amount\": \"600\",\n          \"role\": \"initiator\",\n          \"transferred_amount\": \"0\"\n        },\n        {\n          \"channel_identifier\": \"6\",\n          \"payment_identifier\": \"1829131590973794013\",\n          \"token_address\": \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\",\n          \"token_network_identifier\": \"0xF2d4b7002c1694D5ca597aD6eD21D8C8959a6355\",\n          \"initiator\": \"0xd2C73673E8C0a13400c7136495dA6fab31618902\",\n          \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n          \"locked_amount\": \"1000\",\n          \"role\": \"initiator\",\n          \"transferred_amount\": \"0\"\n        }\n      ],\n      \"errors\": null\n    }\n  }\n}\n```\n\n# connections\n## list connections\n```\n{\n  connections {\n    token_address\n    funds\n    sum_deposits\n    channels\n  }\n}\n```\nreturn:\n```\n{\n  \"data\": {\n    \"connections\": [\n      {\n        \"token_address\": \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\",\n        \"funds\": 3000,\n        \"sum_deposits\": 1200,\n        \"channels\": 2\n      }\n    ]\n  }\n}\n```\nor with no any connection\n```\n{\n  \"data\": {\n    \"connections\": []\n  }\n}\n```\n## create connection with funds\n```\nmutation {\n  connection (token_address: \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\"\n  funds: 999999) {\n    errors\n  }\n}\n```\nreturn:\n```\n{\n  \"data\": {\n    \"connection\": {\n      \"errors\": [\n        \"204 NO CONTENT\"\n      ]\n    }\n  }\n}\n\n```\n## leave connection\n```\nmutation {\n  leave_connection (token_address: \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\"\n  )\n}\n```\nreturn:\n```\n{\n  \"error\": \"Failed to fetch. Please check your connection\"\n}\n```\n# Payments\n\n## querying payments events\n\n```\n{\n  payments(\n    token_address: \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\"\n    target_address: \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\"\n  ) {\n    target\n    reason\n    log_time\n    event\n  }\n}\n```\nreturn:\n```\n{\n  \"data\": {\n    \"payments\": [\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"lock expired\",\n        \"log_time\": \"2019-08-06T06:31:02.280\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"lock expired\",\n        \"log_time\": \"2019-08-06T07:00:53.490\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"there is no route available\",\n        \"log_time\": \"2019-08-07T06:34:12.641\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"none of the available routes could be used\",\n        \"log_time\": \"2019-08-07T06:50:26.944\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"none of the available routes could be used\",\n        \"log_time\": \"2019-08-07T06:51:54.656\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"there is no route available\",\n        \"log_time\": \"2019-08-07T07:10:57.260\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"there is no route available\",\n        \"log_time\": \"2019-08-13T10:47:59.794\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"lock expired\",\n        \"log_time\": \"2019-08-13T11:35:59.023\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"lock expired\",\n        \"log_time\": \"2019-08-13T11:38:14.340\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"lock expired\",\n        \"log_time\": \"2019-08-13T11:42:07.955\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"lock expired\",\n        \"log_time\": \"2019-08-13T11:56:34.858\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"lock expired\",\n        \"log_time\": \"2019-08-13T11:58:18.970\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"there is no route available\",\n        \"log_time\": \"2019-08-13T13:54:04.834\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"lock expired\",\n        \"log_time\": \"2019-08-13T14:40:23.528\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"lock expired\",\n        \"log_time\": \"2019-08-13T14:44:14.159\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"lock expired\",\n        \"log_time\": \"2019-08-13T14:46:35.613\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"there is no route available\",\n        \"log_time\": \"2019-08-13T16:21:44.234\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"there is no route available\",\n        \"log_time\": \"2019-08-13T16:22:00.685\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"there is no route available\",\n        \"log_time\": \"2019-08-13T16:22:09.254\",\n        \"event\": \"EventPaymentSentFailed\"\n      },\n      {\n        \"target\": \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\",\n        \"reason\": \"there is no route available\",\n        \"log_time\": \"2019-08-13T16:37:17.224\",\n        \"event\": \"EventPaymentSentFailed\"\n      }\n    ]\n  }\n}\n```\n## issue a payment\n```\nmutation {\n  payment(\n    token_address: \"0xDb26E84F3C18776FdBD13d5AE4E91eCB5E4978Ee\"\n    target_address: \"0x9013a333d3de90a7eF7531746cb8F537632bf96c\"\n    amount: 100\n  ) {\n    errors\n  }\n}\n```\nor with error\n```\n{\n  \"data\": {\n    \"payment\": {\n      \"channels\": null,\n      \"errors\": [\n        \"Payment couldn't be completed (insufficient funds, no route to target or target offline).\"\n      ]\n    }\n  }\n}\n```\nor with another error:\n```\n{\"errors\": \"Amount negative\"}\n```\n\n# TODO\n* update for 0.100.5 release\n* implement Subscription for payments events if necessary\n* use docker-compose for a faster deployment of the whole server, which is geth + raiden + graphql\n* write a sample mobile app to use the raiden GraphQL API. \n* write some tests.\n\n# Contributors\n* issue: https://github.com/mingderwang/raiden-graphql/issues\n* contributors for mobile apps to use Raiden GraphQL API are welcome.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmingderwang%2Fraiden-graphql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmingderwang%2Fraiden-graphql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmingderwang%2Fraiden-graphql/lists"}