{"id":37540039,"url":"https://github.com/bipbop/jurischain","last_synced_at":"2026-01-16T08:44:19.565Z","repository":{"id":46921362,"uuid":"204326257","full_name":"bipbop/jurischain","owner":"bipbop","description":"Instead of challenging the humans who are working at the terminals, it would be better to challenge the terminals themselves. It's all about balancing out the client's workload so they won't be a victim of a DDoS attack.","archived":false,"fork":false,"pushed_at":"2023-02-04T01:17:29.000Z","size":730,"stargazers_count":15,"open_issues_count":2,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-27T18:56:01.487Z","etag":null,"topics":["blockchain","captcha","proof-of-work","sha3"],"latest_commit_sha":null,"homepage":"https://www.jurischain.dev/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bipbop.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-25T17:18:55.000Z","updated_at":"2025-10-23T17:09:17.000Z","dependencies_parsed_at":"2023-02-18T12:46:10.567Z","dependency_job_id":null,"html_url":"https://github.com/bipbop/jurischain","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bipbop/jurischain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bipbop%2Fjurischain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bipbop%2Fjurischain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bipbop%2Fjurischain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bipbop%2Fjurischain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bipbop","download_url":"https://codeload.github.com/bipbop/jurischain/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bipbop%2Fjurischain/sbom","scorecard":{"id":239449,"data":{"date":"2025-08-11","repo":{"name":"github.com/bipbop/jurischain","commit":"417f9fe2360affb518aadfad2bb6fff3ec7d7951"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/bipbop/jurischain/build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/bipbop/jurischain/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/bipbop/jurischain/build.yml/master?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/build.yml:17","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: dist/jurischain-cli.wasm:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":2,"reason":"8 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-rc47-6667-2j5j","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-6w4m-2xhg-2658"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T06:24:50.107Z","repository_id":46921362,"created_at":"2025-08-17T06:24:50.107Z","updated_at":"2025-08-17T06:24:50.107Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478048,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["blockchain","captcha","proof-of-work","sha3"],"created_at":"2026-01-16T08:44:19.465Z","updated_at":"2026-01-16T08:44:19.539Z","avatar_url":"https://github.com/bipbop.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JurisChain\r\n![browser](./images/browser.png)\r\n\r\nInstead of challenging the humans who are working at the terminals, it would be better to challenge the terminals themselves. It's all about balancing out the client's workload so they won't be a victim of a DDoS attack. Inspired by Blockchain technology.\r\n\r\n## About\r\n\r\nOne knows that the computers which serve the publics' courtrooms have suffered from overloads and [DDoS (distributed denial of service) attacks](https://pt.wikipedia.org/wiki/Ataque_de_nega%C3%A7%C3%A3o_de_servi%C3%A7o). Those efforts harm the country's web portal by temporarily shutting it down, bothering the Brazilian judiciary, the lawyers, as well as several different parts of law processes. \r\n\r\nTechniques such as sophisticated firewalls and captchas on the other hand haven't been efficient when it comes to controlling the publics' access, thanks to society's natural process of technological innovation. ([1](https://projurisbrasil.jusbrasil.com.br/artigos/189717091/saiba-o-que-sao-os-captchas-e-como-e-possivel-dribla-los-na-hora-de-fazer-um-acompanhamento-processual-mais-rapido-e-eficiente?ref=feed), [2](https://frradvogados.jusbrasil.com.br/artigos/595582536/big-data-e-acesso-a-informacao-a-legalidade-do-uso-de-bots-robos?ref=feed)) Along with that, several different companies and citizens consume this data without worrying about the stability of the judiciary, be it because of malpractice or disparity.\r\n\r\nWe remind you, that solutions solutions such as NoCaptcha, from companies abroad, have gotten monetary profit from the citizens', lawyers' and the judiciary's time to solve problems from a computational perspective, monitoring the users with the objects of selling advertisements, and providing the problem and solution simultaneously for access control. The users of the country's judiciary web portal instruct the computers of companies from abroad and to those we let loose total and irrestricted access to public information from our country.  \r\n\r\nOn behalf of this, we've created a Blockchain based solution that without the expense of public resources nor the time of public workers, infrastructure and safety costs so that the people and the companies can access the courtrooms in a proportional way. The solutions aims to be simple and more efficient than international ones by being completed internalised, open, being in [agreement with the article 4 of the law number 11.419](http://www.planalto.gov.br/ccivil_03/_Ato2004-2006/2006/Lei/L11419.htm#art14)\r\n\r\n\u003e Article 14. The systems to be developed by the public bodies of the judiciary should use, preferably, open source programs, accessible in an uninterruptible manner by the means of a worldwide network of computers, priorizing their standardization. \r\n\r\n## About\r\n\r\n![keccak](https://keccak.team/assets/img/colors/blue/logo_big.png)\r\n\r\nThe solutions have been built over the work of the [Keccak team](https://keccak.team/), winner of the [NIST (National Institute of Standards and Technology) competition](https://www.nist.gov/), replacing the SHA-1 and SHA-2 predecessors. This is an international standard and has been chosen precisely thanks to its security and conformity, not benefitting one specific user in detriment of the other. Like this, encouraging the usage of fair consumption of the platforms that implement the solution. \r\n\r\n1. https://csrc.nist.gov/csrc/media/projects/hash-functions/documents/keccak-slides-at-nist.pdf\r\n\r\n## Portability- Usage of Public APIs, Apps, Web Portals and Infrastructure.\r\n\r\n![C Language](./images/c_128x128.png)\r\n\r\nThe implementation is made in C (a low-level programming language), guaranteeing that all the platforms profit from the technology thanks to its portability. The challenge can be used by public APIs, apps or web portals, avoiding the overload of services.\r\n\r\n\u003e The core C language is extremely portable. The standard Unix implementation is the GNU C compiler, which is ubiquitous not only in open-source Unixes but modern proprietary Unixes as well. GNU C has been ported to Windows and classic MacOS, but is not widely used in either environment because it lacks portable bindings to the native GUI.\r\n\u003e \r\n\u003e The standard I/O library, mathematics routines, and internationalization support are portable across all C implementations. File I/O, signals, and process control are portable across Unixes provided one takes care to use only the modern APIs described in the Single Unix Specification; older C code often has thickets of preprocessor conditionals for portability, but those handle legacy pre-POSIX interfaces from older proprietary Unixes that are obsolete or close to it in 2003.\r\n\u003e \r\n\u003e C portability starts to be a more serious problem near IPC, threads, and GUI interfaces. We discussed IPC and threads portability issues in Chapter 7. The real practical problem is GUI toolkits. A number of open-source GUI toolkits are universally portable across modern Unixes and to Windows and classic MacOS as well — Tk, wxWindows, GTK, and Qt are four well-known ones with source code and documentation readily discoverable by Web search. But none of them is shipped with all platforms, and (for reasons more legal than technical) none of these offers the native-GUI look and feel on all platforms. We gave some guidelines for coping in Chapter 15.\r\n\u003e \r\n\u003e Volumes have been written on the subject of how to write portable C code. This book is not going to be one of them. Instead, we recommend a careful reading of Recommended C Style and Coding Standards [Cannon] and the chapter on portability in The Practice of Programming [Kernighan-Pike99].\r\n\r\n[1] http://www.catb.org/~esr/writings/taoup/html/ch17s05.html\r\n\r\n### Prepared for the Web\r\n\r\n![EMCC](./images/Emscripten_logo_full.png)\r\n\r\nWe use EMCC (Emscripten Compiler Frontend) to deliver a fast code code to the browsers, so that they'll be highly efficient at the challenges that come with the challenge of bringing an excellent user experience.\r\n\r\n## API\r\n\r\n### Web Browser\r\n```html\r\n  \u003clink href=\"./style.css\" rel=\"stylesheet\" type=\"text/css\" /\u003e\r\n  \u003cscript\u003e\r\n    /* Challenge Configuration */\r\n    window.jurischain = {\r\n      seed: 'TrueRandomValue',\r\n      difficulty: 10,\r\n    };\r\n    /* generates an event when solved */\r\n    document.addEventListener('jurischain', ({ detail: response }) =\u003e console.log(response));\r\n  \u003c/script\u003e\r\n  \u003c!-- Elemento --\u003e\r\n  \u003cdiv id=\"jurischain-captcha\"\u003e\u003c/div\u003e\r\n  \u003cscript src=\"./jurischain.js\"\u003e\u003c/script\u003e\r\n```\r\n\r\n![on-browser](./images/photo.jpg)\r\n\r\n### C\r\n```c\r\nvoid jurischain_gen(jurischain_ctx_t *challenge, uint8_t difficulty, const void *seed, size_t inlen);\r\n\r\n- Creates a new challenge with a certain degree of complexity and a seed.\r\n```\r\n```c\r\nint jurischain_verify(jurischain_ctx_t *challenge)\r\n\r\n- Receives a pointer with a challenge and verifies if it can solve the challenge, returning to 1 if it solves it or 0 in case it doesn't.\r\n```\r\n```c\r\nint jurischain_try(jurischain_ctx_t *challenge)\r\n\r\n- Receives a pointer with a challenge and tries to solve it, returning 1 in case it does and 0 if it doesn't. \r\n```\r\n### NodeJS\r\n![Node Logo](https://software.intel.com/sites/default/files/managed/fa/a0/Runtime-logo-Node.jpg)\r\n```sh\r\n$ make\r\n# sudo make install\r\n# sudo ldconfig\r\n$ cd interfaces/node\r\n$ npm install\r\n```\r\n\r\n\r\n### PHP\r\n![PHP Logo](./images/new-php-logo.png)\r\n\r\n#### Instalação\r\n\r\n```sh\r\n$ make\r\n# sudo make install\r\n# sudo ldconfig\r\n$ cd interfaces/php\r\n$ phpize\r\n$ ./configure\r\n$ make\r\n$ make test\r\n# sudo make install\r\n```\r\n\r\n#### Usage\r\n\r\n```php\r\n/**Creates a new challenge*/\r\n$seed = openssl_random_pseudo_bytes(32);\r\n$difficulty = 10;\r\n\r\n$jurischain = jurischain_gen($difficulty, $seed);\r\nwhile (!jurischain_try($jurischain));\r\nvar_dump(jurischain_get($jurischain));\r\n\r\n$jurischain_new = jurischain_gen($difficulty, $seed);\r\njurischain_set($jurischain_new, $_POST[\"jurischain\"]);\r\nvar_dump(jurischain_verify($jurischain_new));\r\n```\r\n\r\n## Statistics\r\n\r\n![on-browser](./images/multicomplexity.jpg)\r\n\r\nTo generate a chart of the number of tries/degree of dificulty of the challenge, do the following: \r\n\r\n```bash\r\nmake all\r\nvirtualenv .env/\r\npip install -r requirements.txt\r\npython3 genstats.py\r\n```\r\nThe results will be in the folder `stats/`. \r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbipbop%2Fjurischain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbipbop%2Fjurischain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbipbop%2Fjurischain/lists"}