Repository files navigation

Sign x Lit

Demo

alt text

Approach: Integrating Lit Protocol with Sign Protocol's SDK

This section outlines the steps and approach I followed to integrate the Lit Protocol with the Sign Protocol SDK for gated access and encrypted attestations. The focus was on ensuring compatibility while enhancing functionality with Lit's encryption capabilities.

Key Steps in the Integration

  • Migration to TSC Builder
  • Replaced the Rollups builder in the sp-sdk with the native TypeScript (TSC) builder.
  • This change resolved compatibility issues between the sp-sdk and Lit Protocol SDK.
  • The migration ensures smoother builds and aligns with the evolving requirements of the SDK ecosystem.

Support for Gated Access

  • Added additional arguments in options like gated, accessControlConditions in create, get and revoke attestations
  • Currently, this feature is limited to on-chain attestations only, with plans for broader support in future iterations.

Handling Encrypted Attestations

  • When an attestation is marked as encrypted the base64 encrypted string and data hash are securely stored on-chain.
  • These encrypted values can only be decrypted using the access conditions specified at the time of creation.
  • The integration with Lit Protocol ensures robust encryption and access control, leveraging its advanced encryption capabilities.

On chain gated attestations

import{SignProtocolClient,SpMode,EvmChains,delegateSignAttestation,delegateSignRevokeAttestation,delegateSignSchema,}from"@ethsign/sp-sdk"import{privateKeyToAccount}from"viem/accounts"constprivateKey="0xabc"// optionalconstclient=newSignProtocolClient(SpMode.OnChain,{chain: EvmChains.sepolia,account: privateKeyToAccount(privateKey),// optional})//create schemaconstcreateSchemaRes=awaitclient.createSchema({name: "xxx",data: [{name: "name",type: "string"}],})// delegation create schemaconstdelegationPrivateKey="0xaaaaa"constinfo=awaitdelegateSignSchema({name: "xxx",data: [{name: "name",type: "string"}],},{chain: EvmChains.sepolia,delegationAccount: privateKeyToAccount(delegationPrivateKey),})constdelegateCreateSchemaRes=awaitclient.createSchema(info.schema,{delegationSignature: info.delegationSignature,})// create attestationconstcreateAttestationRes=awaitclient.createAttestation({schemaId: "0x3",data: {name: "a"},indexingValue: "xxx",},{gated: true,// Enable gatedaccessControlConditions: [{contractAddress: "0xC5E9dDebb09Cd64DfaCab4011A0D5cEDaf7c9BDb",standardContractType: "ProofOfHumanity",chain: "ethereum",method: "isRegistered",parameters: [":userAddress"],returnValueTest: {comparator: "=",value: "true",},},],// specify access control conditions})//revoke attestationconstgetAttestationRes=awaitclient.getAttestation("0x3",{gated: true,})// specify gated to decrypt attestation

Instructions

Follow the steps below to clone the repository, set up the environment, and run the demo:

Clone the Repository

  1. Clone the repository to your local machine using the following command:

    git clone https://github.com/DaevMithran/SignxLit.git
  2. Navigate to the Demo Directory

    cd demo
  3. Install Dependencies

    npm i --save
  4. Add a Private Key

  • Create a .env file in the demo directory.

  • Add a 32-seed private key in the .env file as follows:

    PRIVATE_KEY=<your-32-seed-private-key>
  1. Build the Project

    npm run build
  2. Start the Demo

    npm start

Links

About

SignXLit introduces gated attestations in sign protocol to publish access controlled encrypted attestation on any evm chain

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Sign x Lit

Demo

alt text

Approach: Integrating Lit Protocol with Sign Protocol's SDK

This section outlines the steps and approach I followed to integrate the Lit Protocol with the Sign Protocol SDK for gated access and encrypted attestations. The focus was on ensuring compatibility while enhancing functionality with Lit's encryption capabilities.

Key Steps in the Integration

  • Migration to TSC Builder
  • Replaced the Rollups builder in the sp-sdk with the native TypeScript (TSC) builder.
  • This change resolved compatibility issues between the sp-sdk and Lit Protocol SDK.
  • The migration ensures smoother builds and aligns with the evolving requirements of the SDK ecosystem.

Support for Gated Access

  • Added additional arguments in options like gated, accessControlConditions in create, get and revoke attestations
  • Currently, this feature is limited to on-chain attestations only, with plans for broader support in future iterations.

Handling Encrypted Attestations

  • When an attestation is marked as encrypted the base64 encrypted string and data hash are securely stored on-chain.
  • These encrypted values can only be decrypted using the access conditions specified at the time of creation.
  • The integration with Lit Protocol ensures robust encryption and access control, leveraging its advanced encryption capabilities.

On chain gated attestations

import{SignProtocolClient,SpMode,EvmChains,delegateSignAttestation,delegateSignRevokeAttestation,delegateSignSchema,}from"@ethsign/sp-sdk"import{privateKeyToAccount}from"viem/accounts"constprivateKey="0xabc"// optionalconstclient=newSignProtocolClient(SpMode.OnChain,{chain: EvmChains.sepolia,account: privateKeyToAccount(privateKey),// optional})//create schemaconstcreateSchemaRes=awaitclient.createSchema({name: "xxx",data: [{name: "name",type: "string"}],})// delegation create schemaconstdelegationPrivateKey="0xaaaaa"constinfo=awaitdelegateSignSchema({name: "xxx",data: [{name: "name",type: "string"}],},{chain: EvmChains.sepolia,delegationAccount: privateKeyToAccount(delegationPrivateKey),})constdelegateCreateSchemaRes=awaitclient.createSchema(info.schema,{delegationSignature: info.delegationSignature,})// create attestationconstcreateAttestationRes=awaitclient.createAttestation({schemaId: "0x3",data: {name: "a"},indexingValue: "xxx",},{gated: true,// Enable gatedaccessControlConditions: [{contractAddress: "0xC5E9dDebb09Cd64DfaCab4011A0D5cEDaf7c9BDb",standardContractType: "ProofOfHumanity",chain: "ethereum",method: "isRegistered",parameters: [":userAddress"],returnValueTest: {comparator: "=",value: "true",},},],// specify access control conditions})//revoke attestationconstgetAttestationRes=awaitclient.getAttestation("0x3",{gated: true,})// specify gated to decrypt attestation

Instructions

Follow the steps below to clone the repository, set up the environment, and run the demo:

Clone the Repository

  1. Clone the repository to your local machine using the following command:

    git clone https://github.com/DaevMithran/SignxLit.git
  2. Navigate to the Demo Directory

    cd demo
  3. Install Dependencies

    npm i --save
  4. Add a Private Key

  • Create a .env file in the demo directory.

  • Add a 32-seed private key in the .env file as follows:

    PRIVATE_KEY=<your-32-seed-private-key>
  1. Build the Project

    npm run build
  2. Start the Demo

    npm start

Links

About

SignXLit introduces gated attestations in sign protocol to publish access controlled encrypted attestation on any evm chain

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Sign x Lit

Demo

alt text

Approach: Integrating Lit Protocol with Sign Protocol's SDK

This section outlines the steps and approach I followed to integrate the Lit Protocol with the Sign Protocol SDK for gated access and encrypted attestations. The focus was on ensuring compatibility while enhancing functionality with Lit's encryption capabilities.

Key Steps in the Integration

  • Migration to TSC Builder
  • Replaced the Rollups builder in the sp-sdk with the native TypeScript (TSC) builder.
  • This change resolved compatibility issues between the sp-sdk and Lit Protocol SDK.
  • The migration ensures smoother builds and aligns with the evolving requirements of the SDK ecosystem.

Support for Gated Access

  • Added additional arguments in options like gated, accessControlConditions in create, get and revoke attestations
  • Currently, this feature is limited to on-chain attestations only, with plans for broader support in future iterations.

Handling Encrypted Attestations

  • When an attestation is marked as encrypted the base64 encrypted string and data hash are securely stored on-chain.
  • These encrypted values can only be decrypted using the access conditions specified at the time of creation.
  • The integration with Lit Protocol ensures robust encryption and access control, leveraging its advanced encryption capabilities.

On chain gated attestations

import{SignProtocolClient,SpMode,EvmChains,delegateSignAttestation,delegateSignRevokeAttestation,delegateSignSchema,}from"@ethsign/sp-sdk"import{privateKeyToAccount}from"viem/accounts"constprivateKey="0xabc"// optionalconstclient=newSignProtocolClient(SpMode.OnChain,{chain: EvmChains.sepolia,account: privateKeyToAccount(privateKey),// optional})//create schemaconstcreateSchemaRes=awaitclient.createSchema({name: "xxx",data: [{name: "name",type: "string"}],})// delegation create schemaconstdelegationPrivateKey="0xaaaaa"constinfo=awaitdelegateSignSchema({name: "xxx",data: [{name: "name",type: "string"}],},{chain: EvmChains.sepolia,delegationAccount: privateKeyToAccount(delegationPrivateKey),})constdelegateCreateSchemaRes=awaitclient.createSchema(info.schema,{delegationSignature: info.delegationSignature,})// create attestationconstcreateAttestationRes=awaitclient.createAttestation({schemaId: "0x3",data: {name: "a"},indexingValue: "xxx",},{gated: true,// Enable gatedaccessControlConditions: [{contractAddress: "0xC5E9dDebb09Cd64DfaCab4011A0D5cEDaf7c9BDb",standardContractType: "ProofOfHumanity",chain: "ethereum",method: "isRegistered",parameters: [":userAddress"],returnValueTest: {comparator: "=",value: "true",},},],// specify access control conditions})//revoke attestationconstgetAttestationRes=awaitclient.getAttestation("0x3",{gated: true,})// specify gated to decrypt attestation

Instructions

Follow the steps below to clone the repository, set up the environment, and run the demo:

Clone the Repository

  1. Clone the repository to your local machine using the following command:

    git clone https://github.com/DaevMithran/SignxLit.git
  2. Navigate to the Demo Directory

    cd demo
  3. Install Dependencies

    npm i --save
  4. Add a Private Key

  • Create a .env file in the demo directory.

  • Add a 32-seed private key in the .env file as follows:

    PRIVATE_KEY=<your-32-seed-private-key>
  1. Build the Project

    npm run build
  2. Start the Demo

    npm start

Links

About

SignXLit introduces gated attestations in sign protocol to publish access controlled encrypted attestation on any evm chain

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Sign x Lit

Demo

alt text

Approach: Integrating Lit Protocol with Sign Protocol's SDK

This section outlines the steps and approach I followed to integrate the Lit Protocol with the Sign Protocol SDK for gated access and encrypted attestations. The focus was on ensuring compatibility while enhancing functionality with Lit's encryption capabilities.

Key Steps in the Integration

  • Migration to TSC Builder
  • Replaced the Rollups builder in the sp-sdk with the native TypeScript (TSC) builder.
  • This change resolved compatibility issues between the sp-sdk and Lit Protocol SDK.
  • The migration ensures smoother builds and aligns with the evolving requirements of the SDK ecosystem.

Support for Gated Access

  • Added additional arguments in options like gated, accessControlConditions in create, get and revoke attestations
  • Currently, this feature is limited to on-chain attestations only, with plans for broader support in future iterations.

Handling Encrypted Attestations

  • When an attestation is marked as encrypted the base64 encrypted string and data hash are securely stored on-chain.
  • These encrypted values can only be decrypted using the access conditions specified at the time of creation.
  • The integration with Lit Protocol ensures robust encryption and access control, leveraging its advanced encryption capabilities.

On chain gated attestations

import{SignProtocolClient,SpMode,EvmChains,delegateSignAttestation,delegateSignRevokeAttestation,delegateSignSchema,}from"@ethsign/sp-sdk"import{privateKeyToAccount}from"viem/accounts"constprivateKey="0xabc"// optionalconstclient=newSignProtocolClient(SpMode.OnChain,{chain: EvmChains.sepolia,account: privateKeyToAccount(privateKey),// optional})//create schemaconstcreateSchemaRes=awaitclient.createSchema({name: "xxx",data: [{name: "name",type: "string"}],})// delegation create schemaconstdelegationPrivateKey="0xaaaaa"constinfo=awaitdelegateSignSchema({name: "xxx",data: [{name: "name",type: "string"}],},{chain: EvmChains.sepolia,delegationAccount: privateKeyToAccount(delegationPrivateKey),})constdelegateCreateSchemaRes=awaitclient.createSchema(info.schema,{delegationSignature: info.delegationSignature,})// create attestationconstcreateAttestationRes=awaitclient.createAttestation({schemaId: "0x3",data: {name: "a"},indexingValue: "xxx",},{gated: true,// Enable gatedaccessControlConditions: [{contractAddress: "0xC5E9dDebb09Cd64DfaCab4011A0D5cEDaf7c9BDb",standardContractType: "ProofOfHumanity",chain: "ethereum",method: "isRegistered",parameters: [":userAddress"],returnValueTest: {comparator: "=",value: "true",},},],// specify access control conditions})//revoke attestationconstgetAttestationRes=awaitclient.getAttestation("0x3",{gated: true,})// specify gated to decrypt attestation

Instructions

Follow the steps below to clone the repository, set up the environment, and run the demo:

Clone the Repository

  1. Clone the repository to your local machine using the following command:

    git clone https://github.com/DaevMithran/SignxLit.git
  2. Navigate to the Demo Directory

    cd demo
  3. Install Dependencies

    npm i --save
  4. Add a Private Key

  • Create a .env file in the demo directory.

  • Add a 32-seed private key in the .env file as follows:

    PRIVATE_KEY=<your-32-seed-private-key>
  1. Build the Project

    npm run build
  2. Start the Demo

    npm start

Links

About

SignXLit introduces gated attestations in sign protocol to publish access controlled encrypted attestation on any evm chain

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Sign x Lit

Demo

alt text

Approach: Integrating Lit Protocol with Sign Protocol's SDK

This section outlines the steps and approach I followed to integrate the Lit Protocol with the Sign Protocol SDK for gated access and encrypted attestations. The focus was on ensuring compatibility while enhancing functionality with Lit's encryption capabilities.

Key Steps in the Integration

  • Migration to TSC Builder
  • Replaced the Rollups builder in the sp-sdk with the native TypeScript (TSC) builder.
  • This change resolved compatibility issues between the sp-sdk and Lit Protocol SDK.
  • The migration ensures smoother builds and aligns with the evolving requirements of the SDK ecosystem.

Support for Gated Access

  • Added additional arguments in options like gated, accessControlConditions in create, get and revoke attestations
  • Currently, this feature is limited to on-chain attestations only, with plans for broader support in future iterations.

Handling Encrypted Attestations

  • When an attestation is marked as encrypted the base64 encrypted string and data hash are securely stored on-chain.
  • These encrypted values can only be decrypted using the access conditions specified at the time of creation.
  • The integration with Lit Protocol ensures robust encryption and access control, leveraging its advanced encryption capabilities.

On chain gated attestations

import{SignProtocolClient,SpMode,EvmChains,delegateSignAttestation,delegateSignRevokeAttestation,delegateSignSchema,}from"@ethsign/sp-sdk"import{privateKeyToAccount}from"viem/accounts"constprivateKey="0xabc"// optionalconstclient=newSignProtocolClient(SpMode.OnChain,{chain: EvmChains.sepolia,account: privateKeyToAccount(privateKey),// optional})//create schemaconstcreateSchemaRes=awaitclient.createSchema({name: "xxx",data: [{name: "name",type: "string"}],})// delegation create schemaconstdelegationPrivateKey="0xaaaaa"constinfo=awaitdelegateSignSchema({name: "xxx",data: [{name: "name",type: "string"}],},{chain: EvmChains.sepolia,delegationAccount: privateKeyToAccount(delegationPrivateKey),})constdelegateCreateSchemaRes=awaitclient.createSchema(info.schema,{delegationSignature: info.delegationSignature,})// create attestationconstcreateAttestationRes=awaitclient.createAttestation({schemaId: "0x3",data: {name: "a"},indexingValue: "xxx",},{gated: true,// Enable gatedaccessControlConditions: [{contractAddress: "0xC5E9dDebb09Cd64DfaCab4011A0D5cEDaf7c9BDb",standardContractType: "ProofOfHumanity",chain: "ethereum",method: "isRegistered",parameters: [":userAddress"],returnValueTest: {comparator: "=",value: "true",},},],// specify access control conditions})//revoke attestationconstgetAttestationRes=awaitclient.getAttestation("0x3",{gated: true,})// specify gated to decrypt attestation

Instructions

Follow the steps below to clone the repository, set up the environment, and run the demo:

Clone the Repository

  1. Clone the repository to your local machine using the following command:

    git clone https://github.com/DaevMithran/SignxLit.git
  2. Navigate to the Demo Directory

    cd demo
  3. Install Dependencies

    npm i --save
  4. Add a Private Key

  • Create a .env file in the demo directory.

  • Add a 32-seed private key in the .env file as follows:

    PRIVATE_KEY=<your-32-seed-private-key>
  1. Build the Project

    npm run build
  2. Start the Demo

    npm start

Links

About

SignXLit introduces gated attestations in sign protocol to publish access controlled encrypted attestation on any evm chain

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Sign x Lit

Demo

alt text

Approach: Integrating Lit Protocol with Sign Protocol's SDK

This section outlines the steps and approach I followed to integrate the Lit Protocol with the Sign Protocol SDK for gated access and encrypted attestations. The focus was on ensuring compatibility while enhancing functionality with Lit's encryption capabilities.

Key Steps in the Integration

  • Migration to TSC Builder
  • Replaced the Rollups builder in the sp-sdk with the native TypeScript (TSC) builder.
  • This change resolved compatibility issues between the sp-sdk and Lit Protocol SDK.
  • The migration ensures smoother builds and aligns with the evolving requirements of the SDK ecosystem.

Support for Gated Access

  • Added additional arguments in options like gated, accessControlConditions in create, get and revoke attestations
  • Currently, this feature is limited to on-chain attestations only, with plans for broader support in future iterations.

Handling Encrypted Attestations

  • When an attestation is marked as encrypted the base64 encrypted string and data hash are securely stored on-chain.
  • These encrypted values can only be decrypted using the access conditions specified at the time of creation.
  • The integration with Lit Protocol ensures robust encryption and access control, leveraging its advanced encryption capabilities.

On chain gated attestations

import{SignProtocolClient,SpMode,EvmChains,delegateSignAttestation,delegateSignRevokeAttestation,delegateSignSchema,}from"@ethsign/sp-sdk"import{privateKeyToAccount}from"viem/accounts"constprivateKey="0xabc"// optionalconstclient=newSignProtocolClient(SpMode.OnChain,{chain: EvmChains.sepolia,account: privateKeyToAccount(privateKey),// optional})//create schemaconstcreateSchemaRes=awaitclient.createSchema({name: "xxx",data: [{name: "name",type: "string"}],})// delegation create schemaconstdelegationPrivateKey="0xaaaaa"constinfo=awaitdelegateSignSchema({name: "xxx",data: [{name: "name",type: "string"}],},{chain: EvmChains.sepolia,delegationAccount: privateKeyToAccount(delegationPrivateKey),})constdelegateCreateSchemaRes=awaitclient.createSchema(info.schema,{delegationSignature: info.delegationSignature,})// create attestationconstcreateAttestationRes=awaitclient.createAttestation({schemaId: "0x3",data: {name: "a"},indexingValue: "xxx",},{gated: true,// Enable gatedaccessControlConditions: [{contractAddress: "0xC5E9dDebb09Cd64DfaCab4011A0D5cEDaf7c9BDb",standardContractType: "ProofOfHumanity",chain: "ethereum",method: "isRegistered",parameters: [":userAddress"],returnValueTest: {comparator: "=",value: "true",},},],// specify access control conditions})//revoke attestationconstgetAttestationRes=awaitclient.getAttestation("0x3",{gated: true,})// specify gated to decrypt attestation

Instructions

Follow the steps below to clone the repository, set up the environment, and run the demo:

Clone the Repository

  1. Clone the repository to your local machine using the following command:

    git clone https://github.com/DaevMithran/SignxLit.git
  2. Navigate to the Demo Directory

    cd demo
  3. Install Dependencies

    npm i --save
  4. Add a Private Key

  • Create a .env file in the demo directory.

  • Add a 32-seed private key in the .env file as follows:

    PRIVATE_KEY=<your-32-seed-private-key>
  1. Build the Project

    npm run build
  2. Start the Demo

    npm start

Links

About

SignXLit introduces gated attestations in sign protocol to publish access controlled encrypted attestation on any evm chain

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Sign x Lit

Demo

alt text

Approach: Integrating Lit Protocol with Sign Protocol's SDK

This section outlines the steps and approach I followed to integrate the Lit Protocol with the Sign Protocol SDK for gated access and encrypted attestations. The focus was on ensuring compatibility while enhancing functionality with Lit's encryption capabilities.

Key Steps in the Integration

  • Migration to TSC Builder
  • Replaced the Rollups builder in the sp-sdk with the native TypeScript (TSC) builder.
  • This change resolved compatibility issues between the sp-sdk and Lit Protocol SDK.
  • The migration ensures smoother builds and aligns with the evolving requirements of the SDK ecosystem.

Support for Gated Access

  • Added additional arguments in options like gated, accessControlConditions in create, get and revoke attestations
  • Currently, this feature is limited to on-chain attestations only, with plans for broader support in future iterations.

Handling Encrypted Attestations

  • When an attestation is marked as encrypted the base64 encrypted string and data hash are securely stored on-chain.
  • These encrypted values can only be decrypted using the access conditions specified at the time of creation.
  • The integration with Lit Protocol ensures robust encryption and access control, leveraging its advanced encryption capabilities.

On chain gated attestations

import{SignProtocolClient,SpMode,EvmChains,delegateSignAttestation,delegateSignRevokeAttestation,delegateSignSchema,}from"@ethsign/sp-sdk"import{privateKeyToAccount}from"viem/accounts"constprivateKey="0xabc"// optionalconstclient=newSignProtocolClient(SpMode.OnChain,{chain: EvmChains.sepolia,account: privateKeyToAccount(privateKey),// optional})//create schemaconstcreateSchemaRes=awaitclient.createSchema({name: "xxx",data: [{name: "name",type: "string"}],})// delegation create schemaconstdelegationPrivateKey="0xaaaaa"constinfo=awaitdelegateSignSchema({name: "xxx",data: [{name: "name",type: "string"}],},{chain: EvmChains.sepolia,delegationAccount: privateKeyToAccount(delegationPrivateKey),})constdelegateCreateSchemaRes=awaitclient.createSchema(info.schema,{delegationSignature: info.delegationSignature,})// create attestationconstcreateAttestationRes=awaitclient.createAttestation({schemaId: "0x3",data: {name: "a"},indexingValue: "xxx",},{gated: true,// Enable gatedaccessControlConditions: [{contractAddress: "0xC5E9dDebb09Cd64DfaCab4011A0D5cEDaf7c9BDb",standardContractType: "ProofOfHumanity",chain: "ethereum",method: "isRegistered",parameters: [":userAddress"],returnValueTest: {comparator: "=",value: "true",},},],// specify access control conditions})//revoke attestationconstgetAttestationRes=awaitclient.getAttestation("0x3",{gated: true,})// specify gated to decrypt attestation

Instructions

Follow the steps below to clone the repository, set up the environment, and run the demo:

Clone the Repository

  1. Clone the repository to your local machine using the following command:

    git clone https://github.com/DaevMithran/SignxLit.git
  2. Navigate to the Demo Directory

    cd demo
  3. Install Dependencies

    npm i --save
  4. Add a Private Key

  • Create a .env file in the demo directory.

  • Add a 32-seed private key in the .env file as follows:

    PRIVATE_KEY=<your-32-seed-private-key>
  1. Build the Project

    npm run build
  2. Start the Demo

    npm start

Links

About

SignXLit introduces gated attestations in sign protocol to publish access controlled encrypted attestation on any evm chain

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Sign x Lit

Demo

alt text

Approach: Integrating Lit Protocol with Sign Protocol's SDK

This section outlines the steps and approach I followed to integrate the Lit Protocol with the Sign Protocol SDK for gated access and encrypted attestations. The focus was on ensuring compatibility while enhancing functionality with Lit's encryption capabilities.

Key Steps in the Integration

  • Migration to TSC Builder
  • Replaced the Rollups builder in the sp-sdk with the native TypeScript (TSC) builder.
  • This change resolved compatibility issues between the sp-sdk and Lit Protocol SDK.
  • The migration ensures smoother builds and aligns with the evolving requirements of the SDK ecosystem.

Support for Gated Access

  • Added additional arguments in options like gated, accessControlConditions in create, get and revoke attestations
  • Currently, this feature is limited to on-chain attestations only, with plans for broader support in future iterations.

Handling Encrypted Attestations

  • When an attestation is marked as encrypted the base64 encrypted string and data hash are securely stored on-chain.
  • These encrypted values can only be decrypted using the access conditions specified at the time of creation.
  • The integration with Lit Protocol ensures robust encryption and access control, leveraging its advanced encryption capabilities.

On chain gated attestations

import{SignProtocolClient,SpMode,EvmChains,delegateSignAttestation,delegateSignRevokeAttestation,delegateSignSchema,}from"@ethsign/sp-sdk"import{privateKeyToAccount}from"viem/accounts"constprivateKey="0xabc"// optionalconstclient=newSignProtocolClient(SpMode.OnChain,{chain: EvmChains.sepolia,account: privateKeyToAccount(privateKey),// optional})//create schemaconstcreateSchemaRes=awaitclient.createSchema({name: "xxx",data: [{name: "name",type: "string"}],})// delegation create schemaconstdelegationPrivateKey="0xaaaaa"constinfo=awaitdelegateSignSchema({name: "xxx",data: [{name: "name",type: "string"}],},{chain: EvmChains.sepolia,delegationAccount: privateKeyToAccount(delegationPrivateKey),})constdelegateCreateSchemaRes=awaitclient.createSchema(info.schema,{delegationSignature: info.delegationSignature,})// create attestationconstcreateAttestationRes=awaitclient.createAttestation({schemaId: "0x3",data: {name: "a"},indexingValue: "xxx",},{gated: true,// Enable gatedaccessControlConditions: [{contractAddress: "0xC5E9dDebb09Cd64DfaCab4011A0D5cEDaf7c9BDb",standardContractType: "ProofOfHumanity",chain: "ethereum",method: "isRegistered",parameters: [":userAddress"],returnValueTest: {comparator: "=",value: "true",},},],// specify access control conditions})//revoke attestationconstgetAttestationRes=awaitclient.getAttestation("0x3",{gated: true,})// specify gated to decrypt attestation

Instructions

Follow the steps below to clone the repository, set up the environment, and run the demo:

Clone the Repository

  1. Clone the repository to your local machine using the following command:

    git clone https://github.com/DaevMithran/SignxLit.git
  2. Navigate to the Demo Directory

    cd demo
  3. Install Dependencies

    npm i --save
  4. Add a Private Key

  • Create a .env file in the demo directory.

  • Add a 32-seed private key in the .env file as follows:

    PRIVATE_KEY=<your-32-seed-private-key>
  1. Build the Project

    npm run build
  2. Start the Demo

    npm start

Links

About

SignXLit introduces gated attestations in sign protocol to publish access controlled encrypted attestation on any evm chain

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages