1. Go to this page and download the library: Download condorcet-vote/elephstamp library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
condorcet-vote / elephstamp example snippets
use CondorcetVote\ElephStamp\ElephStamp;
use CondorcetVote\ElephStamp\FileToStamp;
$client = new ElephStamp();
$receipt = $client->stamp(FileToStamp::fromPath('contract.pdf'));
// Persist the proof next to your file.
$receipt->saveToPath('contract.pdf.ots');
echo $receipt->status()->name; // "Pending"
echo $receipt->fileDigestHex(); // sha256 of contract.pdf
use CondorcetVote\ElephStamp\ElephStamp;
use CondorcetVote\ElephStamp\Receipt;
$client = new ElephStamp();
$receipt = Receipt::fromPath('contract.pdf.ots');
if ($client->upgrade($receipt)) {
// Something changed: persist the richer proof.
$receipt->saveToPath('contract.pdf.ots');
}
if ($receipt->isComplete()) {
echo 'Anchored in Bitcoin block ' . $receipt->bitcoinBlockHeight();
}
use CondorcetVote\ElephStamp\FileToStamp;
FileToStamp::fromPath('invoice.pdf'); // a file on disk
FileToStamp::fromSplFileObject(new SplFileObject('a.bin')); // an open handle
FileToStamp::fromContent('some in-memory string'); // raw bytes
FileToStamp::fromDigest($sha256); // a digest you already computed
$receipt->status(); // Status::Pending | Status::Complete
$receipt->isComplete();
$receipt->isPending();
$receipt->fileDigest(); // raw digest bytes
$receipt->fileDigestHex(); // lower-case hex
$receipt->pendingCalendarUris(); // list<string> of calendars still to poll
$receipt->bitcoinBlockHeight(); // int|null (claimed, not verified)
$receipt->toBytes(); // the raw .ots content
$receipt->describe(); // human-readable proof tree (for inspection)
use CondorcetVote\ElephStamp\ElephStamp;
use CondorcetVote\ElephStamp\FileToStamp;
$client = ElephStamp::fake();
$receipt = $client->stamp(FileToStamp::fromContent('hello world'));
$receipt->isPending(); // true
// Simulate Bitcoin confirming the commitment.
$client->fakeCalendar()->confirmAll(blockHeight: 812_345);
$client->upgrade($receipt);
$receipt->isComplete(); // true
$receipt->bitcoinBlockHeight(); // 812345
use CondorcetVote\ElephStamp\Calendar\FakeCalendarClient;
$calendar = new FakeCalendarClient();
$client = ElephStamp::fake($calendar);
$receipt = $client->stamp(FileToStamp::fromContent('data'));
$calendar->confirm($receipt); // confirm just this receipt
// or
$calendar->confirmAll(); // confirm every commitment submitted so far
use CondorcetVote\ElephStamp\ElephStamp;
$client = new ElephStamp(
calendarUrls: ['https://a.pool.opentimestamps.org', 'https://b.pool.opentimestamps.org'],
$client = new ElephStamp(
calendarUrls: ['https://ots.internal.example'],
upgradeWhitelist: ['https://*.internal.example'],
);
use CondorcetVote\ElephStamp\Calendar\HttpCalendarClient;
use CondorcetVote\ElephStamp\ElephStamp;
use Symfony\Component\HttpClient\HttpClient;
$calendarClient = new HttpCalendarClient(
HttpClient::create(['proxy' => 'http://proxy.internal:3128']),
timeout: 5.0, // idle timeout, seconds
maxDuration: 15.0, // hard cap per request, seconds
);
$client = new ElephStamp(calendarClient: $calendarClient);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.