· Nacho Coll · Guides  · 8 মিনিট পড়ুন

IPFS CID ব্যাখ্যা: এটি কী এবং কন্টেন্ট অ্যাড্রেসিং কীভাবে কাজ করে

IPFS কন্টেন্ট আইডেন্টিফায়ার (CIDs) এর স্পষ্ট প্রযুক্তিগত ব্যাখ্যা। কন্টেন্ট অ্যাড্রেসিং কীভাবে কাজ করে, CID সংস্করণ এবং আপনার প্রথম CID তৈরি করার উপায়।

IPFS কন্টেন্ট আইডেন্টিফায়ার (CIDs) এর স্পষ্ট প্রযুক্তিগত ব্যাখ্যা। কন্টেন্ট অ্যাড্রেসিং কীভাবে কাজ করে, CID সংস্করণ এবং আপনার প্রথম CID তৈরি করার উপায়।

আপনি যদি কখনো IPFS (InterPlanetary File System) এর সাথে কাজ করে থাকেন, তাহলে আপনি সম্ভবত QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG বা bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi এর মতো স্ট্রিংয়ের সম্মুখীন হয়েছেন। এগুলি এলোমেলো বাজে কথা নয় — এগুলি হলো Content Identifiers (CIDs), IPFS এর কন্টেন্ট অ্যাড্রেসিং সিস্টেমের মেরুদণ্ড।

CIDs বোঝা যেকোনো ব্যক্তির জন্য গুরুত্বপূর্ণ যারা IPFS এর উপর তৈরি করছেন, আপনি ফাইল আপলোড করছেন, বিকেন্দ্রীভূত অ্যাপ্লিকেশন তৈরি করছেন, বা কন্টেন্ট ডিস্ট্রিবিউশন সিস্টেম বাস্তবায়ন করছেন। এই গাইডটি আপনাকে IPFS CIDs সম্পর্কে যা জানা প্রয়োজন, কন্টেন্ট অ্যাড্রেসিং কীভাবে কাজ করে এবং আপনার প্রকল্পগুলিতে সেগুলি ব্যবহার করা শুরু করার উপায় ব্যাখ্যা করবে।

IPFS Ninja

IPFS CID কী?

একটি Content Identifier (CID) একটি অনন্য ফিঙ্গারপ্রিন্ট যা IPFS এ কন্টেন্টের একটি অংশকে প্রতিনিধিত্ব করে। প্রচলিত ওয়েব URL এর বিপরীতে যা একটি অবস্থানের দিকে নির্দেশ করে (যেমন https://example.com/file.pdf), CIDs কন্টেন্ট নিজেই নির্দেশ করে, এটি কোথায় সংরক্ষিত আছে তা নির্বিশেষে।

এভাবে চিন্তা করুন:

  • অবস্থান-ভিত্তিক অ্যাড্রেসিং: “প্রধান সড়ক ১২৩-এ যান এবং লাল বই চান”
  • কন্টেন্ট-ভিত্তিক অ্যাড্রেসিং: “ISBN ৯৭৮-০-১২৩৪৫৬-৭৮-৯ সহ বইটি খুঁজুন” (কোন লাইব্রেরিতে এটি আছে তা গুরুত্বপূর্ণ নয়)

CIDs একইভাবে কাজ করে — তারা তাদের ক্রিপ্টোগ্রাফিক হ্যাশের উপর ভিত্তি করে কন্টেন্ট সনাক্ত করে, কন্টেন্টকে অপরিবর্তনীয় এবং যাচাইযোগ্য করে তোলে। যদি ফাইলে একটি বাইটও পরিবর্তিত হয়, CID সম্পূর্ণরূপে পরিবর্তিত হয়।

কেন কন্টেন্ট অ্যাড্রেসিং গুরুত্বপূর্ণ

প্রচলিত ওয়েব আর্কিটেকচার অবস্থান-ভিত্তিক অ্যাড্রেসিং এর উপর নির্ভর করে। আপনি যখন https://example.com/image.jpg পরিদর্শন করেন, তখন আপনি বিশ্বাস করেন যে:

  1. ডোমেন মালিক কন্টেন্ট পরিবর্তন করেনি
  2. সার্ভার অনলাইন এবং অ্যাক্সেসযোগ্য
  3. কন্টেন্টটি টেম্পার করা হয়নি

CIDs ব্যবহার করে কন্টেন্ট অ্যাড্রেসিং এর সাথে:

  1. অপরিবর্তনীয়তা: CID গ্যারান্টি দেয় যে কন্টেন্ট পরিবর্তিত হয়নি
  2. বিকেন্দ্রীকরণ: যেকোনো IPFS নোড থেকে কন্টেন্ট পুনরুদ্ধার করা যেতে পারে যার কাছে এটি আছে
  3. যাচাই: আপনি ক্রিপ্টোগ্রাফিকভাবে যাচাই করতে পারেন যে আপনি সঠিক কন্টেন্ট পেয়েছেন
  4. দক্ষতা: অভিন্ন কন্টেন্ট স্বয়ংক্রিয়ভাবে ডিডুপ্লিকেট হয়

CID এর অ্যানাটমি

এর উপাদানগুলি বোঝার জন্য একটি সাধারণ CID ভেঙে ফেলি:

bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi
└─┬─┘└─────────────────┬─────────────────────────────────┘
  │                   │
  │                   └─ কন্টেন্ট হ্যাশ (Base32 এনকোডেড)
  └─ Multibase উপসর্গ (এনকোডিং নির্দেশ করে)

একটি CID তে বেশ কয়েকটি তথ্য থাকে:

1. Multibase উপসর্গ

প্রথম অক্ষরটি ইঙ্গিত দেয় যে কীভাবে CID এনকোড করা হয়েছে:

  • Q = Base58 এনকোডিং (CIDv0)
  • b = Base32 এনকোডিং (CIDv1)
  • f = Base16/হেক্সাডেসিমেল (CIDv1)
  • z = Base58 (CIDv1)

2. CID সংস্করণ

  • CIDv0: সবসময় Qm দিয়ে শুরু হয়, SHA-256 ব্যবহার করে, DAG-PB codec এ সীমাবদ্ধ
  • CIDv1: আরও নমনীয়, একাধিক হ্যাশ ফাংশন এবং codecs সমর্থন করে

3. Multicodec

কন্টেন্ট কীভাবে কাঠামোগত তা নির্দিষ্ট করে (DAG-PB, DAG-CBOR, কাঁচা বাইট ইত্যাদি)

4. Multihash

কন্টেন্টের প্রকৃত ক্রিপ্টোগ্রাফিক হ্যাশ, যার মধ্যে রয়েছে:

  • হ্যাশ ফাংশন শনাক্তকারী (সাধারণত SHA-256)
  • হ্যাশের দৈর্ঘ্য
  • হ্যাশ ডাইজেস্ট

CIDv0 বনাম CIDv1: পার্থক্য বোঝা

IPFS দুটি প্রধান CID সংস্করণের মাধ্যমে বিকশিত হয়েছে, প্রতিটির আলাদা বৈশিষ্ট্য রয়েছে:

CIDv0: মূল ফরম্যাট

CIDv0 CIDs সর্বদা Qm দিয়ে শুরু হয় এবং এরকম দেখায়:

QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

বৈশিষ্ট্য:

  • শুধুমাত্র Base58 এনকোডিং
  • শুধুমাত্র SHA-256 হ্যাশ ফাংশন
  • শুধুমাত্র DAG-PB (Protobuf) codec
  • ৪৬ অক্ষর দীর্ঘ
  • সব IPFS বাস্তবায়নের সাথে পশ্চাদমুখী সামঞ্জস্যপূর্ণ

কখন CIDv0 ব্যবহার করবেন:

  • পুরানো IPFS নোডগুলির সাথে সর্বাধিক সামঞ্জস্যতা
  • বিদ্যমান সিস্টেমগুলির সাথে কাজ করা যা Qm উপসর্গ আশা করে
  • ফাইল স্টোরেজ (সবচেয়ে সাধারণ ব্যবহারের ক্ষেত্রে)

CIDv1: আধুনিক মান

CIDv1 CIDs আরও নমনীয় এবং এরকম দেখাতে পারে:

bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi  # Base32
zb2rhj7crUKTQYRGCRATFaQ6YFLTde2YzdqbbhAASkL9uRDXn      # Base58
f01551220d1e2c35...                                      # Base16

বৈশিষ্ট্য:

  • একাধিক এনকোডিং ফরম্যাট (Base32, Base58, Base16)
  • বিভিন্ন হ্যাশ ফাংশনের জন্য সমর্থন (SHA-256, SHA-512, BLAKE2 ইত্যাদি)
  • একাধিক codecs (Raw, DAG-CBOR, DAG-JSON ইত্যাদি)
  • স্ব-বিবরণমূলক ফরম্যাট
  • Base32 ব্যবহার করার সময় কেস-অসংবেদনশীল

কখন CIDv1 ব্যবহার করবেন:

  • নতুন অ্যাপ্লিকেশন তৈরি করা
  • কেস-অসংবেদনশীল শনাক্তকারী প্রয়োজন
  • কাঠামোগত ডেটা (JSON, CBOR) এর সাথে কাজ করা
  • বিকল্প হ্যাশ ফাংশন ব্যবহার করা

সংস্করণগুলির মধ্যে রূপান্তর

আপনি একই কন্টেন্ট রেফারেন্স বজায় রেখে সংস্করণগুলির মধ্যে CIDs রূপান্তর করতে পারেন:

// CIDv0
const cidv0 = "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG";

// Convert to CIDv1 Base32
const cidv1 = "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi";

// Both reference the same content!

কন্টেন্ট অ্যাড্রেসিং কীভাবে কাজ করে

IPFS এ কন্টেন্ট অ্যাড্রেসিং একটি ডিটারমিনিস্টিক প্রক্রিয়া অনুসরণ করে যা নিশ্চিত করে যে একই কন্টেন্ট সর্বদা একই CID তৈরি করে:

1. কন্টেন্ট প্রস্তুতি

আপনি যখন IPFS এ কন্টেন্ট যোগ করেন, এটি প্রথমে ভেঙে ফেলা হয়:

  • ছোট ফাইল: একক ব্লক হিসাবে সংরক্ষিত
  • বড় ফাইল: টুকরো টুকরো করে Merkle DAG (নির্দেশিত অ্যাসাইক্লিক গ্রাফ) এ সংগঠিত
  • ডিরেক্টরি: DAG কাঠামো হিসাবে প্রতিনিধিত্ব করা হয় যা ফাইলগুলির সাথে সংযুক্ত থাকে

2. হ্যাশিং প্রক্রিয়া

প্রতিটি কন্টেন্টের টুকরো এর মধ্য দিয়ে যায়:

  1. সিরিয়ালাইজেশন: কন্টেন্ট তার codec অনুযায়ী ফরম্যাট করা হয়
  2. হ্যাশিং: ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন সিরিয়ালাইজড ডেটা প্রক্রিয়া করে
  3. Multihash তৈরি: হ্যাশটি অ্যালগরিদম এবং দৈর্ঘ্য তথ্য দিয়ে মোড়ানো হয়
  4. CID সমাবেশ: সংস্করণ, codec এবং multihash একত্রিত হয়

3. Merkle DAG কাঠামো

IPFS কন্টেন্টকে একটি Merkle DAG তে সংগঠিত করে যেখানে:

  • প্রতিটি নোডের একটি CID আছে
  • প্যারেন্ট নোড CID এর মাধ্যমে চাইল্ড নোডগুলিকে রেফারেন্স করে
  • যেকোনো নোডের পরিবর্তনগুলি গাছের উপরে প্রচারিত হয়
  • সম্পূর্ণ কাঠামো ক্রিপ্টোগ্রাফিকভাবে যাচাই করা যেতে পারে
Root CID: bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi
├── file1.txt (QmHash1...)
├── file2.jpg (QmHash2...)
└── subdirectory/
    ├── file3.pdf (QmHash3...)
    └── file4.mp4 (QmHash4...)

ব্যবহারিক উদাহরণ: CIDs এর সাথে কাজ করা

IPFS Ninja API ব্যবহার করে অনুশীলনে CIDs এর সাথে কীভাবে কাজ করতে হয় তা অন্বেষণ করি:

কন্টেন্ট আপলোড এবং একটি CID পাওয়া

// Upload a file and get its CID
const uploadFile = async (content, filename) => {
  const response = await fetch('https://api.ipfs.ninja/upload/new', {
    method: 'POST',
    headers: {
      'X-Api-Key': 'bws_1234567890abcdef1234567890abcdef12345678',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      content: btoa(content), // Base64 encode binary content
      description: `Upload of ${filename}`
    })
  });
  
  const result = await response.json();
  console.log('CID:', result.cid);
  console.log('IPFS URL:', result.uris.ipfs);
  console.log('HTTP URL:', result.uris.url);
  
  return result.cid;
};

// Example usage
uploadFile('Hello, IPFS!', 'greeting.txt');
// Returns: bafkreifjxz6zwqh27k5xnr5qfbx4w6n5vuwwwdcngguwjewzj2e3xxfgvi

CID দ্বারা বিদ্যমান কন্টেন্ট পিন করা

আপনার যদি ইতিমধ্যে একটি CID থাকে, আপনি উপলব্ধতা নিশ্চিত করতে এটি পিন করতে পারেন:

const pinByCID = async (cid) => {
  const response = await fetch('https://api.ipfs.ninja/pin', {
    method: 'POST',
    headers: {
      'X-Api-Key': 'bws_1234567890abcdef1234567890abcdef12345678',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      cid: cid,
      description: 'Pinned via API'
    })
  });
  
  const result = await response.json();
  console.log('Pinned CID:', result.cid);
  
  return result;
};

// Pin the "Hello World" of IPFS
pinByCID('QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u');

CID এর মাধ্যমে কন্টেন্ট অ্যাক্সেস

একবার আপনার একটি CID হয়ে গেলে, আপনি বিভিন্ন পদ্ধতির মাধ্যমে কন্টেন্ট অ্যাক্সেস করতে পারেন:

// Direct IPFS gateway access
const ipfsUrl = `https://ipfs.ninja/ipfs/${cid}`;

// Custom gateway (if configured)
const customGatewayUrl = `https://my-app.gw.ipfs.ninja/ipfs/${cid}`;

// Fetch content programmatically
const fetchContent = async (cid) => {
  const response = await fetch(`https://ipfs.ninja/ipfs/${cid}`);
  const content = await response.text();
  return content;
};

ডেভেলপারদের জন্য CID সেরা অভ্যাস

1. সর্বদা CIDs যাচাই করুন

আপনার অ্যাপ্লিকেশনে একটি CID ব্যবহার করার আগে, এর ফরম্যাট যাচাই করুন:

const isValidCID = (cid) => {
  // Basic validation patterns
  const cidv0Pattern = /^Qm[1-9A-HJ-NP-Za-km-z]{44}$/;
  const cidv1Pattern = /^[bf][a-z2-7]{58}$/;
  
  return cidv0Pattern.test(cid) || cidv1Pattern.test(cid);
};

2. উভয় CID সংস্করণ পরিচালনা করুন

আপনার অ্যাপ্লিকেশন CIDv0 এবং CIDv1 উভয়ের সাথে কাজ করা উচিত:

const normalizeCID = (cid) => {
  if (cid.startsWith('Qm')) {
    // CIDv0 - can convert to CIDv1 if needed
    return cid;
  } else if (cid.startsWith('b') || cid.startsWith('f') || cid.startsWith('z')) {
    // CIDv1
    return cid;
  } else {
    throw new Error('Invalid CID format');
  }
};

3. CID ম্যাপিং ক্যাশ করুন

আপনি যদি ঘন ঘন CIDs তৈরি করেন, ক্যাশিং বিবেচনা করুন:

const cidCache = new Map();

const getCachedCID = (content) => {
  const contentHash = btoa(content);
  
  if (cidCache.has(contentHash)) {
    return cidCache.get(contentHash);
  }
  
  // Upload and cache result
  return uploadFile(content).then(cid => {
    cidCache.set(contentHash, cid);
    return cid;
  });
};

4. অর্থপূর্ণ বিবরণ ব্যবহার করুন

কন্টেন্ট আপলোড করার সময়, বর্ণনামূলক মেটাডেটা অন্তর্ভুক্ত করুন:

const uploadWithMetadata = async (content, metadata) => {
  return fetch('https://api.ipfs.ninja/upload/new', {
    method: 'POST',
    headers: {
      'X-Api-Key': 'bws_1234567890abcdef1234567890abcdef12345678',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      content: btoa(content),
      description: metadata.name || 'Uploaded file',
      metadata: {
        filename: metadata.filename,
        contentType: metadata.contentType,
        uploadedAt: new Date().toISOString(),
        version: metadata.version || '1.0'
      }
    })
  });
};

সাধারণ CID ব্যবহারের ক্ষেত্রে

1. স্ট্যাটিক ওয়েবসাইট স্থাপনা

সম্পূর্ণ ওয়েবসাইটগুলি IPFS এ স্থাপন করুন এবং CID দ্বারা সেগুলি উল্লেখ করুন:

// Upload website directory structure
const deployWebsite = async (files) => {
  const uploads = await Promise.all(
    files.map(file => uploadFile(file.content, file.path))
  );
  
  // Root CID references entire site
  const rootCID = uploads.find(u => u.path === 'index.html').cid;
  console.log(`Website deployed: https://ipfs.ninja/ipfs/${rootCID}`);
  
  return rootCID;
};

ওয়েবসাইট স্থাপনা সম্পর্কে আরও জানতে, কীভাবে IPFS এ ফাইল আপলোড করবেন সম্পর্কে আমাদের গাইডটি দেখুন।

2. NFT মেটাডেটা স্টোরেজ

CIDs ব্যবহার করে অপরিবর্তনীয়ভাবে NFT মেটাডেটা সংরক্ষণ করুন:

const nftMetadata = {
  name: "My Awesome NFT",
  description: "A unique digital collectible",
  image: "ipfs://bafkreibc5sgo2plmjkq2tzmhrn54bk3crhnqekiy7u66fqvqm37pu2e5gw",
  attributes: [
    { trait_type: "Color", value: "Blue" },
    { trait_type: "Rarity", value: "Epic" }
  ]
};

const metadataCID = await uploadFile(
  JSON.stringify(nftMetadata, null, 2), 
  'metadata.json'
);

// Use in smart contract
console.log(`Token URI: ipfs://${metadataCID}`);

3. কন্টেন্ট বিতরণ

বিতরণকৃত কন্টেন্ট ডেলিভারির জন্য CIDs ব্যবহার করুন:

// Upload once, access everywhere
const distributeContent = async (content) => {
  const cid = await uploadFile(content, 'content.txt');
  
  // Content available via multiple gateways
  const gateways = [
    `https://ipfs.ninja/ipfs/${cid}`,
    `https://ipfs.io/ipfs/${cid}`,
    `https://cloudflare-ipfs.com/ipfs/${cid}`
  ];
  
  return { cid, gateways };
};

CIDs সহ IPFS পিনিং বোঝা

CIDs ডিফল্ট অস্থায়ী — সেগুলিকে উপলব্ধ থাকতে “পিন” করতে হয়। IPFS পিনিং কী সম্পর্কে আমাদের ব্যাপক গাইডে এই গুরুত্বপূর্ণ ধারণা সম্পর্কে আরও জানুন।

একটি IPFS পিনিং পরিষেবা নির্বাচন করার সময়, আমাদের তুলনা IPFS Ninja vs Pinata পড়ার বিবেচনা করুন বা আজ উপলব্ধ সেরা IPFS পিনিং পরিষেবা এর আমাদের রাউন্ডআপ অন্বেষণ করুন।

30 সেকেন্ডে আপনার প্রথম CID তৈরি করুন

আপনার প্রথম CID তৈরি করতে প্রস্তুত? এখানে IPFS Ninja API ব্যবহার করে একটি দ্রুত উদাহরণ:

# Using curl (replace with your actual API key)
curl -X POST https://api.ipfs.ninja/upload/new \
  -H "X-Api-Key: bws_YOUR_API_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "SGVsbG8sIElQRlMgV29ybGQh",
    "description": "My first IPFS upload"
  }'
// Using JavaScript
const createFirstCID = async () => {
  const response = await fetch('https://api.ipfs.ninja/upload/new', {
    method: 'POST',
    headers: {
      'X-Api-Key': 'bws_YOUR_API_KEY_HERE',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      content: btoa('Hello, IPFS World!'), // Base64: "SGVsbG8sIElQRlMgV29ybGQh"
      description: 'My first IPFS upload'
    })
  });
  
  const result = await response.json();
  console.log('🎉 Your first CID:', result.cid);
  console.log('🌐 Access it at:', result.uris.url);
  
  return result;
};

createFirstCID();

এটি এরকম কিছু ফেরত দেবে:

{
  "cid": "bafkreif2pall7dybz7vecqka3zo24irdwabf7rbiiweuhau7a2hjlqvfjw",
  "sizeMB": 0.000017,
  "uris": {
    "ipfs": "ipfs://bafkreif2pall7dybz7vecqka3zo24irdwabf7rbiiweuhau7a2hjlqvfjw",
    "url": "https://ipfs.ninja/ipfs/bafkreif2pall7dybz7vecqka3zo24irdwabf7rbiiweuhau7a2hjlqvfjw"
  }
}

আরও বিস্তারিত API উদাহরণের জন্য, আমাদের IPFS আপলোড API টিউটোরিয়াল দেখুন।

উপসংহার

CIDs হলো IPFS এর কন্টেন্ট অ্যাড্রেসিং সিস্টেমের ভিত্তি, যা অপরিবর্তনীয়, যাচাইযোগ্য এবং বিকেন্দ্রীভূত কন্টেন্ট সনাক্তকরণ প্রদান করে। তারা কীভাবে কাজ করে তা বোঝা — CIDv0 vs CIDv1 এর প্রযুক্তিগত বিবরণ থেকে শুরু করে ব্যবহারিক বাস্তবায়ন প্যাটার্ন পর্যন্ত — শক্তিশালী বিকেন্দ্রীভূত অ্যাপ্লিকেশন তৈরি করার জন্য অপরিহার্য।

মূল বিষয়:

  • CIDs অনন্যভাবে কন্টেন্ট সনাক্ত করে, অবস্থান নয়
  • CIDv0 সর্বোচ্চ সামঞ্জস্য প্রদান করে, CIDv1 নমনীয়তা প্রদান করে
  • কন্টেন্ট অ্যাড্রেসিং যাচাইকরণ এবং ডিডুপ্লিকেশন সক্ষম করে
  • সঠিক CID হ্যান্ডলিং উৎপাদন অ্যাপ্লিকেশনের জন্য গুরুত্বপূর্ণ

আপনি NFT মেটাডেটা সংরক্ষণ করছেন, বিকেন্দ্রীভূত ওয়েবসাইট স্থাপন করছেন বা কন্টেন্ট বিতরণ সিস্টেম তৈরি করছেন কিনা, CIDs আপনাকে সত্যিকারের বিকেন্দ্রীভূত অ্যাপ্লিকেশনের জন্য প্রয়োজনীয় নির্ভরযোগ্য ভিত্তি সরবরাহ করে।

পিনিং শুরু করতে প্রস্তুত? একটি বিনামূল্যে অ্যাকাউন্ট তৈরি করুন — 50টি ফাইল, 1 GB স্টোরেজ, 2 GB ব্যান্ডউইথ/মাস। কোন ক্রেডিট কার্ড নেই।

ব্লগে ফিরুন

সম্পর্কিত নিবন্ধ

সব নিবন্ধ দেখুন »
IPFS পিনিং কী? ২০২৬ সালে আপনার যা জানা দরকার

IPFS পিনিং কী? ২০২৬ সালে আপনার যা জানা দরকার

জানুন IPFS পিনিং কী, কেন পিনিং ছাড়া ফাইল হারিয়ে যায়, রিমোট পিনিং পরিষেবা কিভাবে কাজ করে, এবং কিভাবে আপনার প্রথম ফাইল পিন করবেন। উদাহরণসহ সম্পূর্ণ গাইড।