Skip to content

পিনিং

আপনার অ্যাকাউন্টে বিদ্যমান IPFS কন্টেন্ট পিন করুন। আপনি একটি CID পিন করলে, আমাদের ক্লাস্টার IPFS নেটওয়ার্ক থেকে কন্টেন্ট আনে এবং স্থায়ীভাবে উপলব্ধ রাখে।

CID দ্বারা পিন

POST /pin

প্যারামিটারধরনপ্রয়োজনীয়বর্ণনা
cidstringহ্যাঁIPFS কন্টেন্ট আইডেন্টিফায়ার। যেকোনো ফর্ম গ্রহণযোগ্য: CIDv0 (Qm…), CIDv1 base32 (bafk…, bafy…, এবং অন্যান্য codec)।
descriptionstringনারেফারেন্সের জন্য সংক্ষিপ্ত বর্ণনা।
metadataobjectনাপিনের সাথে সংযুক্ত করার জন্য কাস্টম কী-মানের জোড়া। সর্বাধিক ১০টি কী। কী অবশ্যই আলফানিউমেরিক বা আন্ডারস্কোর হতে হবে, ১-৬৪ অক্ষর। মান অবশ্যই স্ট্রিং হতে হবে, প্রতিটি সর্বাধিক ২৫৬ অক্ষর। মোট metadata আকার ৪ KB অতিক্রম করতে পারবে না।
multiaddressesstring[]নাঐচ্ছিক swarm-connect হিন্ট। CID হোস্ট করা peer-দের সর্বাধিক ৫টি libp2p multiaddress। আমাদের ক্লাস্টার পিনের আগে প্রতিটির বিরুদ্ধে সমান্তরালে swarm connect চালায়, তাই প্রাইভেট / নন-DHT peer-এর কন্টেন্ট DHT আবিষ্কারের জন্য অপেক্ষা না করেই পৌঁছানো যায়। Best-effort — একটি ব্যর্থ connect পিনকে ব্যর্থ করে না। দেখুন একটি প্রাইভেট নোড থেকে পিনিং

উদাহরণ অনুরোধ

bash
curl -X POST https://api.ipfs.ninja/pin \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
    "description": "NFT metadata",
    "metadata": {
      "collection": "my-nfts",
      "token_id": "42"
    }
  }'

প্রতিক্রিয়া 202 Accepted

json
{
  "cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
  "status": "pinning",
  "description": "NFT metadata",
  "uris": {
    "ipfs": "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
    "url": "https://ipfs.ninja/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"
  }
}

বড় DAG-এর জন্য (>৫০০ ব্লক অথবা >৫০ MB), প্রতিক্রিয়াতে একটি async: true ফ্ল্যাগ অন্তর্ভুক্ত থাকে:

json
{
  "cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
  "status": "pinning",
  "async": true,
  "note": "Large DAG detected — pin running in background. Check status via GET /pin/bafybei…",
  "uris": { ... }
}

একটি প্রাইভেট নোড থেকে পিনিং

আপনি যে CID পিন করতে চান তা যদি এমন একটি peer-এ থাকে যা পাবলিক DHT-তে অংশগ্রহণ করছে না — একটি প্রাইভেট স্টেজিং নোড, VPN-এ একটি সেলফ-হোস্টেড মেশিন, বা NAT-এর পেছনে একটি ওয়ার্কস্টেশন — তাহলে ডিফল্ট পিন ফ্লো এটি খুঁজে পাবে না। এক বা একাধিক multiaddresses পাঠালে আমাদের ক্লাস্টার ঠিক কোথায় খুঁজতে হবে তা জানতে পারে।

আমরা পিন চালানোর আগে সমান্তরালে প্রতিটি হিন্টের জন্য ipfs swarm connect <multiaddr> চালাই। connect সফল হলে, পিনের DAG fetch DHT-তে খোঁজার পরিবর্তে সরাসরি আপনার peer-এর সাথে কথা বলতে পারে। ব্যর্থ হলে, পিন তবুও পাবলিক নেটওয়ার্কের বিরুদ্ধে এগিয়ে যায় (best-effort সিমান্টিক্স)।

উদাহরণ: একটি নির্দিষ্ট peer থেকে পিন

bash
curl -X POST https://api.ipfs.ninja/pin \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
    "description": "internal staging build",
    "multiaddresses": [
      "/ip4/203.0.113.42/tcp/4001/p2p/12D3KooWH3uVF6wv47WnArKHk5p6cvgCJEb74UTmxztmQDc298L3",
      "/dns4/node.internal.example/tcp/443/wss/p2p/12D3KooWH3uVF6wv47WnArKHk5p6cvgCJEb74UTmxztmQDc298L3"
    ]
  }'

প্রতিক্রিয়াতে প্রতি-হিন্ট স্ট্যাটাস অন্তর্ভুক্ত থাকে

json
{
  "cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
  "status": "pinning",
  "swarmConnected": [
    { "multiaddr": "/ip4/203.0.113.42/tcp/4001/p2p/12D3KooW…", "ok": true,  "strings": ["connect 12D3KooW… success"] },
    { "multiaddr": "/dns4/node.internal.example/tcp/443/…",   "ok": false, "error": "dial to peer: no route" }
  ],
  "uris": {  }
}

গৃহীত multiaddress আকার

সাধারণ আকার সমর্থিত: /ip4, /ip6, /dns4, /dns6, /dns, /dnsaddr ট্রান্সপোর্ট; /tcp বা /udp প্রোটোকল; ঐচ্ছিক /quic-v1, /quic, /ws, /wss, /http, /https, /webtransport, /webrtc-direct আপগ্রেড। multiaddress অবশ্যই /p2p/<peerId> দিয়ে শেষ হতে হবে। সীমা: প্রতি পিনে সর্বাধিক ৫টি হিন্ট।

আপনার নোডের multiaddress পাওয়া

আপনি যে peer থেকে পিন করতে চান, সেখানে ipfs id চালান এবং /p2p/<PeerID>-এ শেষ হওয়া যেকোনো Addresses এন্ট্রি কপি করুন। পাবলিক রুটেবল ঠিকানা (/ip4/YOUR_PUBLIC_IP/…) বা DNS-ভিত্তিক ঠিকানা (/dnsaddr/your.domain/…) পছন্দ করুন যাতে আমাদের ক্লাস্টার AWS থেকে peer-এ পৌঁছাতে পারে।

খুব বড় ডিরেক্টরি পিন করা

POST /pin এমন কন্টেন্টের জন্য যা ইতিমধ্যে IPFS নেটওয়ার্কে বিদ্যমান — ক্লাস্টার peer-দের কাছ থেকে ব্লক-বাই-ব্লক DAG আনে, যা ১,০০০+ ফাইল থাকা ডিরেক্টরির জন্য কয়েক মিনিট সময় নিতে পারে। এই fetch উইন্ডোর সময়, কিছু চাইল্ড ফাইল এখনও লোকালি উপলব্ধ নাও থাকতে পারে এবং সেগুলির জন্য গেটওয়ে অনুরোধ টাইমআউট হতে পারে। প্যারেন্টের status একবার pinned-এ পরিবর্তিত হলে, প্রতিটি চাইল্ড লোকালি উপলব্ধ থাকে এবং আপনার গেটওয়ের মাধ্যমে অ্যাক্সেসযোগ্য থাকে।

যদি আপনার কাছে ফাইলগুলি লোকালি থাকে (শুধু একটি CID-এর পরিবর্তে), বড় NFT কালেকশন বা ডেটাসেটের জন্য CAR import পছন্দ করুন — এটি সম্পূর্ণ DAG-কে একটি অ্যাটমিক অনুরোধে IPFS Ninja-তে আপলোড করে, তাই কোনো fetch উইন্ডো বা আংশিক-পিন অবস্থা থাকে না। এভাবে একটি CAR তৈরি করুন:

bash
npx ipfs-car pack ./my-collection -o collection.car

তারপর car: true সহ POST /upload/new-এর মাধ্যমে এটি import করুন।

TIP

পিনিং অ্যাসিঙ্ক্রোনাস। রেসপন্স অবিলম্বে pinning স্ট্যাটাস সহ ফিরে আসে। সম্পন্ন হয়েছে কিনা পরীক্ষা করতে স্ট্যাটাস endpoint পোল করুন।

পিন স্ট্যাটাস পরীক্ষা করুন

GET /pin/:cid

প্যারামিটারধরনপ্রয়োজনীয়বর্ণনা
cidstringহ্যাঁআপনি যে CID পরীক্ষা করছেন।

প্রতিক্রিয়া 200 OK

json
{
  "cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
  "status": "pinned",
  "sizeMB": 0.042,
  "fileName": "NFT metadata",
  "pinnedAt": 1711036800000,
  "uris": {
    "ipfs": "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
    "url": "https://ipfs.ninja/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"
  }
}

স্ট্যাটাস মান

স্ট্যাটাসঅর্থ
pinningকন্টেন্ট IPFS নেটওয়ার্ক থেকে আনা হচ্ছে। কয়েক সেকেন্ড পর আবার পোল করুন।
pinnedকন্টেন্ট পিন হয়ে গেছে এবং আপনার অ্যাকাউন্ট ও গেটওয়ের মাধ্যমে উপলব্ধ।
failedকন্টেন্ট IPFS নেটওয়ার্কে পাওয়া যায়নি। CID অবৈধ হতে পারে বা কন্টেন্ট আর উপলব্ধ নেই।

পিনিং কীভাবে কাজ করে

১. আপনি POST /pin-এর মাধ্যমে একটি CID জমা দেন ২. আমাদের IPFS ক্লাস্টার এমন নোড খুঁজে বের করে যাদের কাছে কন্টেন্ট আছে ৩. ক্লাস্টার কন্টেন্ট ডাউনলোড করে এবং লোকালি পিন করে ৪. একবার পিন হয়ে গেলে, ফাইলটি আপনার ফাইল তালিকায় দেখা যায় এবং গেটওয়ের মাধ্যমে অ্যাক্সেসযোগ্য হয় ৫. পিনিং সম্পন্ন হলে স্টোরেজ ব্যবহার রেকর্ড করা হয়

WARNING

পিনিং সময় ফাইলের আকার এবং নেটওয়ার্ক উপলব্ধতার উপর নির্ভর করে। ছোট ফাইল সাধারণত সেকেন্ডের মধ্যে পিন হয়। বড় ফাইল বা কদাচিৎ-পিন করা কন্টেন্টে কয়েক মিনিট লাগতে পারে।

স্টোরেজ

পিন করা কন্টেন্ট আপনার প্ল্যানের স্টোরেজ সীমার মধ্যে গণনা করা হয়। পিনিং সম্পন্ন হলে ফাইলের আকার রেকর্ড করা হয়। আপনি যদি আপনার স্টোরেজ সীমার কাছাকাছি চলে যান, তাহলে অব্যবহৃত ফাইল মুছে জায়গা খালি করতে পারেন অথবা আরও ক্ষমতার জন্য আপগ্রেড করতে পারেন।